Wizja - wladekpal/The-Lazy-Snek GitHub Wiki

Krótki opis projektu

Celem projektu jest stworzenie desktopowej gry logicznej. Gra będzie polegała na zarządzaniem ruchem węży na dwuwymiarowej planszy zbudowanej z prostokątnych pól za pomocą stawiania na wybranych polach planszy bloków modyfikujących ruch lub inne zachowania węży w taki sposób, aby umożliwić wybranym wężom dotarcie do odpowiednim wyjść. Będzie także udostępniała edytor poziomów, umożliwiający użytkownikom tworzenie własnych, niestandardowych poziomów (własny kształt planszy, wybranie odpowiedniej ilości udostępnianych przechodzącemu bloków). Niestandardowe poziomy będzie można eksportować oraz importować z pliku, dzięki czemu użytkownicy będą mogli w prosty sposób udostępniać innym tworzone przez siebie poziomy.

Grupy użytkowników

Gracze – przechodzący poziomy gry
Twórcy poziomów – tworzący niestandardowe poziomy za pomocą udostępnianego w grze edytora

Funkcjonalności

  1. Menu główne
    1. Wybór poziomów
    2. Dostęp do edytora poziomów
    3. Dostęp i zarządzanie poziomami utworzonymi w edytorze poziomów (eksport/import/usuwanie).
  2. Przechodzenie poziomów
    1. Wyświetlanie planszy.
    2. Wyświetlanie dostępnych do umieszczenia na planszy bloków.
    3. Umieszczanie bloków na planszy za pomocą przeciągania (drag and drop).
    4. Ruch węży na planszy, odpowiednia interakcja z blokami.
    5. Animowana symulacja poziomu przy aktualnym rozmieszczeniu bloków na planszy sprawdzająca, czy próba przejścia poziomu przy tym rozmieszczeniu kończy się sukcesem. Symulacja powinna móc być zatrzymywania, wznawiana, przerywana, restartowana.
    6. Opcja symulacji poziomu w formie step-by-step (symulowanie pojedynczo każdej jednostki czasu), z możliwością cofania.
    7. W każdym poziomie dodatkowe menu (wyjście, wybór poziomu, poprzedni/następny poziom).
  3. Implementacja mechanik i odpowiadających im bloków.
    1. Implementacja szkieletu mechanik pozwalającego łatwo i sensownie dodawać nowe bloki.
    2. Dodanie mechanik do gry przy jego pomocy.
  4. Zapisywanie poziomów w formie plików.
    1. Tworzenie, zapisywanie, odczytywanie i interpretowanie plików z poziomami przez aplikację.
    2. Eksplorator plików, pozwalający wybrać plik, z którego importowany jest poziom bądź folder, do którego będzie eksportowany.
  5. Edytor poziomów
    1. Możliwość utworzenia planszy o wybranym kształcie i rozstawieniu bloków.
    2. Dodanie bloków dostępnych przechodzącemu poziom z puli istniejących w grze bloków.
    3. Zapisywanie utworzonego poziomu.
  6. Instalator gry, umożliwiający instalację z pobranego pliku bez dodatkowych wymagań.
  7. Poziomy dostępne w podstawowej wersji gry.

Technologie

Projekt zostanie napisany przy pomocy języka Python (kod źródłowy oraz testy). W części odpowiadającej za rozgrywkę wykorzystana zostanie biblioteka Pygame.

Narzędzia

Repozytorium kodu: Github
Continous Integration: Github Actions
Issue Tracker + Backlog: projekt na Github