! Stworzone na Python 3.13.3 !
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
- 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
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
- 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
- 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).
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ć.
dawidnolove
