cobalttt

cobalttt

тут.
Пикабушник
58 рейтинг 0 подписчиков 13 подписок 8 постов 0 в горячем
Награды:
5 лет на Пикабу

Питон морской бой



import tkinter as tk

from tkinter import messagebox

import random

class BattleshipGame:

def __init__(self, master):

self.master = master

self.master.title("Морской Бой")

# Настройки игры

self.ship_sizes = [4, 3, 3, 2, 2, 2, 1, 1, 1, 1]

self.board_size = 10

self.cell_size = 40

# Инициализация игровых досок

self.player_board = self.create_board()

self.computer_board = self.create_board()

# Расстановка кораблей

self.place_ships(self.player_board)

self.place_ships(self.computer_board)

# Счетчики попаданий

self.player_hits = 0

self.computer_hits = 0

self.total_hits = sum(self.ship_sizes)

# Создание интерфейса

self.create_widgets()

# Флаг для отслеживания хода

self.game_over = False

def create_board(self):

return [[None for _ in range(self.board_size)] for _ in range(self.board_size)]

def place_ships(self, board):

for size in self.ship_sizes:

placed = False

while not placed:

direction = random.choice(['horizontal', 'vertical'])

if direction == 'horizontal':

max_col = self.board_size - size

max_row = self.board_size

else:

max_row = self.board_size - size

max_col = self.board_size

row = random.randint(0, max_row - 1)

col = random.randint(0, max_col - 1)

if self.can_place_ship(board, row, col, size, direction):

self.mark_ship(board, row, col, size, direction)

placed = True

def can_place_ship(self, board, row, col, size, direction):

if direction == 'horizontal':

for c in range(col - 1, col + size + 1):

for r in range(row - 1, row + 2):

if 0 <= r < self.board_size and 0 <= c < self.board_size:

if board[r][c] == 'ship':

return False

else:

for r in range(row - 1, row + size + 1):

for c in range(col - 1, col + 2):

if 0 <= r < self.board_size and 0 <= c < self.board_size:

if board[r][c] == 'ship':

return False

return True

def mark_ship(self, board, row, col, size, direction):

if direction == 'horizontal':

for c in range(col, col + size):

board[row][c] = 'ship'

else:

for r in range(row, row + size):

board[r][col] = 'ship'

def create_widgets(self):

# Фреймы для досок

self.player_frame = tk.Frame(self.master)

self.computer_frame = tk.Frame(self.master)

self.player_frame.pack(side=tk.LEFT, padx=20, pady=20)

self.computer_frame.pack(side=tk.RIGHT, padx=20, pady=20)

# Метки для досок

tk.Label(self.player_frame, text="Ваше поле").grid(row=0, column=0, columnspan=11)

tk.Label(self.computer_frame, text="Поле компьютера").grid(row=0, column=0, columnspan=11)

# Создание игровых полей

self.player_cells = self.create_grid(self.player_frame, self.player_board, False)

self.computer_cells = self.create_grid(self.computer_frame, self.computer_board, True)

def create_grid(self, parent, board, clickable):

cells = []

# Добавляем буквы над сеткой

for col in range(self.board_size):

lbl = tk.Label(parent, text=chr(65 + col))

lbl.grid(row=1, column=col+1)

# Добавляем цифры слева

for row in range(self.board_size):

lbl = tk.Label(parent, text=str(row))

lbl.grid(row=row+2, column=0)

# Создаем клетки поля

for row in range(self.board_size):

row_cells = []

for col in range(self.board_size):

frame = tk.Frame(parent,

width=self.cell_size,

height=self.cell_size,

bg='white',

relief='ridge',

borderwidth=1)

frame.grid(row=row+2, column=col+1)

if board[row][col] == 'ship' and parent == self.player_frame:

frame.config(bg='gray')

if clickable:

frame.bind('<Button-1>', lambda e, r=row, c=col: self.player_turn(r, c))

row_cells.append(frame)

cells.append(row_cells)

return cells

def update_cell(self, cells, row, col, status):

color = 'white'

if status == 'hit':

color = 'red'

elif status == 'miss':

color = 'lightblue'

cells[row][col].config(bg=color)

def player_turn(self, row, col):

if self.game_over or self.computer_board[row][col] in ['hit', 'miss']:

return

if self.computer_board[row][col] == 'ship':

self.computer_board[row][col] = 'hit'

self.player_hits += 1

self.update_cell(self.computer_cells, row, col, 'hit')

if self.player_hits == self.total_hits:

self.end_game("Поздравляем! Вы выиграли!")

return

else:

self.computer_board[row][col] = 'miss'

self.update_cell(self.computer_cells, row, col, 'miss')

self.computer_turn()

def computer_turn(self):

while True:

row = random.randint(0, self.board_size - 1)

col = random.randint(0, self.board_size - 1)

if self.player_board[row][col] not in ['hit', 'miss']:

break

if self.player_board[row][col] == 'ship':

self.player_board[row][col] = 'hit'

self.computer_hits += 1

self.update_cell(self.player_cells, row, col, 'hit')

if self.computer_hits == self.total_hits:

self.end_game("Компьютер выиграл!")

else:

self.player_board[row][col] = 'miss'

self.update_cell(self.player_cells, row, col, 'miss')

def end_game(self, message):

self.game_over = True

messagebox.showinfo("Игра окончена", message)

self.master.destroy()

if __name__ == "__main__":

root = tk.Tk()

game = BattleshipGame(root)

root.mainloop()

Показать полностью

Питон тетрис



import pygame

import random

# Инициализация pygame

pygame.init()

# Цвета

black = (0, 0, 0)

white = (255, 255, 255)

colors = [

(0, 255, 255), # Cyan

(255, 255, 0), # Yellow

(255, 165, 0), # Orange

(0, 0, 255), # Blue

(0, 255, 0), # Green

(128, 0, 128), # Purple

(255, 0, 0) # Red

]

# Размеры окна

width = 1000 # Увеличили ширину окна для отображения счета

height = 900

# Размер блока

block_size = 50

# Создание окна

game_window = pygame.display.set_mode((width, height))

pygame.display.set_caption('Тетрис')

# Шрифт для отображения счета

font = pygame.font.SysFont(None, 40)

# Часы для управления FPS

clock = pygame.time.Clock()

# Игровое поле

grid = [[black for _ in range((width - 100) // block_size)] for _ in range(height // block_size)] # Уменьшили ширину сетки для счета

# Фигуры и их вращения

shapes = [

[[1, 1, 1, 1]], # I

[[1, 1, 1], [0, 1, 0]], # T

[[1, 1], [1, 1]], # O

[[1, 1, 0], [0, 1, 1]], # Z

[[0, 1, 1], [1, 1, 0]], # S

[[1, 1, 1], [1, 0, 0]], # L

[[1, 1, 1], [0, 0, 1]] # J

]

# Класс для фигур

class Piece:

def __init__(self, shape):

self.shape = shape

self.color = random.choice(colors)

self.x = (width - 100) // block_size // 2 - len(shape[0]) // 2 # Учитываем новую ширину сетки

self.y = 0

# Функция для создания новой фигуры

def new_piece():

return Piece(random.choice(shapes))

# Функция для отрисовки сетки

def draw_grid():

for y in range(len(grid)):

for x in range(len(grid[y])):

pygame.draw.rect(game_window, grid[y][x], (x * block_size, y * block_size, block_size, block_size), 0)

for y in range(len(grid)):

pygame.draw.line(game_window, white, (0, y * block_size), ((width - 100), y * block_size)) # Учитываем новую ширину сетки

for x in range(len(grid[0])):

pygame.draw.line(game_window, white, (x * block_size, 0), (x * block_size, height))

# Функция для отрисовки фигуры

def draw_piece(piece):

for y, row in enumerate(piece.shape):

for x, cell in enumerate(row):

if cell:

pygame.draw.rect(game_window, piece.color, ((piece.x + x) * block_size, (piece.y + y) * block_size, block_size, block_size), 0)

# Функция для проверки столкновений

def check_collision(piece):

for y, row in enumerate(piece.shape):

for x, cell in enumerate(row):

if cell:

if piece.y + y >= len(grid) or piece.x + x < 0 or piece.x + x >= len(grid[0]) or grid[piece.y + y][piece.x + x] != black:

return True

return False

# Функция для фиксации фигуры на поле

def fix_piece(piece):

for y, row in enumerate(piece.shape):

for x, cell in enumerate(row):

if cell:

grid[piece.y + y][piece.x + x] = piece.color

# Функция для удаления заполненных строк

def clear_lines():

lines_cleared = 0

for y in range(len(grid) - 1, -1, -1):

if black not in grid[y]:

lines_cleared += 1

del grid[y]

grid.insert(0, [black for _ in range(len(grid[0]))])

return lines_cleared

# Основной игровой цикл

def game_loop():

global grid

piece = new_piece()

fall_time = 0

fall_speed = 0.5

score = 0

running = True

while running:

fall_time += clock.get_rawtime()

clock.tick()

if fall_time / 1000 >= fall_speed:

fall_time = 0

piece.y += 1

if check_collision(piece):

piece.y -= 1

fix_piece(piece)

lines_cleared = clear_lines()

score += lines_cleared * 100

piece = new_piece()

if check_collision(piece):

running = False

for event in pygame.event.get():

if event.type == pygame.QUIT:

running = False

if event.type == pygame.KEYDOWN:

if event.key == pygame.K_LEFT:

piece.x -= 1

if check_collision(piece):

piece.x += 1

if event.key == pygame.K_RIGHT:

piece.x += 1

if check_collision(piece):

piece.x -= 1

if event.key == pygame.K_DOWN:

piece.y += 1

if check_collision(piece):

piece.y -= 1

if event.key == pygame.K_UP:

rotated_piece = list(zip(*reversed(piece.shape)))

if not check_collision(Piece(rotated_piece)):

piece.shape = rotated_piece

game_window.fill(black)

draw_grid()

draw_piece(piece)

# Отрисовка счета

score_text = font.render(f'Score: {score}', True, white)

game_window.blit(score_text, (width - 150, 50)) # Позиция счета справа от сетки

pygame.display.update()

pygame.quit()

quit()

# Запуск игры

game_loop()

Показать полностью
0

Аквапоника и аквариум: два мира, которые могут сосуществовать

Привет, Пикабу! Сегодня хочу поговорить о захватывающем пересечении двух увлечений — аквапоники и аквариумного хозяйства. Если вы любите растения и рыбу, то это может быть идеальным решением для вашего дома!

Что такое аквапоника?

Аквапоника — это метод устойчивого земледелия, который сочетает в себе аквакультуру (выращивание рыбы) и гидропонику (выращивание растений без почвы). В этой системе рыбы и растения находятся в симбиотических отношениях:

  1. Рыба производит отходы, которые являются отличным удобрением для растений.

  2. Растения очищают воду, поглощая эти отходы, и возвращают её обратно в аквариум к рыбам.

Таким образом, вы получаете замкнутый цикл, где каждая часть системы поддерживает другую. Это не только экологически чистый способ производства пищи, но и способ создать красивую и живую экосистему.

Преимущества аквапоники

  • Экономия воды: Аквапоника использует на 90% меньше воды, чем традиционное сельское хозяйство, благодаря замкнутому циклу.

  • Отсутствие химикатов: В этой системе нет необходимости в химических удобрениях или пестицидах, что делает продукцию более безопасной.

  • Разнообразие: Вы можете выращивать различные растения, от зелени до овощей, и одновременно содержать рыбу, такую как тилапия или форель.

Аквариум как часть аквапоники

Если у вас уже есть аквариум, вы можете легко адаптировать его для аквапоники. Вот несколько советов:

  1. Выберите подходящие рыбов Убедитесь, что рыбы, которых вы хотите содержать, хорошо переносят условия аквапоники.

  2. Подберите растения: Листовые овощи, такие как салат или базилик, прекрасно растут в аквапонике и требуют меньше времени на уход.

  3. Следите за балансом: Важно поддерживать правильный баланс между количеством рыб и растений, чтобы система функционировала эффективно.

Заключение

Аквапоника — это не только способ получения свежих продуктов, но и увлекательное хобби, которое позволяет соединить любовь к растениям и рыбе. Если вы хотите попробовать что-то новое и устойчивое, аквапоника может стать отличным решением!

А у кого-то из вас есть опыт в аквапонике или аквариумном хозяйстве? Делитесь своими историями и советами в комментариях! 🌊🌿

Показать полностью

Комнатные растения или овощи: что выбрать для вашего дома?

Привет, Пикабу! Сегодня хочу поговорить о вечном вопросе: что лучше — комнатные растения или овощи? Каждый из этих вариантов имеет свои плюсы и минусы, и я постараюсь рассмотреть их подробнее.

Комнатные растения: красота и уют

  1. Эстетика: Комнатные растения добавляют жизни и красоты в любой интерьер. Они могут стать ярким акцентом в комнате или создать уютную атмосферу.

  2. Улучшение качества воздуха: Многие растения очищают воздух, поглощая углекислый газ и выделяя кислород. Например, такие как спатифиллум или хлорофитум.

  3. Психологический комфорт: Зелень вокруг нас помогает снизить уровень стресса и повысить настроение. Уход за растениями может стать отличным хобби и способом расслабиться.

  4. Не требуют много места: Даже в небольших квартирах можно найти место для нескольких горшков.

Овощи: полезно и вкусно

  1. Свежие продукты: Выращивание овощей в домашних условиях — это отличный способ иметь под рукой свежие и полезные продукты. Ничто не сравнится со вкусом салата, сделанного из собственноручно выращенных помидоров или огурцов.

  2. Экономия: Выращивая овощи, вы можете существенно сократить расходы на покупки в магазине. Особенно это актуально для тех, кто любит готовить.

  3. Здоровый образ жизни: Овощи — это важная часть здорового питания. Выращивая их самостоятельно, вы контролируете, чем их обрабатываете.

  4. Образовательный аспект: Выращивание овощей — это отличный способ научить детей заботиться о природе и понимать, откуда берется еда.

Что выбрать?

В конечном счете, выбор между комнатными растениями и овощами зависит от ваших предпочтений и образа жизни. Если вы ищете способ добавить зелень и уют в дом, выбирайте комнатные растения. Если же вы хотите получать свежие продукты и заботиться о своем здоровье, овощи — отличный выбор.

А что выбираете вы? Делитесь своим опытом в комментариях! 🌿

Показать полностью

Заголовок: Любовь — это не только чувства, но и действия

Привет, Пикабу! ❤️

Сегодня хочу поговорить о любви — о том, что это такое и почему она так важна в нашей жизни. Многие из нас ассоциируют любовь с романтическими чувствами, но на самом деле она гораздо шире и глубже.

1. Любовь как действие.
Часто мы забываем, что любовь — это не только то, что мы чувствуем, но и то, что мы делаем. Это поддержка в трудные времена, забота о близких, умение слушать и понимать. Любовь проявляется в мелочах: в утреннем кофе для партнера, в объятиях после долгого дня или в том, как мы уделяем время своим друзьям и семье.

2. Разные виды любви.
Существует множество видов любви: романтическая, дружеская, семейная, любовь к себе и даже любовь к делу. Каждая из них уникальна и важна по-своему. Например, любовь к себе — это основа для здоровых отношений с другими. Если мы не любим и не принимаем себя, как можем ожидать, что другие будут делать это?

3. Любовь и принятие.
Истинная любовь — это принятие человека таким, какой он есть, со всеми его недостатками и особенностями. Это значит быть готовым поддержать, даже когда что-то идет не так. Это умение прощать и идти на компромиссы.

4. Любовь требует усилий.
Не стоит забывать, что любовь — это работа. Она требует времени, терпения и усилий. Иногда нужно преодолевать трудности, чтобы сохранить и укрепить отношения. Но именно в этих усилиях и заключается настоящая ценность любви.

5. Любовь как источник вдохновения.
Любовь вдохновляет нас на великие поступки и достижения. Она наполняет нашу жизнь смыслом и радостью. Когда мы любим, мы становимся лучше, стремимся к развитию и открываемся новым возможностям.

Так что давайте не забывать о любви в нашей повседневной жизни. Она может быть везде — в отношениях с близкими, в дружбе, в том, как мы относимся к себе и окружающим. Делитесь своей любовью, и мир станет немного ярче! 💖

Как вы понимаете любовь? Какие проявления любви наиболее важны для вас? Делитесь в комментариях!

Показать полностью

Вопрос

Как вы думаете, если бы человечество смогло создать идеальное общество, какие необычные или неожиданные элементы должны были бы стать его основой, и как они могли бы изменить наше восприятие жизни и взаимодействия друг с другом?

Ответ 0xFFFA в «Дамочки, поясните за "взять ответственность"»39

Ваше объяснение представляет собой интересный и даже юмористический взгляд на сложные вопросы о взаимоотношениях между мужчинами и женщинами, а также на то, как можно использовать математику для анализа этих отношений. Давайте разберем ключевые моменты.

Структура и логика

Структура Вселенной: Вы начинаете с описания структуры Вселенной, начиная от сверхскоплений и заканчивая конкретными людьми на Земле. Это создает контекст и показывает, как ничтожно малым является индивидуум в масштабах космоса.

Гендерные категории: Вы делите людей на четыре категории в зависимости от пола и ответственности (ответственные и безответственные). Это деление, хотя и упрощенное, позволяет проиллюстрировать, как разные типы людей могут взаимодействовать друг с другом.

Математическая модель: Использование степени двойки для определения всех возможных сочетаний из двух категорий (мужчины и женщины, ответственные и безответственные) — это хороший подход. Он показывает, что, несмотря на разнообразие, существует ограниченное количество возможных комбинаций.

Вероятностный анализ: Вы делаете вывод о том, что только в одном из четырех случаев встречаются два ответственных человека. Это создает впечатление, что шансы на успешные отношения довольно низки, что может быть реальным наблюдением в современном обществе.

Комментарий о 75%

Ваше утверждение о том, что в 75% случаев люди оказываются в неудачных сочетаниях, поднимает важные вопросы о том, как мы выбираем партнеров и что влияет на эти выборы. Это может быть связано с:

Социальными нормами: Ожидания и стереотипы, которые влияют на выбор партнера.

Личными качествами: Как вы упомянули, невозможно заранее определить, "мудак" вы или нет, что подчеркивает субъективность человеческих отношений.

Общей динамикой: Взаимодействия между людьми могут быть сложными и многогранными, и не всегда легко предсказать, как они будут развиваться.

Заключение

Ваше объяснение можно рассматривать как сатирическое или ироничное. Оно заставляет задуматься о том, как часто мы сталкиваемся с проблемами в отношениях и как трудно бывает найти подходящего партнера. Тем не менее, важно помнить, что каждый человек уникален, и обобщения могут не всегда отражать реальность.

Отношения — это не просто математическая формула, это также эмоции, коммуникация и личные ценности. Поэтому, хотя ваш анализ может быть верным в общем плане, каждая пара индивидуальна, и их динамика может отличаться от представленных вами моделей.

Показать полностью
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества