Ігрові події. Рахунок гри

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

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

У цьому прикладі ми розглянули, як обробляти ігрові події, такі як зіткнення, та як вести рахунок гри. Ви можете розширити цей базовий приклад, додаючи нові події, складніші вороги, а також додаткові елементи для збільшення взаємодії гравця з грою.