Czytelnicy tacy jak ty pomagają wspierać MUO. Kiedy dokonujesz zakupu za pomocą linków na naszej stronie, możemy otrzymać prowizję partnerską. Czytaj więcej.

Jeśli jesteś twórcą gier korzystającym z biblioteki Pygame, prawdopodobnie zetknąłeś się z klasą Sprite. Klasa Sprite to potężne narzędzie do tworzenia postaci w grze, które można łatwo przesuwać, obracać i skalować na ekranie.

Dzięki prostemu programowi w Pythonie możesz dowiedzieć się o procesie tworzenia postaci w grze opartych na duszkach w Pygame. Dowiedz się, jak utworzyć podstawową klasę Sprite, a następnie dodać atrybuty i metody kontrolowania zachowania.

Wprowadzenie do klasy Sprite w Pygame

Klasa Sprite w Pygame to klasa kontenera, która przechowuje wszystkie atrybuty i zachowania postaci z gry. Wywodzi się z klasy Surface Pygame, która reprezentuje obraz o stałej szerokości i wysokości.

Aby z nim pracować, musisz utworzyć nową klasę, która będzie dziedziczyć po klasie Sprite, i zdefiniować wszelkie atrybuty i metody, które ma mieć Twoja postać w grze.

instagram viewer

Tworzenie podstawowej klasy Sprite dla postaci w grze

Pierwszy, zainstaluj moduł pygame za pomocą pip. Zrób to za pomocą tego polecenia:

pypeć zainstalować pygame

Aby utworzyć podstawowego sprite'a, musisz zaimportować klasę Sprite z Pygame i utworzyć nową klasę, która po niej dziedziczy. Następnie możesz zdefiniować dowolne atrybuty i metody, które ma mieć Twoja postać w grze.

Na przykład możesz chcieć utworzyć klasę Sprite dla postaci gracza, która może poruszać się w lewo i w prawo po ekranie. Aby to zrobić, możesz zdefiniować następujące atrybuty:

  • pozycja: Krotka przechowująca współrzędne x i y duszka na ekranie.
  • prędkość: Krotka przechowująca prędkość, z jaką duszek porusza się w poziomie i w pionie.

Oraz następujące metody:

  • aktualizacja(): Metoda, która aktualizuje pozycję duszka na podstawie jego prędkości.
  • rysować(): Metoda, która rysuje duszka na ekranie.

Oto przykład podstawowej klasy Sprite, która implementuje te atrybuty i metody:

import pygame

klasaGracz(pygame.sprite. Krasnoludek):
pok__w tym__(ja, x, y, prędkość_x, prędkość_y):
Super().__w tym__()
samego siebie.pozycja = (x, y)
samego siebieprędkość = (prędkość_x, prędkość_y)

pokaktualizacja(samego siebie):
samego siebie.pozycja = (samego siebie.pozycja[0] + samego siebie.prędkość[0], samego siebie.pozycja[1] + samego siebie.prędkość[1])

pokrysować(ja, powierzchnia):
pygame.rysować.koło(powierzchnia, (255, 0, 0), samego siebie.pozycja, 10)

Metoda __init__ jest specjalna metoda w klasach Pythona który jest uruchamiany podczas tworzenia instancji klasy. Możesz go użyć do zainicjowania atrybutów instancji.

W tym kodzie metoda __init__ klasy Player przyjmuje cztery argumenty: x, y, prędkość_x i prędkość_y. Argumenty te określają początkową pozycję i prędkość duszka gracza.

Metoda __init__ wywołuje również metodę super().__init__(), która jest metodą __init__ macierzystej klasy Sprite. Jest to konieczne, ponieważ klasa Player jest podklasą klasy Sprite, a metoda __init__ klasy Sprite ustawia pewne atrybuty, których potrzebują wszystkie duszki.

Dodawanie atrybutów i metod do zachowania kontrolnego

Teraz, gdy masz już podstawową klasę Sprite, możesz dodawać atrybuty i metody, aby kontrolować zachowanie swojej postaci w grze. Może to obejmować ruch, atakowanie, skakanie i nie tylko.

Aby dodać te atrybuty i metody, musisz pomyśleć o tym, jakie działania chcesz wykonać w swojej grze postać, którą będziesz mógł wykonać, i zdefiniuj odpowiednie atrybuty i metody w swoim duszku klasa.

Na przykład możesz chcieć dodać metodę kontrolującą ruch duszka, na przykład metodę move_left(), która zmniejsza prędkość duszka na osi x.

Oto przykład zmodyfikowanej klasy Sprite, która zawiera te dodatkowe atrybuty i metody:

klasaGracz(pygame.sprite. Krasnoludek):
pok__w tym__(ja, x, y, prędkość_x, prędkość_y):
Super().__w tym__()
samego siebie.pozycja = (x, y)
samego siebieprędkość = (prędkość_x, prędkość_y)

pokaktualizacja(samego siebie):
samego siebie.pozycja = (samego siebie.pozycja[0] + samego siebie.prędkość[0], samego siebie.pozycja[1] + samego siebie.prędkość[1])

pokrysować(ja, powierzchnia):
pygame.rysować.koło(powierzchnia, (255, 0, 0), samego siebie.pozycja, 10)

pokprzesuń w lewo(samego siebie):
samego siebieprędkość = (-1, samego siebie.prędkość[1])

pokruch w prawo(samego siebie):
samego siebieprędkość = (1, samego siebie.prędkość[1])

Aby użyć klasy Player w swojej grze Pygame, musisz utworzyć instancję tej klasy i w razie potrzeby wywołać jej metody.

Zacznij od utworzenia okna i instancji duszka Player:

# Zainicjuj grę Pygame
pygame.init()

# Ustaw rozmiar okna
rozmiar_okna = (640, 480)

# Utwórz okno
okno = pygame.display.set_mode (rozmiar_okna)

# Utwórz duszka gracza
gracz = gracz(320, 240, 0, 0)

Następnie zdefiniuj główną pętlę gry, która obsługuje zdarzenia klawiatury i aktualizacje oraz rysuje duszka. Gdy naciśniesz lewy lub prawy klawisz strzałki, duszek przesunie się w odpowiednim kierunku.

# Główna pętla gry
chwilaPRAWDA:
# Obsługuj zdarzenia
Do wydarzenie W pygame.event.get():
Jeśli event.type == pygame. ZREZYGNOWAĆ:
pygame.quit()
sys.exit()

Jeśli event.type == pygame. KLAWIATURA:
Jeśli event.key == pygame. K_LEWO:
gracz.move_left()
Elif event.key == pygame. K_PRAWO:
gracz.move_right()

# Zaktualizuj duszka gracza
gracz.aktualizacja()

# Wyczyść okno
okno.wypełnij((255, 255, 255))

# Narysuj duszka gracza
player.draw (okno)

# Zaktualizuj wyświetlacz
pygame.display.update()

Dzięki powstałemu programowi będziesz mógł kontrolować sprite'a gracza i obserwować, jak rysuje się na ekranie w różnych pozycjach:

Ładowanie i wyświetlanie grafiki sprite za pomocą modułu obrazu

Teraz, gdy masz już podstawową klasę Sprite z atrybutami i metodami kontrolującymi zachowanie, prawdopodobnie będziesz chciał dodać trochę grafiki do swojego duszka. Moduł obrazu Pygame ułatwia ładowanie i wyświetlanie obrazów na ekranie.

Aby załadować obraz, musisz użyć funkcji pygame.image.load(), która jako argument przyjmuje ścieżkę do pliku i zwraca obiekt Surface. Następnie możesz przypisać ten obiekt Surface do atrybutu duszka, takiego jak self.image, którego możesz użyć do narysowania duszka na ekranie.

Na przykład, oto jak możesz załadować obraz i przypisać go do duszka:

import pygame

klasaGracz(pygame.sprite. Krasnoludek):
pok__w tym__(ja, x, y, prędkość_x, prędkość_y, ścieżka_obrazu):
Super().__w tym__()
samego siebie.pozycja = (x, y)
samego siebieprędkość = (prędkość_x, prędkość_y)
samego siebie.image = pygame.image.load (ścieżka_do obrazu)

pokaktualizacja(samego siebie):
samego siebie.pozycja = (samego siebie.pozycja[0] + samego siebie.prędkość[0], samego siebie.pozycja[1] + samego siebie.prędkość[1])

pokrysować(ja, powierzchnia):
powierzchnia.blit(samego siebie.obraz, samego siebie.pozycja)

pokprzesuń w lewo(samego siebie):
samego siebieprędkość = (-1, samego siebie.prędkość[1])

pokruch w prawo(samego siebie):
samego siebieprędkość = (1, samego siebie.prędkość[1])

Ten kod definiuje klasę Player, która rozszerza klasę Sprite Pygame i zawiera atrybuty pozycji, prędkości i obrazu, a także metody aktualizacji pozycji duszka, rysowania duszka na ekranie i kontrolowania ruch.

Możesz to sprawdzić Repozytorium GitHub dla pełnego kodu!

Usprawnij zarządzanie duszkami dzięki klasie Sprite

Klasa Sprite zapewnia wygodny kontener dla wszystkich atrybutów i zachowań postaci w grze, ułatwiając aktualizowanie, rysowanie i kontrolowanie duszka na ekranie.

Implementując klasę Sprite w swojej grze Pygame, możesz poprawić ogólne wrażenia swoich graczy i usprawnić proces tworzenia dla siebie.