Створення класів персонажів
Створення класів персонажів у Pygame — важливий етап у розробці гри. Це дозволяє структурувати код, роблячи його більш організованим і зручним для розширення. Давайте розглянемо приклад створення класу персонажа, який зможе рухатися по екрану.
Крок 1: Створення базового класу персонажа
Спочатку створимо клас `Player`, який представлятиме персонажа гри. Цей клас буде мати методи для відображення персонажа на екрані, а також для обробки його руху.
import pygame
import sys
- # Ініціалізація Pygame
pygame.init() - # Налаштування розмірів вікна
screen = pygame.display.set_mode((800, 600)) - # Встановлення назви вікна
pygame.display.set_caption(“Гра з персонажами”) - # Задання кольорів
WHITE = (255, 255, 255) - # Клас персонажа
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 - # Створення персонажа
player = Player(100, 100, 50, 50, (0, 128, 255)) - # Основний цикл гри
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) - # Заповнення екрану білим кольором
screen.fill(WHITE) - # Малювання персонажа
player.draw(screen) - # Оновлення дисплея
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
self.is_jumping = False
self.jump_speed = 10
self.gravity = 1
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 not self.is_jumping:
if keys[pygame.K_UP]:
self.is_jumping = True
else:
self.rect.y -= self.jump_speed
self.jump_speed -= self.gravity
if self.jump_speed < -10:
self.is_jumping = False
self.jump_speed = 10
def check_collision(self, other_rect):
return self.rect.colliderect(other_rect)
Крок 3: Створення кількох персонажів
Давайте створимо кілька персонажів і додамо можливість перевіряти їх зіткнення.
- # Створення персонажів
player1 = Player(100, 100, 50, 50, (0, 128, 255))
player2 = Player(300, 300, 50, 50, (255, 0, 0)) - # Основний цикл гри
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit() - # Отримання стану клавіш
keys = pygame.key.get_pressed() - # Рух персонажів
player1.move(keys) - # Перевірка зіткнення
if player1.check_collision(player2.rect):
print(“Зіткнення!”) - # Заповнення екрану білим кольором
screen.fill(WHITE) - # Малювання персонажів
player1.draw(screen)
player2.draw(screen) - # Оновлення дисплея
pygame.display.flip()
Крок 4: Додавання анімації
Для більш складних персонажів можна додати анімацію, яка змінюватиме зображення залежно від дій персонажа (рух, стрибок тощо).
class Player:
def __init__(self, x, y, width, height, color, sprites):
self.rect = pygame.Rect(x, y, width, height)
self.color = color
self.speed = 5
self.is_jumping = False
self.jump_speed = 10
self.gravity = 1
self.sprites = sprites
self.current_sprite = 0
self.image = sprites[self.current_sprite]
def draw(self, screen):
screen.blit(self.image, (self.rect.x, self.rect.y))
def move(self, keys):
if keys[pygame.K_LEFT]:
self.rect.x -= self.speed
self.current_sprite = 1 # Вибір анімації руху вліво
if keys[pygame.K_RIGHT]:
self.rect.x += self.speed
self.current_sprite = 2 # Вибір анімації руху вправо
# Стрибок
if not self.is_jumping:
if keys[pygame.K_UP]:
self.is_jumping = True
else:
self.rect.y -= self.jump_speed
self.jump_speed -= self.gravity
if self.jump_speed < -10:
self.is_jumping = False
self.jump_speed = 10
# Оновлення зображення персонажа
self.image = self.sprites[self.current_sprite]
Тест Python. Створення класів персонажів.
Висновок: Створення класів персонажів у Pygame
Класи персонажів в Pygame дозволяють створювати об’єкти, які можуть взаємодіяти з іншими елементами гри. Вони полегшують обробку руху, зіткнень, анімації та інших аспектів гри. Цей підхід допомагає організувати код і робить його легким для розширення та підтримки.