Створення класів персонажів

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

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