Preskočiť na obsah

1. Piškvorky

Jednoduchšie

board = [
    [" ", " ", " "],
    [" ", " ", " "],
    [" ", " ", " "]
]
onturn = "X"
won = False

while True:
    # Nakresli hernú dosku
    for row in board:
        print("+---" * len(row) + '+')
        print("|", end="")
        for cell in row:
            print(" " + cell + " |", end="")
        print()
    print("+---" * len(row) + '+')

    if won:
        break

    # Ťah aktuálneho hráča
    while True:
        turn = input(f"Ťah {onturn}: ")
        r, s = turn.split(",")
        r, s = int(r), int(s)

        if 0 <= r < 3 and 0 <= s < 3 and board[r][s] == " ":
            board[r][s] = onturn
            break

    # Pozri či hráč nevyhral
    for i in range(len(board)):
        if board[i][0] == onturn and board[i][1] == onturn and board[i][2] == onturn:
            won = True

    for i in range(len(board)):
        if board[0][i] == onturn and board[1][i] == onturn and board[2][i] == onturn:
            won = True

    if board[0][0] == onturn and board[1][1] == onturn and board[2][2] == onturn:
        won = True

    if board[0][2] == onturn and board[1][1] == onturn and board[2][0] == onturn:
        won = True

    # Vymeň hráča na ťahu
    onturn = "O" if onturn == "X" else "X"

if won:
    print(f"Vyhrali: {onturn}")

Zložitejšie

hra =  [[" ", " ", " "],
        [" ", " ", " "],
        [" ", " ", " "]]
tah = 0
hraci = ["X", "O"]
print("----------- PIŠKVORKY ----------- ")

while True:    
    # Nakresli aktuálnu hraciu plochu
    for x in range(3):
        print("\n---------------")
        for y in range(3):
            print("| {} |".format(hra[x][y]), end="")
    print("\n---------------\n")

    # Získaj miesto od uživateľa = miesto a over jeho obsadenie 
    while True:
        tahhrac = int(input("Tvoj ťah (1 - 9): "))
        if tahhrac >= 1 and tahhrac <= 9:
            x = (tahhrac - 1) // 3
            y = (tahhrac - 1) % 3 
            if hra[x][y] == " ":
                hra[x][y] = hraci[tah]
                tah = (tah + 1) % len(hraci)
                break

    # Vygeneruj ťah počítača - TODO
    # Brute Force/ Minimax  

    # Kto vyhral - Riadky, Stĺpce, Diagonály
    vyhra = " "
    remiza = True

    for i in range(3):
        for p in hraci:
            if hra[i][0] == p and hra[i][1] == p and hra[i][2] == p:
               vyhra = p

    for i in range(3):
        for p in hraci:
            if hra[0][i] == p and hra[1][i] == p and hra[2][i] == p:
               vyhra = p

    for p in hraci:
        if hra[0][0] == p and hra[1][1] == p and hra[2][2] == p:
            vyhra = p
    for p in hraci:
        if hra[0][2] == p and hra[1][1] == p and hra[2][0] == p:
            vyhra = p

    # Je Remíza
    for i in range(3):
        for j in range(3):
            if hra[i][j] == " ":
                remiza = False

    if remiza == True:
        print("Hra sa skončila remízou")
        break
    if vyhra == "O":
        print("Hru vyhrali: Krúžky [O]")
        break
    elif vyhra == "X":
        print("Hru vyhrali: Krížiky [X]")
        break

V grafickom režime