Hogyan készítsünk Tic-Tac-Toe játékot Pythonban?

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.

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.

  Hogyan távolítsuk el az iPhone naptárvírusokat

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.
  Hogyan kaphat élő szószámlálást a Google Dokumentumokban a Chrome-ban

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.
  A legjobb MRTG-alternatívák a hálózatfelügyelet javítására 2020-ban

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?