Ігрові події. Рахунок гри
Реалізація ігрових подій та підрахунку очок у 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
У цьому прикладі ми розглянули, як обробляти ігрові події, такі як зіткнення, та як вести рахунок гри. Ви можете розширити цей базовий приклад, додаючи нові події, складніші вороги, а також додаткові елементи для збільшення взаємодії гравця з грою.