Информатика, вопрос задал artmkapustin00 , 1 год назад

Реализовать игру,где пользователь за определенное аремя должен собрать 10 предметов на PyGame.Также реализовать препятствия, отнимающие у пользователя жизни.После потери 3 жизней пользователь проигрывает

Ответы на вопрос

Ответил flash77779
0

Прежде всего, вам понадобятся файлы изображений для игрока, предмета и препятствия. Их нужно поместить в ту же директорию, что и ваш скрипт. Обратите внимание, что изображения должны быть достаточно маленькими, чтобы поместиться на экране, и они должны быть в формате, который 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()

Новые вопросы