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.

Czy kiedykolwiek chciałeś stworzyć ekscytującą grę przy użyciu biblioteki PyGame Pythona, ale czułeś się przytłoczony koncepcją zarządzania czasem? Jeśli tak, nie jesteś sam.

Czas jest jednym z najważniejszych elementów tworzenia gier, a zrozumienie, jak działa czas w PyGame, jest niezbędne do tworzenia wciągających i odnoszących sukcesy gier. PyGame zapewnia kilka przydatnych funkcji i modułów, które pozwalają kontrolować czas w grach.

Tworzenie prostej gry

Zacznij od stworzenia prostej gry, w której prostokąt porusza się w prawo. na początek zainstaluj pip na swoim urządzeniu i użyj poniższego polecenia, aby zainstalować moduł PyGame:

pip zainstaluj pygame

Możesz znaleźć wszystkie przykłady kodu w tym Repozytorium GitHub.

Po zainstalowaniu zaimportuj moduł PyGame. Następnie utwórz ekran o rozmiarze 800x600 i białym kolorze tła oraz dodaj obiekt prostokątny. Kod powinien wyglądać mniej więcej tak:

instagram viewer
import pygame
pygame.init()
ekran = pygame.display.set_mode((800, 600))
tło = pygame. Powierzchnia (screen.get_size())
tło.wypełnienie((255, 255, 255))
rect = pygame. prostokąt(0, 0, 20, 20)

Następnie użyj pętli while, aby gra działała i aby obiekt prostokątny poruszał się w prawo, aż dotrze do końca ekranu.

bieganie = PRAWDA

chwila działanie:
Do wydarzenie W pygame.event.get():
Jeśli event.type == pygame. ZREZYGNOWAĆ:
bieganie = FAŁSZ

prostokąt.x += 1

Jeśli prostokąt.x > 780:
prostokąt.x = 0

screen.blit (tło, (0, 0))
pygame.draw.rect (ekran, (0, 0, 0), prosto)
pygame.display.update()

Możesz także dodać dane wejściowe użytkownika i kolizje w grze. Poniżej znajduje się wyjście:

Omówienie modułu czasu w PyGame

Aby kontrolować czas w tej grze, możesz użyć pygame.time moduł. Ten moduł zapewnia różne przydatne funkcje, w tym m.in Zegar obiekt metodami takimi jak get_ticks(), Czekać(), I opóźnienie(). Korzystając z tych funkcji, możesz łatwo kontrolować czas w swojej grze.

Tworzenie obiektu zegara do śledzenia czasu

W PyGame możesz użyć obiektu Clock do śledzenia czasu. Aby utworzyć zegar, po prostu użyj następującego wiersza kodu:

zegar = pygame.czas. Zegar()

Dzięki temu obiektowi Zegar możesz teraz śledzić czas w swojej grze. Istnieje również kilka innych przydatnych funkcji związanych z obiektem Zegar, takich jak:

  • uzyskać czas(): Za pomocą tej funkcji możesz pobrać czas potrzebny na każdą klatkę gry. Aby użyć tej funkcji, po prostu dodaj następujący wiersz kodu po pętli while:
    czas = zegar.pobierz_czas()
    Dodaj obiekt tekstowy, aby wyświetlić czas:
    czcionka = pygame.font. SysFont(„Arial”, 18)
    tekst = czcionka. renderowanie („Czas: {} ms”format (czas), PRAWDA, (0, 0, 0))
    screen.blit (tekst, (0, 0))
  • kleszcz(): Użyj tej funkcji, aby ustawić liczbę klatek na sekundę w grze. Domyślnie liczba klatek na sekundę jest ustawiona na 60 FPS. Aby ustawić 30 FPS, po prostu dodaj następujący wiersz kodu:
    zegar.tik(30)
  • get_fps(): Możesz pobrać aktualną liczbę klatek na sekundę w grze, używając funkcji get_fps. Aby skorzystać z tej funkcji, po prostu dodaj następujący wiersz kodu:
    fps = zegar.get_fps()
    Możesz dodać obiekt tekstowy, aby wyświetlić liczbę klatek na sekundę:
    czcionka = pygame.font. SysFont(„Arial”, 18)
    tekst = czcionka. renderowanie („FPS: {}”format (fps), PRAWDA, (0, 0, 0))
    screen.blit (tekst, (0, 20))
  • tick_busy_loop(): Ta funkcja pozwala obliczyć, ile milisekund minęło od ostatniego wywołania metody kleszcz() funkcjonować. Aby go użyć, po prostu dodaj następujący wiersz kodu:
    clock.tick_busy_loop(30)

Zdobywanie czasu za pomocą get_ticks

The get_ticks() funkcja zwraca czas w milisekundach od zainicjowania PyGame. Aby użyć tej funkcji, dodaj następujący wiersz kodu:

upłynął_czas = pygame.time.get_ticks()

Dodaj obiekt tekstowy, aby wyświetlić czas:

czcionka = pygame.font. SysFont(„Arial”, 18)
tekst = czcionka. renderowanie („Czas, który upłynął: {} ms”.format (czas_upłynął), PRAWDA, (0, 0, 0))
screen.blit (tekst, (0, 40))

Możesz wykorzystać czas, który upłynął, aby zaimplementować elementy gry oparte na czasie, takie jak ulepszenia, które trwają przez określony czas. Na przykład możesz zaimplementować wzmocnienie, które zwiększa prędkość prostego obiektu na 5 sekund:

Jeśli czas, jaki upłynął / 5000 > 0:
prostokąt.x += 5

Poniżej znajduje się wyjście:

Wstrzymywanie gry Korzystanie z funkcji oczekiwania i opóźnienia

PyGame zapewnia również dwie funkcje, których możesz użyć do wstrzymania gry na określony czas: the Czekać funkcja i opóźnienie funkcjonować.

Aby użyć Czekać funkcji, po prostu dodaj następujący wiersz kodu w pętli while:

pygame.czas.czekaj(1000)

Spowoduje to wstrzymanie gry na 1000 milisekund (1 sekunda). Aby użyć opóźnienie funkcji, po prostu dodaj następujący wiersz kodu w pętli while:

pygame.czas.opóźnienie(1000)

Spowoduje to opóźnienie następnej klatki gry o 1000 milisekund (1 sekunda).

Różnice między czekaniem a opóźnieniem

Istnieje kilka różnic między Czekać I opóźnienie Funkcje. The Czekać funkcja uśpi proces, aby współdzielić procesor z innymi programami. The opóźnienie funkcja użyje procesora, aby opóźnienie było dokładniejsze. Oznacza to, że opóźnienie ta funkcja wymaga większej mocy procesora niż Czekać Funkcja i nadaje się do gier, które wymagają precyzyjnego wyczucia czasu.

Tworzenie zdarzenia za pomocą set_timer

Możesz użyć Ustaw minutnik() funkcja do tworzenia zdarzenia wyzwalanego po określonym czasie.

Zdarzenia w PyGame to obiekty, które zawierają informacje o danych wprowadzonych przez użytkownika lub komunikatach generowanych przez program. Aby skorzystać z tej funkcji, utwórz niestandardowe zdarzenie i dodaj następujący wiersz kodu:

pygame.time.set_timer (CUSTOM_EVENT, 1000)

Spowoduje to utworzenie zdarzenia, które zostanie uruchomione po 1000 milisekundach — 1 sekundzie. Istnieją różne typy zdarzeń, które można wyzwalać, takie jak ruch myszy, wprowadzanie danych z klawiatury i zdarzenia w oknie. Twój kod może następnie reagować na te zdarzenia w najbardziej odpowiedni sposób.

Na przykład, jeśli chcesz zmienić oś y obiektu rect po 1 sekundzie lub po uruchomieniu zdarzenia niestandardowego, możesz dodać następujący wiersz kodu:

Jeśli event.type == CUSTOM_EVENT:
prost.y += 20

W ten sposób możesz łatwo tworzyć w swojej grze wydarzenia oparte na czasie, które możesz wykorzystać do stworzenia interesującej i wymagającej rozgrywki.

Z czasem ulepszaj sterowanie grą

Za pomocą kontroli czasu możesz poprawić sterowanie w grze. Możesz wykorzystać ten czas na wdrożenie warunków przyspieszania, zwalniania, a nawet zakończenia gry. Wiele gier wprowadza koncepcję Bullet Time, w której akcja zwalnia na krótki czas.

Korzystając z funkcji kontroli czasu w PyGame, możesz łatwo zaimplementować takie funkcje — i nie tylko — we własnych grach.