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: