Skip to content

dawidnolove/app-solitaire-cli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

! Stworzone na Python 3.13.3 !

PASJANS (SZCZECIN SOLITAIRE)

szczecin-solitaire-png

URUCHOMIENIE

instalacja zależności > pip install -r requirements.txt

start gry > python main.py

(oczywiście będąc w katalogu głównym nazwanym zgodnie z wytycznymi

STEROWANIE
  • 1-7 - Wybór kolumny z której chcemy przenieść
  • d - dobranie z talii
  • f - przeniesienie na stos końcowy (może być wpisane w dowolnym momencie gry, samo dobiera która kartę położyć - oczywiście zgodnie z zasadami)
  • w - z kart dobranych (odrzuconych z talii) przenosi aktualną do wybranej kolumny lub na stos
  • u - cofa ostatnie 3 ruchy (pojedynczo)
  • l - zmienia poziom trudności (przełącza między nimi)
  • q - wychodzi z gry ale potrzebuje potwierdzenia
  • wq - (jak w vimie) wychodzi natychmiast
STEROWANIE DODATKOWE

Zaimplementowałem możliwości 'cheatowania' aby urozmaicić rozgrywkę.

  • win - wywołuję metodę _handle_win() symulując wygraną
  • lose - wywołuję metodę _handle_lose() symulując przegraną
  • show_cards=1 - pokazuje wszystkie zakryte karty
  • show_cards=0 - przywraca stan sprzed wykonania show_cards=1
ARCHITEKTURA
  • klasa Game (core.py) - kieruje stanem gry
    • draw_from_stock() - dobiera karty
    • move_between_columns() - zaimplementowana logika przenoszenia kart między sobą
    • undo_move() - cofnięcie ruchu, po walidacji, przywrócenie stanu
    • check_lose_condition() - sprawdza możliwość dalszych ruchów, gdy brak - przegrywa się
  • klasa Card (cards.py) - jako pojedyńcza karta
    • rank - atrybut wartości karty (1-13)(As-Król)
    • suit - kolor (♥♦♣♠)
    • face_up - gdy karta odkryta
  • klasa MoveHandler (moves.py) - logika ruchów
  • klasa GameDisplay (display.py) - większość interfejsu tu jest renderowane
    • show_win_screen() - generuje wygląd po wygranej
  • klasa InputHandler (input_handler.py) - ma metody dla różnych komend, akcji
FUNKCJONALNOŚCI
  • Zastosowanie zasad pasjansa.
  • Różnica w barwach poszczególnych kart.
  • Automatyczne odkrywanie kart po przeniesieniu.
  • Przenoszenie kart między kolumnami (1-7).
  • Przenoszenie na stos końcowy (f).
  • Dobieranie kart z talii (d).
  • Cofanie ruchów (u, max 3 razy).
  • Zmiana poziomu trudności (l) - 1 lub 3 karty dobiera z talii.
  • Szybkie wyjście (wq).
  • Zapisywanie wyników do pliku ranking.txt.
  • Automatyczne wykrywanie wygranej/przegranej.
  • Możliwość przenoszenia wielu kart naraz oraz cofanie takiego ruchu.
  • Wykrywanie możliwych ruchów lub ich braku - przegrana.
  • Informacje o błędnych ruchach.
  • Komunikaty dźwiękowe.
  • Podsumowanie gry po zakończeniu.
  • Melodia wygranej lub przegranej gry.
  • "Easter eggi" (win/lose/show_cards)
  • Zapisywanie wyników do rankingu.
  • Wyświetlanie top 10 wyników.
  • Po wpisaniu lose, możliwość restartu gry.
  • Podawanie czasu gry i liczby ruchów.
  • Licznik wykorzystanych cofnięć w czasie gry.
  • Licznik czasu podczas gry.
  • Licznik ruchów w czasie gry.
  • Automatyczne tasowanie na początku.
  • Możliwość przełożenia całej odrzutni z powrotem do talii po
  • przetasowaniu.
  • Weryfikacja poprawności ruchów.
  • Historia ruchów do cofania.
  • Automatyczne wykrywanie i przenoszenie odpowiednio na stos koncowy (f).
UWAGI

Dzięki colorama interfejs jest kolorowany.

Wyniki graczy są zapisywane w pliku ranking.txt.

Każdy ruch jest zapisywany w historii dla funkcji cofania.

Aby gra była jak najbardziej poprawna, przed rozpoczęciem programowania przećwiczyłem wszystkie kombinacje grając w przeglądarkową wersję, mimo to, nazwy stosów, innych elementów, nie zapewniam że są oficjalnie poprawne, mimo że starałem się. Ale ruchy, sytuacje i zasady wszystkie odzwierciedlone jak najbardziej mi się udało.

Czas w interfejsie, na bieżąco zmienia się po kazdym ruchu o rzeczywisty czas jaki minął, mimo że nie co sekundę na żywo, niestety nie dałem rady tego obsłużyć.

WYKONAŁ

dawidnolove

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages