Hogyan készítsünk Tic Tac Toe játékot Python ahol Code Példa

⚡ Okos összefoglaló

Amőba be Python egy kezdőknek is megfelelő projekt, amely újraalkotja a klasszikus kétszemélyes rácsos játékot. A projekt megépítése olyan alapvető készségeket fejleszt, mint a ciklusok, feltételes utasítások, listák, függvények és rekurzió, miközben a sorokat, oszlopokat és átlókat ellenőrzi a győztes megtalálása érdekében.

  • 🎮 játékmenet: Két játékos jelöli az X-et és az O-t egy négyzetrácson, amíg az egyik be nem fejez egy sort, oszlopot vagy átlót.
  • 🧩 Alapvető logika: A beágyazott listák tárolják a táblát, míg a ciklusok és a feltételes utasítások irányítják a köröket, és észlelik a győzelmet vagy döntetlent.
  • 🏗️ Építési lépések: Hozd létre a táblát, válaszd ki a kezdőjátékost, gyűjtsd össze a válaszokat, jelöld meg a cellákat, majd minden körben ellenőrizd, hogy ki nyer.
  • 🔁 Replay: Egy rekurzív play() hívás újraindítja a meccset, és a bemeneti validáció blokkolja a foglalt vagy tartományon kívüli lépéseket.
  • 🤖 Mesterséges intelligencia relevanciája: Ugyanez a tábla ideális játszótér a minimax algoritmus és a megerősítéses tanuláson alapuló ágensek számára.
  • 🇧🇷 Eszközök: Csak Python és egy szerkesztő, mint például PyCharm szükségesek; külső könyvtárakra nincs szükség.

Tic Tac Toe játék Python

Tic Tac Toe játék Python egy érdekes projekt, amit kipróbálhatsz. Ez egy klassz és szórakoztató projekt, amiben kihívásokat oldasz meg, és segíthet elsajátítani az alapvető fogalmakat. PythonEgy szórakoztató amőba játék megalkotása segít fejleszteni a képességeidet.

Használhatsz jót Python szerkesztő, mint például PyCharm vagy a parancssori felületen.

Hogyan kell játszani a Tic Tac Toe játékot?

A Tic Tac Toe egy egyszerű kétszemélyes játék, amit bárki játszhat játéktábla nélkül. A játékban két játékos jelöli meg a különböző cellákat, amíg győzelemmel vagy döntetlennel nem ér véget.

Így kell játszani a Tic Tac Toe játékot.

Step 1) A Tic Tac Toe játék üres négyzetrácsos cellákkal kezdődik. Ez a Tic Tac Toe tábla.

Step 2) Mindkét játékos két szimbólum közül választhat, általában X vagy Os. A játékban bármilyen más egyedi szimbólumot használhatsz.

Step 3) A soron lévő játékos felváltva tölti ki a Tic Tac Toe tábla celláit, amíg egy játékos el nem éri a nyerő kombinációt. Ez egy teljes sor, oszlop vagy átló ugyanazzal az előjellel.

Step 4) Döntetlen akkor is lehetséges, ha minden cella tele van, és nincs látható győztes.

követelmények

A Tic Tac Toe építése Python a projekthez kezdő szintű ismeretekre van szükség Python programozási nyelv. Magában foglalja a „for” ciklusok és iterációk megértését, valamint azt, hogy mire használják az if utasítást a Python.

Neked is kell Python és egy Python szövegszerkesztő telepítve a számítógépére a Tic Tac Toe kitöltéséhez Python projekt. Mivel ez egy kezdő szintű Amőba játék Python, semmire sem lesz szükséged Python könyvtár.

Szükséged lehet némi hibakeresési készségre ahhoz, hogy megoldásokat találj a kódodban található hibákra, és a játék összetevőinek megfelelő ismeretével is rendelkezned kell.

Tic Tac Toe Python Algoritmus

Kövesd az alábbi lépéseket egy Amőba játék létrehozásához a következőben: Python programozási nyelv:

Step 1) Készítsd el a táblát a Tic Tac Toe játék elkezdéséhez.

Step 2) Kérje meg a felhasználót, hogy döntse el a játéktábla méreteit.

Step 3) Véletlenszerűen válassza ki az első játékost.

Step 4) Elkezdődött a Tic Tac Toe játék.

Step 5) A játékosok úgy játszanak, hogy kiválasztanak egy üres helyet a táblán.

Step 6) Töltse ki a kiválasztott üres helyet a játékos jelével.

Step 7) Határozza meg, hogy egy játékos nyer-e vagy döntetlent ér-e el a játékban a játék logikájával.

Step 8) Minden játék után jelenítse meg a játéktáblát, ha egyik játékos sem nyer, vagy döntetlent ér el a második játékossal.

Step 9) Döntetlen vagy nyerő üzenet megjelenítése.

Step 10) Fejezd be a Tic Tac Toe játékot egy új játék indításának lehetőségével.

Tele Python kód a tic tac toe-hoz

# Guru99
# Code developed by Guru99.com
# Guru99 tic-tac-toe game
#Get input
def getInput(prompt, cast=None, condition=None, errorMessage=None):
  while True:
      try:
          val = cast(input(prompt))
          assert condition is None or condition(val)
          return val
      except:
          print(errorMessage or "Invalid input.")
# Print the game board
def printBoard(board):
  print()
  for row in board:
      print(*row)
  print()
# Check if player won using the winning combinations
def checkWin(board):
  # Check rows
  for row in range(len(board)):
      for col in range(len(board)-1):
          if board[row][col] == "_" or board[row][col+1] == "_" or board[row][col] != board[row][col+1]:
              break
      else:
          return True
  # Check column numbers
  for col in range(len(board)):
      for row in range(len(board)-1):
          if board[row][col] == "_" or board[row+1][col] == "_" or board[row][col] != board[row+1][col]:
              break
      else:
          return True
  # Check left diagonal
  for cell in range(len(board)-1):
      if board[cell][cell] == "_" or board[cell+1][cell+1] == "_" or board[cell][cell] != board[cell+1][cell+1]:
          break
  else:
      return True
  # Check right diagonal
  for cell in range(len(board)-1):
      emptyCell = board[cell][len(board)-cell-1] == "_" or board[cell+1][len(board)-cell-2] == "_"
      different = board[cell][len(board)-cell-1] != board[cell+1][len(board)-cell-2]
      if emptyCell or different:
          break
  else:
      return True
  # No win
  return False
# Play tic tac toe game
def play():
  # Introduction
  print("------------\nN-DIMENSIONAL TIC TAC TOE game by guru 99.com \n------------")
  # Set up variables
  N = getInput(prompt="Guru99 says>>> Enter N, the dimensions of the board: ",
               cast=int,
               condition=lambda x: x >= 3,
               errorMessage="Invalid input. Please enter an integer greater than or equal to 3 as explained on guru99.com")
  board = [['_'] * N for _ in range(N)]
  used = 0
  turn = 0
  # Play guru99 tic tac toe game in Python using while infinite loop
  while True:
      # Print guru99 tic tac toe game board
      printBoard(board)
      # Get user pick
      pick = getInput(prompt=f"Player {turn+1} - Pick location (row, col): ",
                      cast=lambda line: tuple(map(int, line.split(" "))),
                      condition=lambda pair: min(pair) >= 0 and max(pair) < N and board[pair[0]][pair[1]] == "_",
                      errorMessage="Invalid input. Please enter a valid, unoccupied location as an integer pair.")
      # Populate location
      board[pick[0]][pick[1]] = "X" if turn == 0 else "O"
      used += 1
      # Check for win
      #Guru99 tutorial
      if checkWin(board):
          printBoard(board)
          print(f"Game over, Player {turn+1} wins.")
          break
      # Check for tie
      elif used == N*N:
          printBoard(board)
          print("Game over. Players have tied the match.")
          print("Guru99.com tic tac toe game ")
          break
      # If no win yet, update next user
      turn = (turn+1)%2
  # Check for rematch
  playAgain = getInput(prompt="Play Guru99 tic tac toe_Game again? (y/n): ",
                       cast=str,
                       condition=lambda ans: ans.strip("\n").lower() in {"y", "n"},
                       errorMessage="Invalid input. Please enter 'y' or 'n'.")
  if playAgain == 'n':
      # End the game
      print("\nGuru99 TicTacToe game ended.")
      return
  else:
      # Rematch
      play()
# Main
if __name__ == '__main__':
  play()

Tic Tac Toe Python Code teljesítmény

Miután lefuttattad a fenti forráskódot, a 3 x 3-as amőba tábla várható kimenetét láthatjuk:

------------
N-DIMENSIONAL TIC TAC TOE game by guru 99.com
------------
Guru99 says>>> Enter N, the dimensions of the board: 3

_ _ _

_ _ _

_ _ _

Player 1 - Pick location (row, col): 1 1

_ _ _

_ X _

_ _ _

Player 2 - Pick location (row, col): 0 1

_ O _

_ X _

_ _ _

Player 1 - Pick location (row, col): 1 2

_ O _

_ X X

_ _ _

Player 2 - Pick location (row, col): 0 2

_ O O

_ X X

_ _ _

Player 1 - Pick location (row, col): 1 0

_ O O

X X X

_ _ _

Game over, Player 1 wins.
Play Guru99 tic tac toe_Game again? (y/n):

Tele Code Bontás

létrehozása Amőba be Python egyszerű. Bontsuk szét a különböző függvényeket bitekre, hogy megértsük, mi történik az egyes sorokban:

A tábla nyomtatása

A Tic Tac Toe tábla a játék fő kijelzője. Python, egy ablak szolgál a játéktábla bemutatására.

Íme a lépések, amelyek segítenek létrehozni egy Amőba táblát Python:

Python kód a Tic Tac Toe számára

def getInput(prompt, cast=None, condition=None, errorMessage=None):
   while True:
       try:
           val = cast(input(prompt))
           assert condition is None or condition(val)
           return val
       except:
           print(errorMessage or "Invalid input.")
# Print the board
def printBoard(board):
   print()
   for row in board:
       print(*row)
   print()
N = getInput(prompt="Guru99 says>>> Enter N, the dimensions of the board: ",
            cast=int,
            condition=lambda x: x >= 3,
            errorMessage="Invalid input. Please enter an integer greater than or equal to 3 as explained on guru99.com")
board = [['_'] * N for _ in range(N)]
used = 0
turn = 0
printBoard(board)

Code kimenet:

------------
N-DIMENSIONAL TIC TAC TOE game by guru 99.com
------------
Guru99 says>>> Enter N, the dimensions of the board: 3

_ _ _

_ _ _

_ _ _

Tic Tac Toe Game – nyerő elrendezés

Annak ellenőrzéséhez, hogy valamelyik játékos nyert-e, ellenőriznünk kell a nyerő kombinációkat a sorok, oszlopok és átlók között. Ha van nyertes, meg kell mutatnunk a nyertes üzenetet.

Sorok

  • A sor esetében a függvény minden egymást követő oszloppárt vesz, és ellenőrzi a nyerő kombinációt.
  • Az a játékos nyer, aki először tölti ki a sorokat. Így a második játékos veszít.
  • Ha két egymást követő oszlop azonos, akkor nyilvánvaló, hogy az adott sorban lévő összes elem azonos.
  • Ha ezek közül kettő különbözik, vagy a sor üres cellát tartalmaz, még mindig nincs győztes.
  • Ezután végrehajtjuk a vesztes feltételeket, és szünetet adunk hozzá. Ha bármelyik vesztes feltétel igaz, akkor nem volt nyertesünk a bejelölt sorban.
  • Az else állítás valódi hozamot ad, amely megmutatja, hogy van győztes.
  • A törés kitör ebből a hurokból, és továbblép a következő sorba.

Oszlopok

Az oszlopoknál ugyanazt a funkciót ismételjük meg, mint a soroknál. Ellenőrizzük, hogy egy játékos nyert-e, miután minden játékos kiválasztotta a helyét.

Az átlós sor nyer

A bal átló esetében a feladat egyszerűbbé válik. Mindig az átlókban lévő cellákat fogjuk összehasonlítani. Abban az esetben azonban, ha nincs nyertes, folytathatjuk a következő utasítással.

Játék logika

Ez a játék fő funkciója. Ehhez használhatunk információkat tároló változókat.

  • Az első változó az „N”-ben tárolt táblaméret. A játék megkapja a tábla méretét, miután megkéri a felhasználót, hogy írjon be egy számot.
  • Tehát, amikor megadja az értéket, az feldolgozásra kerül.
  • Egy hibaüzenetet is készítünk, amely megmutatja a játékosoknak, ha érvénytelen számot írnak be.
  • Ezután létrehozhatunk két változót, amelyek kitöltik az „X”-et vagy az „O”-t, amikor egy cellát kitöltenek.
  • Ezután mutasd meg a játékosoknak a játéktáblát. Ezt követően kérje le a lejátszó bemeneti adatait.
  • A logika ezután kitöltöttnek jelöli a kiválasztott cellát, és ellenőrzi, hogy nyer-e vagy döntetlen van-e.
  • Ha nincs győztes, a játék felkéri a következő játékost, hogy játsszon. Ha győzelem vagy döntetlen van, a játék megkérdezheti a felhasználókat, hogy szeretnének-e új játékot.

GYIK

Igen. A Tic Tac Toe egy klasszikus kezdő projekt, amely ciklusokat, feltételes utasításokat és függvényeket működőképes játékká alakít. Önbizalmat épít, megerősíti az alapvető szintaxist, és felkészít nagyobb projektekre külső könyvtárak használata nélkül.

Megerősíti a beágyazott listákat a táblához, a for és while ciklusokat a körökhöz, az if utasításokat a győzelmi ellenőrzésekhez, a függvényeket a struktúrához és a rekurziót az újraindításhoz. Ezek az alapok közvetlenül átvihetők a haladóbb játékokba. Python programokat.

Igen. A konzolos verzión túl olyan könyvtárak, mint a Tkinter és a Pygame, kattintható gombokat, rajzolt rácsot és egérbevitelt adnak hozzá. A játék logikája ugyanaz marad; csak a megjelenítési és beviteli rétegek változnak.

A Tic Tac Toe egy megoldott játék. Amikor mindkét játékos optimálisan játszik, minden fenyegetést ki lehet blokkolni, így senki sem tudja kikényszeríteni a győzelmet. Ezért van az, hogy egy hibátlan meccs, legyen az ember vagy számítógép, mindig döntetlennel végződik.

Egy alap konzolos verzió elsajátítása egy-három órát vesz igénybe egy kezdő számára, miután a ciklusok és a feltételes utasítások ismerősnek bizonyulnak. Bevitel-ellenőrzés, skálázható tábla vagy grafikus felület hozzáadásával a projekt egy hétvégnyi gyakorlásra bővíthető.

Cserélj le egy játékost egy minimax függvénnyel. A függvény rekurzívan vizsgálja az összes lehetséges lépést, kiszámolja a győzelmeket, vereségeket és döntetleneket, majd kiválasztja a legjobb garantált eredményt adó lépést. Egy kis táblán ez lehetetlenné teszi a számítógép legyőzését.

Igen. A megerősítéses tanulási ágensek, mint például a Q-learning, több ezer játék lejátszásával és a nyerő lépések jutalmazásával fejlődnek. A táblák tömbökként tárolódnak numpy, lehetővé téve a modell számára, hogy egy közel optimális stratégiát tanuljon meg fixen kódolt szabályok nélkül.

Igen. A GitHub Copilot és hasonló mesterséges intelligencia asszisztensek képesek a tábla állványozására, a körök ciklusára és a győzelmi pontok kiszámítására egy rövid promptból. A kimenetet első vázlatként kell kezelni, majd a szélső eseteket, például a döntetleneket és az érvénytelen lépéseket, saját kezűleg kell tesztelni.

Foglald össze ezt a bejegyzést a következőképpen: