Hvordan lage et Tic Tac Toe-spill i Python med Code Eksempel

⚡ Smart oppsummering

Tre på rad i Python er et nybegynnervennlig prosjekt som gjenskaper det klassiske rutenettspillet for to spillere. Å bygge det styrker kjerneferdigheter som løkker, betingelsesvalg, lister, funksjoner og rekursjon, samtidig som det sjekker rader, kolonner og diagonaler for en vinner.

  • 🎮 Gameplay: To spillere markerer X og O på et firkantet rutenett inntil én fullfører en rad, kolonne eller diagonal.
  • 🧩 Kjernelogikk: Nestede lister lagrer brettet mens løkker og betingede vilkår styrer tur og oppdager en seier eller uavgjort.
  • 🏗️ Byggetrinn: Lag brettet, velg den første spilleren, ta imot innspill, merk av feltene, og sjekk deretter for en vinner i hver runde.
  • 🔁 Replay: Et rekursivt play()-kall starter kampen på nytt, og inputvalidering blokkerer trekk som er okkupert eller utenfor rekkevidde.
  • 🤖 AI-relevans: Det samme brettet er en ideell lekeplass for minimax-algoritmen og forsterkningslæringsagenter.
  • 🛠️ Verktøy: Bare Python og en redaktør som f.eks. PyCharm er nødvendige; ingen eksterne biblioteker er påkrevd.

Tic Tac Toe Game i Python

Tic Tac Toe Game i Python er et interessant prosjekt du kan prøve. Det er et kult og morsomt prosjekt der du løser en utfordring, og det kan hjelpe deg med å mestre grunnleggende konsepter i PythonÅ lage et morsomt Tre på rad-spill hjelper deg med å utvikle ferdighetene dine.

Du kan bruke en god Python redaktør som f.eks. PyCharm eller kommandolinjegrensesnittet.

Hvordan spille Tic Tac Toe-spillet?

Tre på rad er et enkelt spill for to spillere som alle kan spille uten å trenge et spillbrett. Det innebærer at to spillere markerer forskjellige ruter til spillet ender med seier eller uavgjort.

Slik spiller du Tic Tac Toe-spillet.

Trinn 1) Tre-tre-tre-spillet starter med tomme felt i et firkantet rutenett. Dette er tre-tre-tre-brettet.

Trinn 2) Begge spillerne velger mellom to symboler, vanligvis Xs eller Os. Du kan bruke et hvilket som helst annet unikt symbol i spillet.

Trinn 3) Den nåværende spilleren markerer etter tur ved å fylle ut cellene på Tre-på-tre-brettet inntil en spiller fyller en vinnende kombinasjon. Det vil si en hel rad, kolonne eller diagonal med samme fortegn.

Trinn 4) Uavgjort er også mulig dersom alle feltene er fulle uten noen åpenbar vinner.

Krav

Bygge tre-på-tre Python prosjektet krever en forståelse på nybegynnernivå av Python programmeringsspråk. Det inkluderer forståelse av «for»-løkker og iterasjoner, og hva en if-setning brukes til i Python.

Du må også ha Python og en Python tekstredigeringsprogram installert på datamaskinen din for å fullføre Tic Tac Toe Python prosjekt. Siden dette er et Tic Tac Toe-spill på nybegynnernivå i Python, trenger du ikke noe Python bibliotek.

Du kan trenge noen feilsøkingsferdigheter for å finne løsninger på feil i koden din, og du bør også ha tilstrekkelig forståelse av spillkomponentene.

Tic Tac Toe Python Algoritme

Følg disse trinnene for å lage et Tic Tac Toe-spill i Python programmeringsspråk:

Trinn 1) Lag brettet for å starte Tic Tac Toe-spillet.

Trinn 2) Be brukeren om å bestemme dimensjonene til spillebrettet.

Trinn 3) Velg den første spilleren tilfeldig.

Trinn 4) Tic Tac Toe-spillet starter.

Trinn 5) Spillere spiller ved å velge et tomt sted på brettet.

Trinn 6) Fyll det tomme valgte stedet med spillerens tegn.

Trinn 7) Bestem om en spiller vinner eller får uavgjort i spillet ved å bruke spilllogikken.

Trinn 8) Vis spillebrettet etter hvert spill hvis ingen spiller vinner eller får uavgjort til den andre spilleren.

Trinn 9) Vis henholdsvis uavgjort eller vinn-melding.

Trinn 10) Avslutt Tic Tac Toe-spillet med alternativer for å starte et nytt spill.

Full Python kode for tic tac toe

# 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 produksjon

Når du har kjørt kildekoden ovenfor, er forventet resultat for et 3 x 3 tre-på-tre-på-tre-brett nedenfor:

------------
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):

Full Code Breakdown

Opprette Tre på rad i Python er enkelt. La oss dissekere de ulike funksjonene i biter for å forstå hva som skjer for hver linje:

Utskrift av brettet

Tre-tre-og-tre-brettet er hovedutstillingen i spillet. I Python, et visningsvindu brukes til å vise spillbrettet.

Her er trinnene som hjelper deg med å lage et brett for Tre på rad. Python:

Python kode for Tic Tac Toe

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 produksjon:

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

_ _ _

_ _ _

_ _ _

Tic Tac Toe Game – vinnende arrangement

For å sjekke om noen spiller vant, må vi sjekke vinnende kombinasjoner på tvers av rader, kolonner og diagonaler. Hvis det er en vinner, må vi vise en vinnermelding.

Rader

  • For raden tar funksjonen hvert påfølgende par av kolonner og sjekker for en vinnende kombinasjon.
  • Den første spilleren som fyller radene vinner. Den andre spilleren taper dermed.
  • Hvis et par påfølgende kolonner er like, er det åpenbart at alle elementene i den raden er like.
  • Hvis to av dem er forskjellige eller raden inneholder en tom celle, er det fortsatt ingen vinner.
  • Vi implementerer deretter tapende forhold og legger til en pause. Hvis noen av disse tapsbetingelsene er sanne, hadde vi ingen vinner i den sjekkede raden.
  • Den andre uttalelsen gir en sann avkastning for å vise at det er en vinner.
  • Pausen bryter ut av denne sløyfen for å fortsette til neste rad.

kolonner

For kolonnene gjentar vi samme funksjon som i rader. Vi sjekker om en spiller vant etter at hver spiller har valgt sin plass.

Diagonal rad vinner

For venstre diagonal blir oppgaven enklere. Vi kommer alltid til å sammenligne cellene i diagonalene. Men hvis det ikke finnes noen vinner, kan vi gå videre til neste instruksjon.

Spill spilllogikk

Dette er hovedspillets funksjon. Til dette kan vi bruke variabler som lagrer informasjon.

  • Den første variabelen er brettstørrelsen lagret i "N". Spillet vil få brettstørrelsen etter å ha bedt brukeren om å skrive inn et tall.
  • Så når du angir verdien, blir den behandlet.
  • Vi lager også en feilmelding for å vise spillerne når et ugyldig nummer er skrevet inn.
  • Vi kan da lage to variabler som fyller ut en "X" eller en "O" når en celle er fylt.
  • Vis deretter spillerne spillebrettet. Etter dette, få spillerens innspill.
  • Logikken vil da merke den valgte cellen som fylt og se etter gevinst eller uavgjort.
  • Hvis det ikke er noen vinner, ber spillet den neste spilleren om å spille. Hvis det er en seier eller uavgjort, kan spillet spørre brukerne om de vil ha et nytt spill.

Spørsmål og svar

Ja. Tic Tac Toe er et klassisk nybegynnerprosjekt som gjør løkker, betingelsesvalg og funksjoner til et fungerende spill. Det bygger selvtillit, forsterker kjernesyntaks og forbereder deg på større prosjekter uten behov for eksterne biblioteker.

Den forsterker nestede lister for brettet, for løkker og while-løkker for turer, if-setninger for gevinstkontroller, funksjoner for struktur og rekursjon for omstart. Disse grunnleggende prinsippene overføres direkte til mer avanserte programmer. Python programmer.

Ja. Utover konsollversjonen legger biblioteker som Tkinter og Pygame til klikkbare knapper, et tegnet rutenett og museinndata. Spilllogikken forblir den samme; bare visnings- og inndatalagene endres.

Tre på rad er et løst spill. Når begge spillerne spiller optimalt, kan alle trusler blokkeres, slik at ingen kan tvinge frem en seier. Det er derfor en feilfri kamp, ​​menneske eller datamaskin, alltid ender uavgjort.

En grunnleggende konsollversjon tar en nybegynner én til tre timer når løkker og betingelser føles kjente. Å legge til inputvalidering, et skalerbart kort eller et grafisk grensesnitt forlenger prosjektet over en helg med øving.

Erstatt én spiller med en minimax-funksjon. Den utforsker rekursivt alle mulige trekk, scorer seire, tap og uavgjort, og velger deretter trekket med det best garanterte utfallet. På et lite brett gjør dette datamaskinen umulig å slå.

Ja. Forsterkningslæringsmidler som Q-læring forbedres ved å spille tusenvis av spill og belønne vinnende trekk. Brett lagres som matriser med nusset, slik at modellen lærer en nesten optimal strategi uten hardkodede regler.

Ja. GitHub Copilot og lignende AI-assistenter kan sette opp et scaffold på brettet, snu løkker og vinne sjekker fra en kort prompt. Behandle resultatet som et førsteutkast, og test deretter kanttilfeller som uavgjorte og ugyldige trekk selv.

Oppsummer dette innlegget med: