Python зробити інвентар в якому можна додавати і видаляти речі
Ответы
Ответ:
import pygame
import sys
import random
pygame.init()
# Определение цветов
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
GRAY = (200, 200, 200)
# Инициализация окна
WIDTH, HEIGHT = 800, 600
CELL_SIZE = 50
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("Инвентарь")
# Инициализация инвентаря (8x8 сетка)
inventory_rows = 8
inventory_cols = 8
inventory = [["" for i in range(inventory_cols)] for j in range(inventory_rows)]
# Генерация случайных квадратиков
squares = [{"color": (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)),
"rect": pygame.Rect(random.randint(0, WIDTH - CELL_SIZE), random.randint(CELL_SIZE, HEIGHT - CELL_SIZE), CELL_SIZE, CELL_SIZE),
"dragging": False} for _ in range(5)] # Создаем 5 случайных квадратиков
# Основной цикл игры
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_a:
# Добавление предмета в первую пустую ячейку инвентаря
for i in range(inventory_rows):
for j in range(inventory_cols):
if inventory[i][j] == "":
inventory[i][j] = "Предмет"
break
elif event.type == pygame.MOUSEBUTTONDOWN:
if event.button == 1: # Левая кнопка мыши
for square in squares:
if square["rect"].collidepoint(event.pos):
square["dragging"] = True
elif event.type == pygame.MOUSEBUTTONUP:
if event.button == 1:
for square in squares:
if square["dragging"]:
# Проверяем, находится ли квадратик над инвентарем
for i in range(inventory_rows):
for j in range(inventory_cols):
cell_rect = pygame.Rect(j * CELL_SIZE, i * CELL_SIZE + CELL_SIZE, CELL_SIZE, CELL_SIZE)
if cell_rect.collidepoint(square["rect"].center):
inventory[i][j] = "Предмет"
break
square["dragging"] = False
for square in squares:
if square["dragging"]:
square["rect"].center = pygame.mouse.get_pos()
# Отображение инвентаря и квадратиков
screen.fill(WHITE)
pygame.draw.rect(screen, BLACK, (0, 0, WIDTH, CELL_SIZE)) # Заголовок "Инвентарь"
font = pygame.font.Font(None, 36)
text = font.render("Инвентарь: {}".format(sum(row.count("Предмет") for row in inventory)), True, WHITE)
screen.blit(text, (10, 5))
for i in range(inventory_rows):
for j in range(inventory_cols):
color = WHITE if (i + j) % 2 == 0 else GRAY
pygame.draw.rect(screen, color, (j * CELL_SIZE, i * CELL_SIZE + CELL_SIZE, CELL_SIZE, CELL_SIZE))
if inventory[i][j] != "":
font = pygame.font.Font(None, 20)
text = font.render(inventory[i][j], True, BLACK)
screen.blit(text, (j * CELL_SIZE + 10, i * CELL_SIZE + CELL_SIZE + 10))
for square in squares:
pygame.draw.rect(screen, square["color"], square["rect"])
pygame.display.flip()