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

93 lines
5.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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 `GameObject``Movable``Hero`)
- **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
```javascript
// 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
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Zastrzeżenie**:
Niniejszy dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/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.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->