Dowiedz się, jak mierzyć czas i wykorzystywać go do kontrolowania różnych aspektów gry.

Podczas tworzenia gier dodanie wydarzeń opartych na czasie może znacznie poprawić mechanikę rozgrywki i sprawić, że gry będą bardziej wciągające dla graczy. Włączając liczniki czasu, możesz wprowadzać wyzwania, tworzyć cele ograniczone czasowo lub dodawać poczucie pilności do niektórych elementów gry.

Stwórz prostą grę

Zacznij od stworzenia prostej gry, aby zrozumieć podstawy. Zbuduj grę, w której gracz może poruszać się w lewo iw prawo, i będzie jedna platforma. Utwórz nowy plik o nazwie prosta gra.py i zaimportować moduł zręcznościowy, który zapewnia niezbędne funkcjonalności do stworzenia gry.

Kod użyty w tym artykule jest dostępny w this Repozytorium GitHub i jest darmowy do użytku na licencji MIT.

Następnie zdefiniuj Okno gry klasa, która jest podklasą arkada. Okno. Wewnątrz klasy GameWindow zdefiniuj plik __w tym__ metoda, która inicjuje okno o określonej szerokości, wysokości i tytule.

The on_key_press

instagram viewer
metoda wykrywa naciśnięcia klawiszy strzałek w lewo lub w prawo. Naciśnięcie w lewo zmniejsza gracz_x o 10 jednostek, a naciśnięcie prawego przycisku zwiększa je o 10 jednostek. Ten pozwala graczowi się poruszać poziomo w oknie gry.

Aby uruchomić grę, zdefiniuj główną funkcję, utwórz instancję GameWindow, wywołaj metodę setup, aby skonfigurować okno gry, a na koniec uruchom pętlę gry za pomocą arcade.run().

Projektowanie struktury klasy Timer

Aby zaimplementować timery w swojej grze, możesz utworzyć klasę Timer z niezbędnymi atrybutami i metodami. Ta klasa zapewni funkcjonalności do uruchamiania timera, zatrzymywania go, pobierania czasu, który upłynął i sprawdzania, czy timer wygasł. Oto podstawowa struktura klasy Timer:

import czas

klasaRegulator czasowy:
pok__w tym__(ja, czas trwania):
własny.czas trwania = czas trwania
własny.czas_początkowy = 0
self.is_running = FAŁSZ

pokpoczątek(samego siebie):
self.start_time = czas.czas()
self.is_running = PRAWDA

pokzatrzymywać się(samego siebie):
self.is_running = FAŁSZ

pokget_elapsed_time(samego siebie):
Jeśli self.is_running:
powrót czas.czas() - własny.czas_początkowy
powrót0

pokstraciła ważność(samego siebie):
powrót self.get_elapsed_time() >= self.czas trwania

Klasa Timer zajmuje a czas trwania parametr w sekundach podczas inicjalizacji. Klasa zawiera atrybuty takie jak czas rozpoczęcia aby zapisać czas uruchomienia stopera, oraz biegnie aby śledzić stan timera.

The początek() metoda ustawia start_time na bieżący czas za pomocą czas czas() i ustawia is_running na PRAWDA. The zatrzymywać się() metoda po prostu ustawia is_running na FAŁSZ. The get_elapsed_time() Metoda oblicza czas, który upłynął, odejmując czas_początku od bieżącego czasu.

Jeśli licznik czasu jest uruchomiony, zwraca czas, który upłynął; w przeciwnym razie zwraca 0. The straciła ważność() Metoda sprawdza, czy czas, który upłynął, jest większy lub równy czasowi trwania, wskazując, że czasomierz wygasł.

Implementacja liczników czasu

Aby zademonstrować odliczanie w grze, możesz uruchomić stoper, gdy gracz naciśnie określony klawisz, na przykład spację. Wydrukuj odliczanie do konsoli za pomocą polecenia drukowania Pythona. Utwórz nowy plik o nazwie timer.py i dodaj kod z tymi aktualizacjami:

import czas

klasaOkno gry(arkada. Okno):
pok__w tym__(samego siebie):
super().__init__(SZEROKOŚĆ, WYSOKOŚĆ, „Prosta gra”)
self.player_x = SZEROKOŚĆ // 2
self.player_y = WZROST // 2
samowyzwalacz = samowyzwalacz (10)

pokon_key_press(ja, klucz, modyfikatory):
Jeśli klucz == klucz.zręcznościowy. PRZESTRZEŃ:
samowyzwalacz.start()

pokon_draw(samego siebie):
# Istniejący kod
Jeśli self.timer.is_running:
upłynął_czas = self.timer.get_elapsed_time()
r_time = self.timer.czas trwania - upływający_czas
pozostały_czas = maks (r_czas, 0)
wydrukować(f"Odliczanie: {pozostały czas:.1F} sekundy")

Upewnij się, że widzisz jednocześnie okno terminala i okno gry. Następnie naciśnij spację, a zobaczysz odliczanie czasu:

Obsługa zdarzeń timera i wyzwalanie akcji

Możesz także uruchomić funkcję, która rysuje prostokąt kiedy upłynie czas odliczania. Utwórz nowy plik o nazwie uchwyt zdarzenia.py i dodaj kod z poniższymi aktualizacjami:

pokon_draw(samego siebie):
# Istniejący kod
Jeśli self.timer.is_expired():
self.draw_rectangle()

pokrysuj_prostokąt(samego siebie):
arcade.draw_rectangle_filled (SZEROKOŚĆ // 2, WYSOKOŚĆ // 2, 100, 100, czerwony)

Poniżej znajduje się wyjście:

Wstrzymywanie, resetowanie i wznawianie stopera

Aby dodać funkcje wstrzymywania, resetowania i wznawiania stopera, możesz rozszerzyć Regulator czasowy klasa z odpowiednimi metodami. Oto przykład:

klasaRegulator czasowy:
# Istniejący kod

pokpauza(samego siebie):
self.duration -= self.get_elapsed_time()
self.is_running = FAŁSZ

pokResetowanie(samego siebie):
własny.czas_początkowy = 0
self.is_running = FAŁSZ

pokwznawiać(samego siebie):
self.start_time = czas.czas()
self.is_running = PRAWDA

Dodawanie wizualnej informacji zwrotnej do timera

Aby zapewnić wizualną informację zwrotną dla stopera, możesz umieścić elementy tekstowe lub graficzne na ekranie gry. Utwórz nowy plik o nazwie wizualny.py i dodaj kod z poniższymi aktualizacjami:

pokon_draw(samego siebie):
# Istniejący kod
Jeśli self.timer.is_running:
tekst = f"Odliczanie: {pozostały czas:.1F} sekundy"
arcade.draw_text (tekst, 10, 10, czarny, 18)

Teraz zobaczysz licznik czasu bezpośrednio w oknie gry zamiast na konsoli:

W tym dodatkowe funkcje

Aby jeszcze bardziej ulepszyć wydarzenia oparte na czasie, możesz rozważyć wprowadzenie w swoich grach następujących dodatkowych funkcji.

Ulepszenia lub bonusy oparte na czasie

Wprowadź ulepszenia lub bonusy, które pojawiają się okresowo w trakcie gry. Te ulepszenia mogą zapewniać tymczasowe zdolności, dodatkowe punkty, zwiększoną prędkość lub ulepszoną broń.

Ograniczając je w czasie, gracze muszą strategicznie zbierać je w określonych ramach czasowych, aby uzyskać przewagę. To dodaje ekscytacji i nagradza szybkie myślenie.

Wyzwania ograniczone czasowo

Twórz ograniczone czasowo wyzwania, w których gracze muszą wykonać zadanie w określonym czasie. Na przykład łamigłówka lub sekcja platformowa, która wymaga rozwiązania w określonym czasie.

To zmusza graczy do szybkiego myślenia i działania, dodając ekscytującego poczucia pilności do rozgrywki. Pomyślne ukończenie tych wyzwań może odblokować nagrody lub rozwinąć historię.

Przeszkody czasowe lub wrogowie

Implementuj czasowe przeszkody lub wrogów, którzy stanowią zagrożenie dla gracza. Na przykład ruchome platformy, które pojawiają się i znikają w regularnych odstępach czasu lub wrogowie, którzy stają się niezwyciężeni przez ograniczony czas.

Gracze muszą odpowiednio zaplanować swoje działania i ruchy, aby pokonać te przeszkody lub pokonać wrogów, zanim skończy się czas. Dodaje to do rozgrywki warstwę strategii i koordynacji.

Najlepsze praktyki dotyczące wydarzeń opartych na czasie

Podczas wdrażania wydarzeń opartych na czasie w swoich grach konieczne jest przestrzeganie tych najlepszych praktyk.

Testuj i równoważ

Dokładnie przetestuj swoje wydarzenia oparte na czasie, aby upewnić się, że są sprawiedliwe i zrównoważone. Dostosuj czas trwania, poziom trudności i nagrody, aby zapewnić przyjemne wrażenia z rozgrywki.

Odpowiedź zwrotna użytkownika

Zapewnij graczom jasne i intuicyjne informacje zwrotne dotyczące statusu stopera i wszelkich wydarzeń opartych na czasie. Dodanie efektów dźwiękowych, wizualne wskaźniki lub wskazówki tekstowe mogą pomóc graczom zrozumieć ograniczenia czasowe i konsekwencje ich działań.

Spójny pomiar czasu

Używaj spójnego systemu pomiaru czasu w całej grze. Na przykład użyj sekund jako jednostki dla wszystkich liczników czasu i obliczeń związanych z czasem. Zapewnia to spójność i łatwość zrozumienia zarówno dla graczy, jak i programistów.

Uchwyty na krawędzie

Rozważ scenariusze, w których gra może być wstrzymana, zminimalizowana lub działająca w tle. Postępuj w takich sytuacjach z wdziękiem, aby zachować dokładne wyczucie czasu i zapobiec niezamierzonym zachowaniom po wznowieniu gry.

Postępując zgodnie z tymi najlepszymi praktykami, możesz tworzyć wydarzenia oparte na czasie, które ulepszają rozgrywkę, rzucają wyzwanie graczom i zapewniają zrównoważone i przyjemne wrażenia.

Uatrakcyjnianie gier dzięki wydarzeniom opartym na czasie

Włączając wydarzenia oparte na czasie do swoich gier, możesz stworzyć dynamiczne i wciągające doświadczenie dla graczy. Wyzwania ograniczone czasowo dodają ekscytacji i pilności, podczas gdy czasowe ulepszenia lub przeszkody mogą stworzyć możliwości podejmowania strategicznych decyzji.

Eksperymentuj z różnymi mechanizmami opartymi na czasie, aby znaleźć odpowiednią równowagę dla swojej gry, i pamiętaj o testowaniu i iteracji, aby zmaksymalizować zabawę i przyjemność.