Реализовать игру,где пользователь за определенное аремя должен собрать 10 предметов на PyGame.Также реализовать препятствия, отнимающие у пользователя жизни.После потери 3 жизней пользователь проигрывает
Ответы на вопрос
Прежде всего, вам понадобятся файлы изображений для игрока, предмета и препятствия. Их нужно поместить в ту же директорию, что и ваш скрипт. Обратите внимание, что изображения должны быть достаточно маленькими, чтобы поместиться на экране, и они должны быть в формате, который pygame может прочитать (например, .png или .jpg).
- player.png
- item.png
- obstacle.png
import pygame
import random
# Инициализация pygame
pygame.init()
# Размеры экрана
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
# Загрузка изображений
player_image = pygame.image.load('player.png')
item_image = pygame.image.load('item.png')
obstacle_image = pygame.image.load('obstacle.png')
# Создание класса для предметов и препятствий
class Entity(pygame.sprite.Sprite):
def __init__(self, image, x, y, is_obstacle=False):
super().__init__()
self.image = image
self.rect = self.image.get_rect(center=(x, y))
# Создание класса игрока
class Player(Entity):
def __init__(self, image, x, y):
super().__init__(image, x, y)
self.velocity = 5
def update(self, keys):
if keys[pygame.K_LEFT]:
self.rect.x -= self.velocity
if keys[pygame.K_RIGHT]:
self.rect.x += self.velocity
if keys[pygame.K_UP]:
self.rect.y -= self.velocity
if keys[pygame.K_DOWN]:
self.rect.y += self.velocity
# Создание игрока
player = Player(player_image, SCREEN_WIDTH//2, SCREEN_HEIGHT//2)
# Создание группы спрайтов
items = pygame.sprite.Group()
obstacles = pygame.sprite.Group()
# Начальное количество предметов и препятствий
ITEMS_COUNT = 10
OBSTACLES_COUNT = 5
# Создание предметов и препятствий
for _ in range(ITEMS_COUNT):
item = Entity(item_image, random.randint(0, SCREEN_WIDTH), random.randint(0, SCREEN_HEIGHT))
items.add(item)
for _ in range(OBSTACLES_COUNT):
obstacle = Entity(obstacle_image, random.randint(0, SCREEN_WIDTH), random.randint(0, SCREEN_HEIGHT))
obstacles.add(obstacle)
# Создание экрана
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
# Количество жизней
lives = 3
# Главный цикл игры
running = True
while running:
# Обработка событий
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# Обновление положения игрока
keys = pygame.key.get_pressed()
player.update(keys)
# Очистка экрана
screen.fill((0, 0, 0))
# Отображение игрока, предметов и препятствий
screen.blit(player.image, player.rect)
for entity in items:
screen.blit(entity.image, entity.rect)
for entity in obstacles:
screen.blit(entity.image, entity.rect)
# Обновление экрана
pygame.display.flip()
# Проверка на столкновение с предметами
hit_items = pygame.sprite.spritecollide(player, items, True)
if hit_items:
print("Собран предмет!")
# Проверка на столкновение с препятствиями
hit_obstacles = pygame.sprite.spritecollide(player, obstacles, True)
if hit_obstacles:
lives -= 1
print("Столкновение с препятствием! Жизни: ", lives)
if lives <= 0:
print("Вы проиграли!")
running = False
# Проверка на победу
if len(items) == 0:
print("Вы выиграли!")
running = False
pygame.quit()