Hozzunk létre egy egyszerű Tic Tac Toe játékot Pythonban. Segít a játék logikájának felépítésében és a kód felépítésének megértésében.
A játék az emberek egyik szórakozási lehetősége. Különféle játékokat találhatunk az interneten, mobilon, asztali számítógépen stb. Nem azért vagyunk itt, hogy ezek közül a nehéz játékok közül egyet készítsünk. CLI tic-tac-toe játékot fogunk létrehozni Python segítségével.
Ha nem ismeri a Tic Tac Toe-t, játssza le vizuálisan itt megérteni. Ne aggódj, még ha nem is érted, meglátjuk.
Tartalomjegyzék
Tic Tac Toe
Az oktatóanyag három különböző részre oszlik. Az első részben megtudhatja, hogyan kell játszani a tic-tac-toe játékot. Ezek után látni fogunk egy algoritmust, ami segít a játék logikájának kialakításában. Végül látni fogjuk a strukturált kódot és annak magyarázatát.
Kihagyhatja az első részt, ha már tudja, hogyan kell játszani a Tic Tac Toe-val.
Tehát minden további nélkül ugorjunk bele az első részbe.
Tic Tac Toe játék
Két játékos lesz egy játékban. Minden játékost két jel jelképez. A játékban használt általános jelek X és O. Végül lesz egy tábla 9 dobozzal.
Tekintse meg vizuálisan a tic-tac-toe táblát.
Tic Tac Toe tábla
A játék menete a következő lesz.
- Először egy felhasználó elhelyezi a jelét a rendelkezésre álló üres mezők egyikébe.
- Ezután a második felhasználó elhelyezi a jelét a rendelkezésre álló üres mezők egyikébe.
- A játékosok célja, hogy a megfelelő jeleiket teljesen soronként, oszloponként vagy átlósan helyezzék el.
- A játék addig tart, amíg egy játékos meg nem nyeri a játékot, vagy az összes mező kitöltésével döntetlenre végződik nyerő meccs nélkül.
Lássunk néhány játékmenetet vizuálisan.
Tic Tac Toe Win játékmenet
A fenti játékmenetben az X játékos nyeri meg a játékot. Minden doboz átlósan tele van X jelekkel. Tehát az adott játékos nyeri a játékot.
Összesen 8 módon lehet elrendezni ugyanazt a jelet és megnyerni a játékot. Lássuk mind a 8 elrendezést, amelyek megnyerhetik a játékot.
Tic Tac Toe nyerési megállapodások
És végül egy döntetlen tölti be a táblát nyerési megállapodás nélkül. Remélem, most már érted, hogyan kell Tic Tac Toe-t csinálni.
Most itt a játékidő számodra. Mehetsz itt és játszd le, hogy teljesen megértsd a játékmenetet. Hagyd, ha már megvan.
Most itt az ideje áthelyezni az algoritmus részt.
Algoritmus
Most megvitatjuk a kód írási algoritmusát. Ez az algoritmus segít kódot írni bármely választott programozási nyelven. Lássuk, hogyan készült.
- Hozzon létre egy táblát egy 2-dimenziós tömb segítségével, és inicializálja az egyes elemeket üresként.
- Bármelyik szimbólummal ábrázolhatja az ürességet. Itt kötőjelet fogunk használni. ‘-‘.
- Írjon egy függvényt annak ellenőrzésére, hogy a tábla megtelt-e vagy sem.
- Ismételje meg a táblát, és adja vissza hamis értékét, ha a tábla üres jelet tartalmaz, vagy adjon igazat.
- Írjon egy függvényt annak ellenőrzésére, hogy egy játékos nyert-e vagy sem.
- Meg kell vizsgálnunk az összes lehetőséget, amelyet az előző részben tárgyaltunk.
- Ellenőrizze az összes sort, oszlopot és két átlót.
- Írjon egy függvényt a tábla megjelenítéséhez, mivel a táblát többször is megmutatjuk a felhasználóknak játék közben.
- Írjon egy függvényt a játék elindításához.
- Véletlenszerűen válaszd ki a játékos első körét.
- Írj egy végtelen hurkot, amely megszakad, amikor a játék véget ér (győzelem vagy döntetlen).
- Mutasd meg a táblát a felhasználónak, hogy válassza ki a helyet a következő lépéshez.
- Kérje meg a felhasználót, hogy adja meg a sor és az oszlop számát.
- Frissítse a helyet a megfelelő játékos jelével.
- Ellenőrizze, hogy az aktuális játékos nyerte-e a játékot vagy sem.
- Ha az aktuális játékos nyerte a játékot, nyomtasson egy nyertes üzenetet, és szakítsa meg a végtelen hurkot.
- Ezután ellenőrizze, hogy a tábla megtelt-e vagy sem.
- Ha a tábla megtelt, nyomtassa ki a sorsolási üzenetet, és szakítsa meg a végtelen hurkot.
- Végül mutasd meg a felhasználónak a tábla végső nézetét.
Képes vagy elképzelni, mi történik. Ne aggódj, még ha nem is értetted meg teljesen. Ha látja a kódot, jobban érthető lesz.
Tehát ugorjunk a kód szakaszba. Feltételezem, hogy a Python telepítve van a számítógépére a kód kipróbálásához.
Kód
Menj át az alábbi kódon.
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()
Nézze meg a kód minta kimenetét.
$ 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 X X - O - - - - - Enter row and column numbers to fix spot: 1 3 Player X turn X X O O - - - - - Enter row and column numbers to fix spot: 2 2 Player O turn X X O O X - - - - Enter row and column numbers to fix spot: 3 3 Player X turn X X O O X - - - O Enter row and column numbers to fix spot: 3 2 Player X wins the game! X X O O X - - X O
Néhány fontosabb pont, amely segít megérteni a kód szerkezetét.
- Egy osztályt használtunk, hogy az összes metódus egy helyen legyen. Könnyen lehet újrafelhasználható köteg más kódokban is.
- Ezt követően minden felelősséghez más-más funkciót határoztunk meg, még ha kis feladatról is van szó. Segít a kód egyszerű karbantartásában.
- A fenti két megközelítés segítségével könnyedén frissíthetjük az alkalmazást, ha frissíteni akarjuk a játékot.
Nyugodtan módosíthatja a szerkezetet és javíthatja azt a projektje alapján. A kód felépítése nem korlátozott.
Végső szavak
Hurrá! 😎 Teljesen a semmiből készítettél egy játékot. Ez nem tartozik azon vizuális játékok közé, amelyeket naponta játszunk. De segít logikát írni és tiszta szerkezetet fenntartani a kódban. Kövesse a hasonló irányelveket az ehhez hasonló érdekes játékok létrehozásához. Hasonló játékokat találhat, ha néhány évet visszatekint gyermekkorába.
Boldog kódolást! 👩💻
Ezután fedezze fel, hogyan hozhat létre számkitaláló játékot és egységtesztet a Python egységteszt modullal.
Élvezettel olvasta a cikket? Mit szólnál a világgal való megosztáshoz?