Додавання зображень персонажів

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

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