Игровые события. Счёт игры
Реализация игровых событий и подсчета очков в Pygame являются ключевыми для создания увлекательных игр. В этом руководстве мы рассмотрим, как добавить события для взаимодействия с игровыми объектами и вести счет игры.
Реализация игровых событий и подсчета очков в Pygame
Шаг 1: Основы работы с событиями
События в Pygame – это взаимодействия игрока с игрой, такие как нажатие клавиш, движения мыши или столкновение объектов. Для обработки событий используется цикл, проверяющий каждое событие.
import pygame
import sys
- Инициализация Pygame
pygame.init() - Настройка размеров окна
screen = pygame.display.set_mode((800, 600))
pygame.display.set_caption(«Игровые события и счет») - Задание цветов
WHITE = (255, 255, 255)
RED = (255, 0, 0) - Основной цикл игры
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit() - Очистка экрана
screen.fill(WHITE) - Обновление дисплея
pygame.display.flip()
Шаг 2: Добавление события столкновения
Давайте создадим игру, где игрок управляет персонажем и должен избегать столкновений с другими объектами.
- Класс для персонажа игрока
class Player:
def __init__(self, x, y, width, height, color):
self.rect = pygame.Rect(x, y, width, height)
self.color = color
self.speed = 5
def draw(self, screen):
pygame.draw.rect(screen, self.color, self.rect)
def move(self, keys):
if keys[pygame.K_LEFT]:
self.rect.x -= self.speed
if keys[pygame.K_RIGHT]:
self.rect.x += self.speed
if keys[pygame.K_UP]:
self.rect.y -= self.speed
if keys[pygame.K_DOWN]:
self.rect.y += self.speed
- Класс для врагов
class Enemy:
def __init__(self, x, y, width, height, color, speed):
self.rect = pygame.Rect(x, y, width, height)
self.color = color
self.speed = speed
def draw(self, screen):
pygame.draw.rect(screen, self.color, self.rect)
def move(self):
self.rect.y += self.speed
if self.rect.top > 600:
self.rect.y=-self.rect.height
- Инициализация персонажа и врага
Player = Player(375, 500, 50, 50, RED)
enemy = Enemy(375, 0, 50, 50, (0, 0, 255), 5) - Основной цикл игры
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit() - Получение состояния клавиш
keys = pygame.key.get_pressed() - Движение персонажа
player.move(keys) - Движение врага
enemy.move() - Проверка столкновения
if player.rect.colliderect(enemy.rect):
print(«Столкновение!») - Очистка экрана
screen.fill(WHITE) - Рисование персонажа и врага
player.draw(screen)
enemy.draw(screen) - Обновление дисплея
pygame.display.flip()
Шаг 3: Добавление счета игры
Давайте добавим подсчет очков, который будет увеличиваться всякий раз, когда игрок успешно избежит столкновения с врагом.
- Инициализация шрифта
pygame.font.init()
font = pygame.font.SysFont(None, 55) - Функция для отображения счета
def draw_score(score):
text = font.render(f»Score: {score}», True, (0, 0, 0))
screen.blit(text, (10, 10)) - Инициализация персонажа, врага и счета
Player = Player(375, 500, 50, 50, RED)
enemy = Enemy(375, 0, 50, 50, (0, 0, 255), 5)
score=0 - Основной цикл игры
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit() - Получение состояния клавиш
keys = pygame.key.get_pressed() - Движение персонажа
player.move(keys) - Движение врага
enemy.move() - Проверка столкновения
if player.rect.colliderect(enemy.rect):
print(«Столкновение!»)
score = 0 # Обнуление счета при столкновении
else:
score += 1 # Увеличение счета за каждый успешный кадр - Очистка экрана
screen.fill(WHITE) - Рисование персонажа и врага
player.draw(screen)
enemy.draw(screen) - Отображение счета
draw_score(score) - Обновление дисплея
pygame.display.flip()
Шаг 4: Рестарт игры после столкновения
Чтобы игра была интерактивнее, можно добавить функцию рестарта после столкновения.
- Функция для рестарта игры
def restart_game():
global player, enemy, score
Player = Player(375, 500, 50, 50, RED)
enemy = Enemy(375, 0, 50, 50, (0, 0, 255), 5)
score=0 - Основной цикл игры
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit() - Получение состояния клавиш
keys = pygame.key.get_pressed() - Движение персонажа
player.move(keys) - Движение врага
enemy.move() - Проверка столкновения
if player.rect.colliderect(enemy.rect):
print(«Столкновение!»)
restart_game() # Рестарт игры при столкновении
else:
score += 1 - Очистка экрана
screen.fill(WHITE) - Рисование персонажа и врага
player.draw(screen)
enemy.draw(screen) - Отображение счета
draw_score(score) - Обновление дисплея
pygame.display.flip()
Тест Python. Игровые события. Счет игры.
Заключение: Реализация игровых событий и подсчета очков в Pygame
В этом примере мы рассмотрели, как обрабатывать игровые события, такие как столкновение и как вести счет игры. Вы можете расширить этот базовый пример, добавляя новые события, более сложные враги, а также дополнительные элементы для увеличения взаимодействия игрока с игрой.