Додавання зображень персонажів
Додавання зображень персонажів в 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, image_path):
self.image = pygame.image.load(image_path)
self.rect = self.image.get_rect()
self.rect.topleft = (x, y)
self.speed = 5 - def draw(self, screen):
screen.blit(self.image, 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, ‘player_image.png’) - Основний цикл гри
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, images):
self.images = [pygame.image.load(img) for img in images]
self.current_image = 0
self.rect = self.images[self.current_image].get_rect()
self.rect.topleft = (x, y)
self.speed = 5
def draw(self, screen):
screen.blit(self.images[self.current_image], self.rect)
def move(self, keys):
if keys[pygame.K_LEFT]:
self.rect.x -= self.speed
self.current_image = 1 # Вибір анімації руху вліво
if keys[pygame.K_RIGHT]:
self.rect.x += self.speed
self.current_image = 2 # Вибір анімації руху вправо
if keys[pygame.K_UP]:
self.rect.y -= self.speed
self.current_image = 0 # Вибір анімації руху вверх
if keys[pygame.K_DOWN]:
self.rect.y += self.speed
self.current_image = 0 # Вибір анімації руху вниз
Використання анімацій
Тепер створимо об’єкт `Player` із кількома зображеннями для різних дій (рух вліво, вправо тощо).
- Завантаження зображень для анімації
player_images = [
‘player_standing.png’, # Зображення стоячого персонажа
‘player_walking_left.png’, # Зображення руху вліво
‘player_walking_right.png’ # Зображення руху вправо
] - Створення персонажа
player = Player(100, 100, player_images) - Основний цикл гри
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()
Крок 3: Обробка анімації
Для плавної анімації можна додати зміну зображень на кожному кроці, що дасть ефект “ходьби”.
import time
class Player:
def __init__(self, x, y, images):
self.images = [pygame.image.load(img) for img in images]
self.current_image = 0
self.rect = self.images[self.current_image].get_rect()
self.rect.topleft = (x, y)
self.speed = 5
self.last_update = time.time()
self.animation_delay = 0.1 # Час між кадрами анімації
def draw(self, screen):
screen.blit(self.images[self.current_image], self.rect)
def move(self, keys):
if keys[pygame.K_LEFT]:
self.rect.x -= self.speed
self.update_animation(1) # Оновлення анімації для руху вліво
if keys[pygame.K_RIGHT]:
self.rect.x += self.speed
self.update_animation(2) # Оновлення анімації для руху вправо
if keys[pygame.K_UP]:
self.rect.y -= self.speed
self.update_animation(0) # Оновлення анімації для стояння
if keys[pygame.K_DOWN]:
self.rect.y += self.speed
self.update_animation(0) # Оновлення анімації для стояння
def update_animation(self, index):
current_time = time.time()
if current_time – self.last_update > self.animation_delay:
self.current_image = index
self.last_update = current_time
Тест Python. Додавання зображень персонажів
Висновок
Зображення персонажів у Pygame значно покращують візуальний вигляд гри. Використання анімації на основі змінних зображень робить персонажів більш динамічними та живими. Ви можете експериментувати з різними анімаціями, ефектами та методами для створення унікальних персонажів у своїй грі.