Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Python

Een Tic Tac Toe-spel maken in Python: stapsgewijze code-tutorial

Tic Tac Toe in Python is een leuk project om basisconcepten te oefenen. Je kunt een editor als PyCharm of de opdrachtregel gebruiken.

Hoe speel je Tic Tac Toe?

Tic Tac Toe is een eenvoudig tweepersonenspel. Twee spelers vullen om beurten cellen in een vierkant rooster tot er een winnaar is (volledige rij, kolom of diagonaal met hetzelfde symbool) of het spel eindigt in gelijkspel (alle cellen vol).

Stap 1) Het spel begint met een leeg rooster (het bord).

Stap 2) Spelers kiezen symbolen, meestal X en O.

Stap 3) Spelers zetten om beurten een symbool in een lege cel.

Stap 4) Wie eerst een rij, kolom of diagonaal vol heeft, wint. Bij vol bord zonder winnaar is het gelijkspel.

Vereisten

  • Basiskennis van Python: lussen (for, while), if-statements.
  • Python en een teksteditor geïnstalleerd.
  • Geen externe bibliotheken nodig.
  • Basisfoutopsporing (debugging) vaardigheden zijn handig.

Tic Tac Toe-algoritme

  1. Maak het bord aan.
  2. Laat de gebruiker de afmetingen kiezen (N x N).
  3. Kies willekeurig de startspeler.
  4. Start het spel.
  5. Speler kiest een lege cel.
  6. Vul de cel met het symbool van de speler.
  7. Controleer op winst of gelijkspel.
  8. Toon het bijgewerkte bord als het spel doorgaat.
  9. Toon winst/gelijkspelbericht.
  10. Eindig met optie voor nieuw spel.

Complete Python-code voor Tic Tac Toe

# Guru99 Tic Tac Toe spel
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 "Ongeldige invoer.")

def printBoard(board):
    print()
    for row in board:
        print(*row)
    print()

def checkWin(board):
    n = len(board)
    # Rijen controleren
    for row in range(n):
        for col in range(n - 1):
            if board[row][col] == "_" or board[row][col+1] == "_" or board[row][col] != board[row][col+1]:
                break
        else:
            return True
    # Kolommen controleren
    for col in range(n):
        for row in range(n - 1):
            if board[row][col] == "_" or board[row+1][col] == "_" or board[row][col] != board[row+1][col]:
                break
        else:
            return True
    # Linker diagonaal
    for cell in range(n - 1):
        if board[cell][cell] == "_" or board[cell+1][cell+1] == "_" or board[cell][cell] != board[cell+1][cell+1]:
            break
    else:
        return True
    # Rechter diagonaal
    for cell in range(n - 1):
        emptyCell = board[cell][n-cell-1] == "_" or board[cell+1][n-cell-2] == "_"
        different = board[cell][n-cell-1] != board[cell+1][n-cell-2]
        if emptyCell or different:
            break
    else:
        return True
    return False

def play():
    print("------------\nN-DIMENSIONEEL TIC TAC TOE spel door guru99.com\n------------")
    N = getInput(prompt="Guru99 zegt>>> Voer N in, de afmeting van het bord: ",
                 cast=int, condition=lambda x: x >= 3,
                 errorMessage="Ongeldig. Voer een integer >= 3 in.")
    board = [['_'] * N for _ in range(N)]
    used = 0
    turn = 0
    while True:
        printBoard(board)
        pick = getInput(prompt=f"Speler {turn+1} - Kies locatie (rij, kol): ",
                        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="Ongeldig. Kies een vrije locatie als twee integers.")
        board[pick[0]][pick[1]] = "X" if turn == 0 else "O"
        used += 1
        if checkWin(board):
            printBoard(board)
            print(f"Spel voorbij, Speler {turn+1} wint.")
            break
        elif used == N * N:
            printBoard(board)
            print("Spel voorbij. Gelijkspel.")
            print("Guru99.com tic tac toe spel")
            break
        turn = (turn + 1) % 2
        playAgain = getInput(prompt="Opnieuw spelen? (j/n): ",
                             cast=str, condition=lambda ans: ans.strip().lower() in {"j", "n"},
                             errorMessage="Voer 'j' of 'n' in.")
        if playAgain == 'n':
            print("\nGuru99 TicTacToe spel beëindigd.")
            return
        else:
            play()

if __name__ == '__main__':
    play()

Voorbeelduitvoer voor 3x3 bord

------------
N-DIMENSIONEEL TIC TAC TOE spel door guru99.com
------------
Guru99 zegt>>> Voer N in, de afmeting van het bord: 3
_ _ _
_ _ _
_ _ _
Speler 1 - Kies locatie (rij, kol): 1 1
_ _ _
_ X _
_ _ _
Speler 2 - Kies locatie (rij, kol): 0 1
_ O _
_ X _
_ _ _
...
Speler 1 - Kies locatie (rij, kol): 1 0
_ O O
X X X
_ _ _
Spel voorbij, Speler 1 wint.
Opnieuw spelen? (j/n):

Code-uitleg

Het bord printen

De functie printBoard toont het bord netjes met spaties tussen cellen.

Winst controleren

De checkWin-functie controleert rijen, kolommen en beide diagonalen op een reeks identieke, niet-lege symbolen. De for-else constructie zorgt ervoor dat True wordt geretourneerd alleen als de lus niet gebroken wordt (dus alle paren matchen).

Spel-logica

De play() functie beheert de hoofdloop: bord tonen, invoer vragen, bord updaten, winst/gelijkspel checken, beurt wisselen, en optioneel herstarten.

Conclusie

  • Tic Tac Toe is een leuke manier om Python-basics te oefenen.
  • Je hebt basiskennis, Python en een editor nodig.
  • Het algoritme helpt je gestructureerd te coderen.
  • Begin met het bord, programmeer winstlogica, en test door te spelen.

Python

  1. Python en PyCharm installeren op Windows: Stapsgewijze handleiding
  2. Python Lambda Functies: Een praktische gids voor anonieme functies
  3. PIP installeren op Windows: complete stapsgewijze handleiding
  4. Python afbeeldingsverwerking met Pillow: uitgebreide gids
  5. Uitgebreide PyQt5-tutorial: Bouw professionele GUI's in Python
  6. Python-functies onder de knie: definitie, aanroep, inspringing, argumenten en return-waarden
  7. Python Regular Expressions (re-module) – een praktische gids
  8. Python Dictionary Fundamentals: Sleutels, Waarden en Toegang
  9. Python Multithreaded Programmering: Efficiënte Concurrency Technieken
  10. Python skills testen met Real Python Interactieve Quizzes
  11. Python Exception Handling Onder de Loep: try, except, finally en raise Effectief Gebruiken