Реализовать игру, где пользователь за определенное время должен собрать 10 предметов на PyGame. Также реализовать препятствия, отнимающие у пользователя жизни. После потери 3 жизней пользователь проигрывает.
python
import pygame
# Инициализация Pygame
pygame.init()
# Размеры окна
WIDTH = 800
HEIGHT = 600
# Создание окна
screen = pygame.display.set_mode((WIDTH, HEIGHT))
# Основной игровой цикл
while True:
# Отрисовка игрового окна
pygame.display.flip()
# Обработка событий
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
exit()
2. Спрайты: спрайты - это графические изображения, которые будут отображаться на экране. Мы можем использовать изображения предметов и препятствий как спрайты в нашей игре. Спрайты можно создать с помощью класса pygame.sprite.Sprite. У каждого спрайта должны быть определены его отображение (изображение) и его позиция (координаты x и y).
python
import pygame
import random
# Инициализация Pygame
pygame.init()
# Размеры окна
WIDTH = 800
HEIGHT = 600
# Создание окна
screen = pygame.display.set_mode((WIDTH, HEIGHT))
# Класс предметов
class Item(pygame.sprite.Sprite):
def __init__(self, x, y):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((50, 50))
self.image.fill((0, 255, 0))
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
# Класс препятствий
class Obstacle(pygame.sprite.Sprite):
def __init__(self, x, y):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((50, 50))
self.image.fill((255, 0, 0))
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
# Группы спрайтов
all_sprites = pygame.sprite.Group()
items = pygame.sprite.Group()
obstacles = pygame.sprite.Group()
# Создание предметов
for _ in range(10):
x = random.randrange(0, WIDTH - 50)
y = random.randrange(0, HEIGHT - 50)
item = Item(x, y)
all_sprites.add(item)
items.add(item)
# Создание препятствий
for _ in range(5):
x = random.randrange(0, WIDTH - 50)
y = random.randrange(0, HEIGHT - 50)
obstacle = Obstacle(x, y)
all_sprites.add(obstacle)
obstacles.add(obstacle)
# Основной игровой цикл
running = True
while running:
# Отрисовка игрового окна
screen.fill((255, 255, 255))
all_sprites.draw(screen)
pygame.display.flip()
# Обработка событий
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.quit()
exit()
3. Передвижение игрока: мы можем управлять игроком с помощью клавиш клаватуры. Мы можем использовать функцию pygame.key.set_repeat(delay, interval) для задания времени задержки перед повтором нажатия клавиш.
python
import pygame
import random
# Инициализация Pygame
pygame.init()
# Размеры окна
WIDTH = 800
HEIGHT = 600
# Создание окна
screen = pygame.display.set_mode((WIDTH, HEIGHT))
# Класс предметов
class Item(pygame.sprite.Sprite):
def __init__(self, x, y):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((50, 50))
self.image.fill((0, 255, 0))
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
# Класс препятствий
class Obstacle(pygame.sprite.Sprite):
def __init__(self, x, y):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((50, 50))
self.image.fill((255, 0, 0))
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
# Класс игрока
class Player(pygame.sprite.Sprite):
def __init__(self, x, y):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((50, 50))
self.image.fill((0, 0, 255))
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
def update(self):
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
self.rect.x -= 5
if keys[pygame.K_RIGHT]:
self.rect.x += 5
if keys[pygame.K_UP]:
self.rect.y -= 5
if keys[pygame.K_DOWN]:
self.rect.y += 5
# Группы спрайтов
all_sprites = pygame.sprite.Group()
items = pygame.sprite.Group()
obstacles = pygame.sprite.Group()
# Создание предметов
for _ in range(10):
x = random.randrange(0, WIDTH - 50)
y = random.randrange(0, HEIGHT - 50)
item = Item(x, y)
all_sprites.add(item)
items.add(item)
# Создание препятствий
for _ in range(5):
x = random.randrange(0, WIDTH - 50)
y = random.randrange(0, HEIGHT - 50)
obstacle = Obstacle(x, y)
all_sprites.add(obstacle)
obstacles.add(obstacle)
# Создание игрока
player = Player(WIDTH / 2, HEIGHT / 2)
all_sprites.add(player)
# Основной игровой цикл
running = True
while running:
# Отрисовка игрового окна
screen.fill((255, 255, 255))
all_sprites.update()
all_sprites.draw(screen)
pygame.display.flip()
# Обработка событий
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.quit()
exit()
4. Сбор предметов: мы можем проверить, когда игрок пересекается с предметами, и удалить их из игры (из группы предметов и из группы спрайтов).
python
import pygame
import random
# Инициализация Pygame
pygame.init()
# Размеры окна
WIDTH = 800
HEIGHT = 600
# Создание окна
screen = pygame.display.set_mode((WIDTH, HEIGHT))
# Класс предметов
class Item(pygame.sprite.Sprite):
def __init__(self, x, y):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((50, 50))
self.image.fill((0, 255, 0))
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
# Класс препятствий
class Obstacle(pygame.sprite.Sprite):
def __init__(self, x, y):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((50, 50))
self.image.fill((255, 0, 0))
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
# Класс игрока
class Player(pygame.sprite.Sprite):
def __init__(self, x, y):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((50, 50))
self.image.fill((0, 0, 255))
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
def update(self):
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
self.rect.x -= 5
if keys[pygame.K_RIGHT]:
self.rect.x += 5
if keys[pygame.K_UP]:
self.rect.y -= 5
if keys[pygame.K_DOWN]:
self.rect.y += 5
# Группы спрайтов
all_sprites = pygame.sprite.Group()
items = pygame.sprite.Group()
obstacles = pygame.sprite.Group()
# Создание предметов
for _ in range(10):
x = random.randrange(0, WIDTH - 50)
y = random.randrange(0, HEIGHT - 50)
item = Item(x, y)
all_sprites.add(item)
items.add(item)
# Создание препятствий
for _ in range(5):
x = random.randrange(0, WIDTH - 50)
y = random.randrange(0, HEIGHT - 50)
obstacle = Obstacle(x, y)
all_sprites.add(obstacle)
obstacles.add(obstacle)
# Создание игрока
player = Player(WIDTH / 2, HEIGHT / 2)
all_sprites.add(player)
# Основной игровой цикл
running = True
score = 0
while running:
# Отрисовка игрового окна
screen.fill((255, 255, 255))
all_sprites.update()
all_sprites.draw(screen)
pygame.display.flip()
# Обработка столкновений игрока с предметами
hits = pygame.sprite.spritecollide(player, items, True)
for hit in hits:
score += 1
print("Score:", score)
# Обработка событий
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.quit()
exit()
5. Препятствия и потеря жизней: мы можем добавить препятствия в игру, которые будут отнимать жизни у игрока при столкновении с ними. Мы можем использовать переменную "lives" для отслеживания количества оставшихся жизней.
```python
import pygame
import random
# Инициализация Pygame
pygame.init()
# Размеры окна
WIDTH = 800
HEIGHT = 600
# Создание окна
screen = pygame.display.set_mode((WIDTH, HEIGHT))
# Класс предметов
class Item(pygame.sprite.Sprite):
def __init__(self, x, y):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((50, 50))
self.image.fill((0, 255, 0))
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
# Класс препятствий
class Obstacle(pygame.sprite.Sprite):
def __init__(self, x, y):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((50, 50))
self.image.fill((255, 0, 0))
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
# Класс игрока
class Player(pygame.sprite.Sprite):
def __init__(self, x, y):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.Surface((50, 50))
self.image.fill((0, 0, 255))
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
self.lives = 3
def update(self):
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
self.rect.x -= 5
if keys[pygame.K_RIGHT]:
self.rect.x += 5
if keys[pygame.K_UP]:
self.rect.y -= 5
if keys[pygame.K_DOWN]:
self.rect.y += 5
# Проверка столкновений с препятствиями
if pygame.sprite.spritecollide(self, obstacles, False):
self.lives -= 1
print("Lives:", self.lives)
# Группы спрайтов
all_sprites = pygame.sprite.Group()
items = pygame.sprite.Group()
obstacles = pygame.sprite.Group()
# Создание предметов
for _ in range(10):
x = random.randrange(0, WIDTH - 50)
y = random.randrange(0, HEIGHT - 50)
item = Item(x, y)
all_sprites.add(item)
items.add(item)
# Создание препятствий
for _ in range(5):
x = random.randrange(0, WIDTH - 50)
y = random.randrange(0, HEIGHT - 50)
obstacle = Obstacle(x, y)
all_sprites.add(obstacle)
obstacles.add(obstacle)
# Создание игрока
player = Player(WIDTH / 2, HEIGHT / 2)
all_sprites.add(player)
# Основной игровой цикл
running = True
score = 0
while running:
# Отрисовка игрового окна
screen.fill((255, 255, 255))
all_sprites.update()
all_sprites.draw(screen)
pygame.display.flip()
# Обработка столкновений игрока с предметами
hits = pygame.sprite.spritecollide(player, items, True)
for hit in hits:
score += 1
print("Score:", score)
# Проверка колНажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет
Нажимая «Регистрация» или «Войти через Google», вы соглашаетесь с Публичной офертой, даете Согласие на обработку персональных данных, а также подтверждаете что вам есть 18 лет