Игровые события. Счёт игры

Прокрутить вниз

Реализация игровых событий и подсчета очков в 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

В этом примере мы рассмотрели, как обрабатывать игровые события, такие как столкновение и как вести счет игры. Вы можете расширить этот базовый пример, добавляя новые события, более сложные враги, а также дополнительные элементы для увеличения взаимодействия игрока с игрой.