Ta strona wykorzystuje pliki cookie w celu prezentacji dopasowanych dla Ciebie treści. Możesz włączyć/wyłączyć obsługę plików cookies w swojej przeglądarce.

Dowiedz się więcej

Czas na remis!

Jesteśmy już na ostatnim etapie tworzenia naszej gry w Pythonie. Brakuje nam jednak jeszcze definicji funkcji, która sprawdzi czy finał naszej gry to remis. Przecież nie zawsze musi być jeden zwycięzca.

Więc musimy sprawdzić czy na naszej tablicy występuje jakiś “-” jeżeli żaden nie występuje a nie nastąpiło zakończenie gry z powodu wygranej oznacza to, że mamy remis.

Jak to zrobić? Wcześniej stworzyliśmy funkcję i zostawiliśmy pustą jej definicję, która nazywa się def check_if_tie(). To ona będzie odpowiedzialna za szukanie remisu.

Pora na jej zdefiniowanie:

image

Wszystkie te elementy już znasz. Importujemy poprzez global naszą zmienną game_still_going, tworzymy instrukcję warunkową która oznacza że jeśli na naszej tablicy nie ma “-” (myślnika) to game_still_going przyjmuje wartość False. To powinno być jasne.

Możesz teraz odpalić swoją grę i sprawdzić czy zadziała jak wypełnisz całą tablicę! Powinno wyświetlić na końcu tekst “Remis!” zgodnie z naszą wcześniej stworzoną instrukcją warunkową:

image

Działa!? Super! Więc gra prawie skończona! Technicznie już wszystko powinno działać poprawnie, teraz to tylko dopracujemy!

Komunikacja gry z graczami

Gra już działa całkiem poprawnie, ale fajnie byłoby do niej dodać komunikację samego programu z użytkownikiem. Żeby to zrobić przejdźmy do naszego def_handle_turn(player). Możemy tam dodać powiadomienia systemowe, które będą informować, do którego z graczy należy aktualna tura. Dodaj poniższy fragment kodu:

image

To dość prosty fragment kodu, który powinieneś rozumieć. Odnosimy się w nim do zmiennej player a następnie wyświetlamy tekst “twoja kolej”.

Następnie musimy zadbać o informację, o podaniu przez użytkownika w naszym inpucie innego znaku lub znaków niż od 1 do 9, bo w tej chwili jak ktoś poda np. 11 to wyskakuje błąd w naszej konsoli. Nie wierzysz? Sprawdź.

Zrobimy to w poniższy sposób:

image

Sprawdzamy czy zmienna position przyjmowana przez input nie wynosi żadnej z podanych numerów. Wyświetlamy tekst “Błędna wartość. Wybierz pozycję w przedziale 1-9: “. Zrozumienie tego nie powinno Ci sprawić problemów. Jednak taka metoda jest w stanie sprawdzić się tylko w sytuacji w której mamy mało wartości do sprawdzenia. Gdyby nasza tablica składała się z dziesiątek słów, albo z setek wyrażeń trudno byłoby nam to sprawdzić w ten sposób. Od tego są inne funkcje, które możesz poznać na naszym bootcampie z Pythona.

W tej chwili po wpisaniu błędnego numeru system wyświetli naszą informację ale jeżeli kolejny raz ktoś wpisze błędna liczbę, to gra wyświetli błąd. Więc musimy skorzystać z pętli. Wystarczy, że podmienisz swoja funkcję if na funkcję while. Teraz system będzie pytał za każdym razem kiedy pojawi się błędna wartość. Cały Twój kod powinien wyglądać mniej więcej tak:

image

Twoja gra jest już skończona! Gratulacje udało Ci się dotrzeć do końca.

Zadanie dodatkowe!

Jak pewnie zauważyłeś w grze występuje możliwość nadpisania przez jednego z graczy, wcześniejszego wyboru drugiego gracza. Wykorzystaj zdobyta wiedzę i dopisz skrypt, który uniemożliwi nadpisywanie wyboru na tablicy.

Musimy w nim zmienić nasz “X” na zmienną player. Czyli będzie to wyglądać tak:

image