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

Tworzymy warunki dla wygranej.

W poprzedniej lekcji stworzyliśmy, kod który odpowiada za przyjmowanie informacji od użytkownika, które pole chce zaznaczyć w swojej turze, oraz zadbaliśmy o wyświetlenie informacji o błędnym ruchu. Stworzyliśmy również mechanizm, który sprawdza czy dane miejsce na planszy jest zajęte i wyświetla odpowiednią do tego wydarzenia informację.

Jak dobrze wiesz gra “kółko i krzyżyk” może zostać zakończona na cztery sposoby:

  • wygrana poprzez zaznaczenie przez jednego z graczy 3 pól poziomo
  • wygrana przez zaznaczenie przez jednego z graczy 3 pól pionowo
  • wygrana przez zaznaczenie przez jednego z graczy 3 pól po przekątnych
  • remis (czyli sytuacja w której wszystkie pola na planszy zostały zaznaczone, ale żadnemu z graczy nie udało się spełnić żadnego z poprzednich 3 warunków).

Do sprawdzenia, czy gra została zakończona poprzez spełnienie jednego z tych 4 warunków, użyjemy poznanych już przez Ciebie wcześniej instrukcji warunkowych if. Zanim jednak to zrobimy, zdefiniujemy sobie trzy funkcje sprawdzające warunki zwycięstwa.

Żeby sprawdzić czy w jednej z pionowych linii wystąpiło zwycięstwo, musisz zdefiniować funkcję, którą nazwiemy check_rows()

Wewnątrz niej wprowadzimy zmienną row_1, która sprawdzi czy board[0] , board[1], i board[2] z naszej tablicy są takie same, ale (i tu uwaga) inne niż “-”.

Żeby to zrobić wprowadź kod row_1 = board[0] == board[1] == board[2]

Jak widzisz, kod w tej chwili sprawdza i zapisuje w zmiennej row_1 informacje o tym, że pierwsze trzy pozycje na naszej “planszy gry” mają tą samą wartość.

Skorzystamy więc z operatora, który poznaliśmy w poprzedniej lekcji i na końcu naszej nowej linijki kodu dodamy != “-”. Powinno to wyglądać tak:

image

Przeanalizujmy to jeszcze raz. Zmienna row_1 w naszej funkcji otrzymuje wartość True albo False sprawdzając czy pozycje 0, 1, oraz 2 na naszej tablicy są sobie równe i żadna z nich nie jest myślnikiem.

Proste, prawda? Jak już się pewnie domyślasz należy tę czynność powtórzyć i zastosować do kolejnych wierszy z naszej tablicy gry, następnie zmienić nazwę zmiennej na row_2 i row_3 i odpowiednio dostosować pozycje z tablicy do odpowiednich pól. Tak jak poniżej:

image

Teraz w ramach tej funkcji musimy sprawdzić, czy w którymkolwiek wierszu warunek jest spełniony i zwrócić wtedy wartość True.

Możesz to zrobić następująco:

image

Musimy teraz stworzyć bardzo podobne zmienne dla wygranej pionowo (wg. kolumn), oraz zwycięstwa po przekątnej.

Zrobisz to w analogiczny sposób. Dla kolumn zdefiniujemy funkcję check_columns() i będzie to wyglądało tak:

image

i bardzo podobny skrypt dla przekątnych, w przypadku których definiujemy funkcję check_diagonals():

image

Jak dobrze wiesz, przekątne są tylko dwie a nie trzy, więc ten kod jest odrobinę krótszy.

Twój cały kod powinien w tej chwili wyglądać w następujący sposób:

image