Jak stworzyć grę w kółko i krzyżyk w Pythonie?
Opublikowany: 2021-08-19Stwórzmy prostą grę w kółko i krzyżyk w Pythonie. Pomoże ci zbudować logikę gry i zrozumieć, jak budować kod.
Gry to jedna z rozrywek, jakie mają ludzie. Możemy znaleźć różne rodzaje gier w Internecie, na urządzeniach mobilnych, na komputery itp. Nie jesteśmy teraz po to, aby tworzyć jedną z tych ciężkich gier. Zamierzamy stworzyć grę w kółko i krzyżyk CLI przy użyciu Pythona.
Jeśli nie znasz Tic Tac Toe, zagraj tutaj wizualnie, aby zrozumieć. Nie martw się, nawet jeśli tego nie rozumiesz, zobaczymy to.
Kółko i krzyżyk
Samouczek jest podzielony na trzy różne sekcje. W pierwszej części dowiesz się, jak grać w grę w kółko i krzyżyk. Następnie zobaczymy algorytm, który pomoże nam wymyślić logikę gry. Na koniec zobaczymy kod strukturalny i jego wyjaśnienie.
Możesz pominąć pierwszą sekcję, jeśli już wiesz, jak grać w Kółko i Krzyżyk.
Tak więc bez zbędnych ceregieli przejdźmy do naszej pierwszej sekcji.
Gra w kółko i krzyżyk
W grze będzie dwóch graczy. Dwa znaki reprezentują każdego gracza. Ogólne znaki używane w grze to X i O . Na koniec pojawi się plansza z 9 pudełkami.
Zobacz tablicę w kółko i krzyżyk wizualnie.

Rozgrywka będzie wyglądać następująco.
- Najpierw jeden użytkownik umieści swój znak w jednym z dostępnych pustych pól.
- Następnie drugi użytkownik umieści swój znak w jednym z dostępnych pustych pól.
- Celem graczy jest ułożenie odpowiednich znaków całkowicie w rzędach, kolumnach lub po przekątnej.
- Gra trwa, dopóki gracz nie wygra gry lub zakończyła się remisem, wypełniając wszystkie pola bez zwycięskiego meczu.
Zobaczmy kilka rozgrywek wizualnie.

Gracz X wygrywa grę w powyższej rozgrywce. Wszystkie pola po przekątnej wypełnione są znakami X. Tak więc odpowiedni gracz wygrywa grę.
Jest w sumie 8 sposobów na ułożenie tego samego znaku i wygranie gry. Zobaczmy wszystkie 8 aranżacji, które mogą wygrać grę.

I wreszcie remis zapełnia planszę bez zwycięskiego układu. Mam nadzieję, że teraz rozumiesz, jak Tic Tac Toe.
Teraz nadszedł czas na zabawę. Możesz przejść tutaj i zagrać, aby całkowicie zrozumieć rozgrywkę. Zostaw to, jeśli już to masz.
Teraz nadszedł czas, aby przenieść sekcję algorytmu.
Algorytm
Omówimy teraz algorytm pisania kodu. Ten algorytm pomoże Ci napisać kod w dowolnym wybranym przez Ciebie języku programowania. Zobaczmy, jak to się robi.
- Utwórz tablicę za pomocą dwuwymiarowej tablicy i zainicjuj każdy element jako pusty.
- Możesz przedstawić puste za pomocą dowolnego symbolu. Tutaj użyjemy łącznika.
'-'.
- Możesz przedstawić puste za pomocą dowolnego symbolu. Tutaj użyjemy łącznika.
- Napisz funkcję sprawdzającą, czy tablica jest wypełniona, czy nie.
- Iteruj po tablicy i zwracaj wartość
falsejeśli tablica zawiera pusty znak lub zwróćtrue.
- Iteruj po tablicy i zwracaj wartość
- Napisz funkcję sprawdzającą, czy gracz wygrał, czy nie.
- Musimy sprawdzić wszystkie możliwości, które omówiliśmy w poprzednim rozdziale.
- Sprawdź wszystkie rzędy, kolumny i dwie przekątne.
- Napisz funkcję, która pokaże planszę, ponieważ będziemy wielokrotnie pokazywać planszę użytkownikom podczas gry.
- Napisz funkcję uruchamiającą grę.
- Wybierz losowo pierwszą turę gracza.
- Napisz nieskończoną pętlę, która pęka po zakończeniu gry (wygraj lub zremisuj).
- Pokaż planszę użytkownikowi, aby wybrał miejsce na następny ruch.
- Poproś użytkownika o wprowadzenie numeru wiersza i kolumny.
- Zaktualizuj miejsce za pomocą odpowiedniego znaku gracza.
- Sprawdź, czy aktualny gracz wygrał grę, czy nie.
- Jeśli aktualny gracz wygrał grę, wydrukuj zwycięską wiadomość i przerwij nieskończoną pętlę.
- Następnie sprawdź, czy tablica jest wypełniona, czy nie.
- Jeśli tablica jest zapełniona, wydrukuj komunikat o losowaniu i przerwij nieskończoną pętlę.
- Na koniec pokaż użytkownikowi ostateczny widok tablicy.
Możesz być w stanie wyobrazić sobie, co się dzieje. Nie martw się, nawet jeśli nie zrozumiałeś tego do końca. Gdy zobaczysz kod, uzyskasz większą przejrzystość.

Przejdźmy więc do sekcji kodu. Zakładam, że masz zainstalowanego Pythona na swoim komputerze, aby wypróbować kod.
Kod
Przejdź przez poniższy kod.
import random class TicTacToe: def __init__(self): self.board = [] def create_board(self): for i in range(3): row = [] for j in range(3): row.append('-') self.board.append(row) def get_random_first_player(self): return random.randint(0, 1) def fix_spot(self, row, col, player): self.board[row][col] = player def is_player_win(self, player): win = None n = len(self.board) # checking rows for i in range(n): win = True for j in range(n): if self.board[i][j] != player: win = False break if win: return win # checking columns for i in range(n): win = True for j in range(n): if self.board[j][i] != player: win = False break if win: return win # checking diagonals win = True for i in range(n): if self.board[i][i] != player: win = False break if win: return win win = True for i in range(n): if self.board[i][n - 1 - i] != player: win = False break if win: return win return False for row in self.board: for item in row: if item == '-': return False return True def is_board_filled(self): for row in self.board: for item in row: if item == '-': return False return True def swap_player_turn(self, player): return 'X' if player == 'O' else 'O' def show_board(self): for row in self.board: for item in row: print(item, end=" ") print() def start(self): self.create_board() player = 'X' if self.get_random_first_player() == 1 else 'O' while True: print(f"Player {player} turn") self.show_board() # taking user input row, col = list( map(int, input("Enter row and column numbers to fix spot: ").split())) print() # fixing the spot self.fix_spot(row - 1, col - 1, player) # checking whether current player is won or not if self.is_player_win(player): print(f"Player {player} wins the game!") break # checking whether the game is draw or not if self.is_board_filled(): print("Match Draw!") break # swapping the turn player = self.swap_player_turn(player) # showing the final view of board print() self.show_board() # starting the game tic_tac_toe = TicTacToe() tic_tac_toe.start()Sprawdź przykładowe dane wyjściowe kodu.
$ python tic_tac_toe.py Player X turn - - - - - - - - - Enter row and column numbers to fix spot: 1 1 Player O turn X - - - - - - - - Enter row and column numbers to fix spot: 2 1 Player X turn X - - O - - - - - Enter row and column numbers to fix spot: 1 2 Player O turn XX - O - - - - - Enter row and column numbers to fix spot: 1 3 Player X turn XXO O - - - - - Enter row and column numbers to fix spot: 2 2 Player O turn XXO OX - - - - Enter row and column numbers to fix spot: 3 3 Player X turn XXOOX - - - O Enter row and column numbers to fix spot: 3 2 Player X wins the game! XXO OX - - XOKilka głównych punktów, które pomogą ci zrozumieć strukturę kodu.
- Użyliśmy klasy, aby wszystkie metody były w jednym miejscu. Może to być również pakiet wielokrotnego użytku w innym kodzie.
- Następnie zdefiniowaliśmy różne funkcje dla każdej odpowiedzialności, nawet jeśli jest to małe zadanie. Pomaga z łatwością utrzymać kod.
- Powyższe dwa podejścia pomagają nam bezproblemowo aktualizować aplikację, jeśli chcemy zaktualizować grę.
Zapraszam do dostosowywania konstrukcji i ulepszania jej w oparciu o swój projekt. Struktura kodu nie jest ograniczona.
Ostatnie słowa
Hurra! Stworzyłeś grę całkowicie od podstaw. Nie jest to jedna z gier wizualnych, w które gramy codziennie. Ale pomaga pisać logikę i utrzymywać czystą strukturę kodu. Postępuj zgodnie z podobnymi wytycznymi, aby stworzyć ciekawe gry, takie jak ta. Możesz znaleźć podobne gry, jeśli cofniesz się o kilka lat do swojego dzieciństwa.
Udanego kodowania!
Następnie dowiedz się, jak stworzyć grę zgadywania liczb i testy jednostkowe za pomocą modułu testów jednostkowych Pythona.
