You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Web-Dev-For-Beginners/translations/pl/6-space-game/1-introduction/assignment.md

5.2 KiB

Szkic gry: Zastosuj wzorce projektowe

Podsumowanie zadania

Wykorzystaj swoją nowo nabytą wiedzę o wzorcach projektowych, tworząc prosty prototyp gry! To zadanie pomoże Ci poćwiczyć zarówno wzorce architektoniczne (dziedziczenie lub kompozycję), jak i system komunikacji pub/sub, który poznałeś podczas lekcji.

Instrukcje

Stwórz prostą reprezentację gry, która demonstruje wzorce projektowe z tej lekcji. Twoja gra powinna być funkcjonalna, ale nie musi mieć skomplikowanej grafiki skup się na podstawowej architekturze i wzorcach komunikacji.

Wymagania

Wybierz wzorzec architektury:

  • Opcja A: Użyj dziedziczenia opartego na klasach (tak jak w przykładzie GameObjectMovableHero)
  • Opcja B: Użyj kompozycji (tak jak w podejściu fabryki funkcji z mieszanymi zachowaniami)

Zaimplementuj komunikację:

  • Dołącz klasę EventEmitter do wiadomości pub/sub
  • Skonfiguruj co najmniej 2-3 różne typy wiadomości (np. PLAYER_MOVE, ENEMY_SPAWN, SCORE_UPDATE)
  • Połącz wejście użytkownika (klawiatura/mysz) z zdarzeniami gry poprzez system zdarzeń

Elementy gry do zawarcia:

  • Co najmniej jedna postać sterowana przez gracza
  • Co najmniej jeden inny obiekt gry (wróg, przedmiot do zbierania lub element środowiska)
  • Podstawowa interakcja między obiektami (kolizja, zbieranie lub komunikacja)

Proponowane pomysły na grę

Proste gry do rozważenia:

  • Gra w Węża segmenty węża podążają za głową, jedzenie pojawia się losowo
  • Wariacja Pong paletka reaguje na wejście, piłka odbija się od ścian
  • Gra Kolekcjonerska gracz porusza się, zbierając przedmioty i unikając przeszkód
  • Podstawy Tower Defense wieże wykrywają i strzelają do poruszających się wrogów

Wytyczne dotyczące struktury kodu

// Przykładowa struktura początkowa
const Messages = {
  // Zdefiniuj tutaj wiadomości swojej gry
};

class EventEmitter {
  // Twoja implementacja systemu zdarzeń
}

// Wybierz podejście oparte na klasach LUB kompozycji
// Przykład oparty na klasach:
class GameObject { /* base properties */ }
class Player extends GameObject { /* player-specific behavior */ }

// LUB przykład kompozycji:
const gameObject = { /* base properties */ };
const movable = { /* movement behavior */ };
function createPlayer() { /* combine behaviors */ }

Testowanie twojej implementacji

Sprawdź, czy twój kod działa poprzez:

  • Testowanie, czy obiekty się poruszają lub zmieniają po wywołaniu zdarzeń
  • Potwierdzenie, że wiele obiektów może reagować na to samo zdarzenie
  • Sprawdzenie, czy można dodać nowe zachowania bez modyfikowania istniejącego kodu
  • Zapewnienie, że wejście z klawiatury/myszy prawidłowo wywołuje zdarzenia gry

Wytyczne dotyczące przesłania

Twoje zgłoszenie powinno zawierać:

  1. Plik(i) JavaScript z implementacją Twojej gry
  2. Plik HTML do uruchamiania i testowania gry (może być prosty)
  3. Komentarze wyjaśniające, który wzorzec wybrałeś i dlaczego
  4. Krótka dokumentacja Twoich typów wiadomości i ich funkcji

Kryteria oceny

Kryterium Wzorowy (3 punkty) Wystarczający (2 punkty) Wymaga poprawy (1 punkt)
Wzorzec architektury Poprawna implementacja dziedziczenia LUB kompozycji z klarowną hierarchią klas/obiektów Użycie wybranego wzorca z drobnymi problemami lub niespójnościami Próba zastosowania wzorca, ale implementacja zawiera poważne błędy
Implementacja pub/sub EventEmitter działa poprawnie z wieloma typami wiadomości i prawidłowym przepływem zdarzeń Podstawowy system pub/sub działa z częściową obsługą zdarzeń System zdarzeń istnieje, ale nie działa niezawodnie
Funkcjonalność gry Co najmniej trzy interaktywne elementy komunikujące się za pomocą zdarzeń Dwa interaktywne elementy z podstawową komunikacją zdarzeń Jeden element reaguje na zdarzenia lub podstawowa interakcja
Jakość kodu Czysty, dobrze skomentowany kod z logiczną organizacją i nowoczesnym JavaScriptem Ogólnie zorganizowany kod z adekwatnymi komentarzami Kod działa, ale brakuje organizacji lub jasnych komentarzy

Punkty dodatkowe:

  • Kreatywne mechaniki gry, które pokazują ciekawe zastosowania wzorców
  • Wielorakie metody wejścia (zarówno zdarzenia z klawiatury, jak i myszy)
  • Skalowalna architektura łatwa do rozbudowy o nowe funkcje

Zastrzeżenie:
Niniejszy dokument został przetłumaczony za pomocą usługi tłumaczenia AI Co-op Translator. Mimo że staramy się o dokładność, należy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub niedokładności. Oryginalny dokument w języku źródłowym powinien być uznawany za źródło ostateczne. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia dokonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z korzystania z tego tłumaczenia.