Obsługa tury gracza.
Jak dobrze wiesz, gra kółko i krzyżyk jest grą turową, w której gracze naprzemiennie uzupełniają pola na planszy. Musimy więc napisać skrypt, który pozwoli nam uzupełniać nasze pola odpowiednimi znakami.
Stworzymy więc funkcję handle_turn(player)
. Musimy w niej wyświetlić informację, którego gracza dotyczy dana tura. Skorzystamy więc z funkcji print
, która wyświetli “nazwę gracza” i odpowiedni tekst. Definiując więc działanie naszej funkcji wpisujemy print(player + " twoja kolej")

Zawrzemy w niej również zmienną position, która będzie przechowywać wartość wpisaną przez użytkownika. Skorzystamy więc z funkcji input. Zrób to w ten sposób:

W efekcie otrzymamy możliwość umieszczenia swojego symbolu poprzez wykorzystanie funkcji input, a nasz system przed każdą taką operacją wyświetli tekst “Wybierz pozycję od 1 do 9:”.
Musimy również zabezpieczyć naszą grę przed wybraniem przez użytkownika innej pozycji lub wpisaniem innego znaku niż te które mamy dostępne na planszy (od 1 do 9). Możemy w tym wypadku skorzystać z pętli, która będzie sprawdzać. czy użytkownik podał jedną z poprawnych wartości.
W naszym kodzie umieść wyrażenie while position not in ["1", "2", "3", "4", "5", "6", "7", "8", "9"]:
, które w prostym tłumaczeniu oznacza, że jeżeli pozycja nie jest jednym ze znaków określonych w nawiasie kwadratowym to wywoła ono odpowiednie działanie.
Takim działaniem będzie wyświetlenie tekstu “Błędna wartość. Wybierz pozycję od 1 do 9:” i znowu próba przypisania tej wartości do zmiennej position
, poprzez skorzystanie z funkcji input
.
Wewnątrz naszego wyrażenia while position not in ["1", "2", "3", "4", "5", "6", "7", "8", "9"]:
umieść kod: position = input("Błędna wartość. Wybierz pozycję w przedziale 1-9: ")
Powinno to wyglądać w całości następująco:

Nasza wartość w position jest aktualnie stringiem (czyli ciągiem znaków). Musimy ją zmienić na wartość liczbową, przyjmiemy do tego liczby całkowite, czyli skorzystamy z funkcji int
.
Wystarczy, że w następnej linijce naszego kodu umieścisz kolejną zmienną:

Musimy również napisać skrypt, który będzie odpowiadał za podanie informacji, że pozycja wybrana przez gracza została już uzupełniona i nie można jej wybrać. Żeby to zrobić skorzystamy z warunku if
.
Wystarczy, że wewnątrz funkcji handle_turn(player)
umieścisz warunek sprawdzający, czy wybrana pozycja na planszy nie jest myślnikiem i w momencie, w którym ten warunek zostanie spełniony wyświetlisz informację tekstową: “To miejsce na planszy jest już zajęte. Możesz do tego wykorzystać jeden z dostępnych w pythonie operatorów”.
W poprzednich lekcjach korzystaliśmy z operatora równości “==”. Jeżeli chcemy użyć operacji przeciwnej, która będzie oznaczała “nie równa się” to możesz użyć operatora “!=”.
Zrób to w następujący sposób:

Dodajmy jeszcze na końcu naszej funkcji handle_turn(player)
zmienną board[position] = player
, oraz ponowne wyświetlenie naszej planszy poprzez wywołanie funkcji display_board()
.
Cały Twój kod po tej lekcji powinien wyglądać następująco:

To już wszystko w tej lekcji. W następnej części naszego mini szkolenia, zajmiemy się stworzeniem skryptu, który sprawdzi czy gra została zakończona.