You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

6.5 KiB

matej.py

grid = [
    ["", "", ""],
    ["", "", ""],
    ["", "", ""]
]

x = False
# nazev promenny nic nerika
# taky ta definice je kilometry od mista kde se
# ta promenna pouzije :(

def play1(): # dve oddeleny funkce pro ruzne hrace
             # debilni protoze a) nemuzeme snadno pridat hrace
             #                 b) opakovani kodu

    global x_input_1
    global y_input_1
    # oof, globaly
    
    true_x = False # lol, to jsou nazvy.
    true_y = False # procs tam nenapsal rovnou:
    #false_y = True
    # :D
    # ale vazne by bylo lepsi:
    #bool_y = False
    true_taken_1 = False

    print("Now will play player 1") # english

    while not true_taken_1: # celkem elegantni, az na to ze moc ne
        # chytrejsi by bylo volat funkci na taken ale to by
        # vyzadovalo premyslet o strukture programu, vid ze jo?

        while not true_x:

            x_input_1 = int(input("Enter x axis position (1, 2, 3): "))

            if x_input_1 == 1:
                true_x = True
            elif x_input_1 == 2:
                true_x = True
            elif x_input_1 == 3:
                true_x = True
            else:
                print("Try again (1, 2, 3)") # eeeh, zdaleka ne moc elegantni

        while not true_y:

            y_input_1 = int(input("Enter y axis position (1, 2, 3): "))

            if y_input_1 == 1:
                true_y = True
            elif y_input_1 == 2:
                true_y = True
            elif y_input_1 == 3:
                true_y = True
            else:
                print("Try again (1, 2, 3)")

        if grid[x_input_1 - 1][y_input_1 - 1] not in ("X", "O"):
            true_taken_1 = True

        else:
            print("That position is taken")
            true_x = False
            true_y = False

    grid[x_input_1 - 1][y_input_1 - 1] = "X"

    print(grid[0][0] + "  |  " + grid[1][0] + "  |  " + grid[2][0] + "\n" + "__" + "   " + "__" + "   " + "__" +
          "\n" + grid[0][1] + "   |  " + grid[1][1] + "  |  " + grid[2][1] + "\n" + "__" + "   " + "__" + "   " + "__" +
          "\n" + grid[0][2] + "   |  " + grid[1][2] + "  |  " + grid[2][2]) # celkem v pohode lol

def play2():
    print("Now will play player 2\n")
    global x_input_2
    global y_input_2
    # globaly fuj fuj
    true_taken_2 = False
    true_x_1 = False
    true_y_1 = False

    while not true_taken_2:
        while not true_x_1:

            x_input_2 = int(input("Enter x axis position (1, 2, 3): "))

            if x_input_2 == 1:
                true_x_1 = True
            elif x_input_2 == 2:
                true_x_1 = True
            elif x_input_2 == 3:
                true_x_1 = True
            else:
                print("Try again (1, 2, 3)")

        while not true_y_1:
            y_input_2 = int(input("Enter y axis position (1, 2, 3): "))

            if y_input_2 == 1:
                true_y_1 = True
            elif y_input_2 == 2:
                true_y_1 = True
            elif y_input_2 == 3:
                true_y_1 = True
            else:
                print("Try again (1, 2, 3)")

        if grid[x_input_2 - 1][y_input_2 - 1] not in ("X", "O"):
            true_taken_2 = True

        else:
            print("That position is taken")
            true_x_1 = False
            true_y_1 = False

    grid[x_input_2 - 1][y_input_2 - 1] = "O"

    print(grid[0][0] + "  |  " + grid[1][0] + "  |  " + grid[2][0] + "\n" + "__" + "   " + "__" + "   " + "__" +
          "\n" + grid[0][1] + "   |  " + grid[1][1] + "  |  " + grid[2][1] + "\n" + "__" + "   " + "__" + "   " + "__" +
          "\n" + grid[0][2] + "   |  " + grid[1][2] + "  |  " + grid[2][2])

def win():
    global x
    # globaly fuj fuj
    x0_y0 = grid[0][0] # <-- gay
    x0_y1 = grid[0][1] # <-- gay
    x0_y2 = grid[0][2] # <-- gay
    x1_y0 = grid[1][0] # <-- gay
    x1_y1 = grid[1][1] # <-- gay
    x1_y2 = grid[1][2] # <-- gay
    x2_y0 = grid[2][0] # <-- gay
    x2_y1 = grid[2][1] # <-- gay
    x2_y2 = grid[2][2] # <-- gay

    if x0_y0 == x0_y1 == x0_y2 and x0_y0 == "X":
        print("Player 1 wins")
        x = True

    elif x1_y0 == x1_y1 == x1_y2 and x1_y0 == "X":
        print("Player 1 wins")
        x = True
    elif x2_y0 == x2_y1 == x2_y2 and x2_y0 == "X":
        print("Player 1 wins")
        x = True
    elif x0_y0 == x1_y0 == x2_y0 and x0_y0 == "X":
        print("Player 1 wins")
        x = True
    elif x0_y1 == x1_y1 == x0_y2 and x0_y1 == "X":
        print("Player 1 wins")
        x = True
    elif x0_y2 == x1_y2 == x2_y2 and x0_y2 == "X":
        print("Player 1 wins")
        x = True
    elif x0_y0 == x1_y1 == x2_y2 and x0_y0 == "X":
        print("Player 1 wins")
        x = True
    elif x2_y0 == x1_y1 == x0_y2 and x2_y0 == "X":
        print("Player 1 wins")
        x = True

    elif x0_y0 == x0_y1 == x0_y2 and x0_y0 == "O":
        print("Player 2 wins")
        x = True
    elif x1_y0 == x1_y1 == x1_y2 and x1_y0 == "O":
        print("Player 2 wins")
        x = True
    elif x2_y0 == x2_y1 == x2_y2 and x2_y0 == "O":
        print("Player 2 wins")
        x = True
    elif x0_y0 == x1_y0 == x2_y0 and x0_y0 == "O":
        print("Player 2 wins")
        x = True
    elif x0_y1 == x1_y1 == x0_y2 and x0_y1 == "O":
        print("Player 2 wins")
        x = True
    elif x0_y2 == x1_y2 == x2_y2 and x0_y2 == "O":
        print("Player 2 wins")
        x = True
    elif x0_y0 == x1_y1 == x2_y2 and x0_y0 == "O":
        print("Player 2 wins")
        x = True
    elif x2_y0 == x1_y1 == x0_y2 and x2_y0 == "O":
        print("Player 2 wins")
        x = True
    # top kek, jeste jsi ani neresil to ze vlastne nemusis rozlisovat
    # mezi X a O, staci ze jsou stejny. dalo se to vymyslet mnohem
    # jednoduseji, o tom byl ten ukol

while not x: # mega gay, tyhle casti programu se rika
             # mainloop, a princip je takovej ze kdyz
             # hra skonci tak breakujes. To tady pochopitelne
             # nemas, protoze tvoje kazda funkce je void (a nic nevraci)
             # takze vystup je printovej. To je mega gay, protoze nevyuzivas
             # potencial funkci a taky print je vedlejsi efekt o kterym jsem
             # se bavil ze je to presne to co nechces

            # takze ten program sice pozna ze nekdo vyhral, ale neskonci
    win()
    play1()

    win()
    if not x:
        play2()

print("End of the game")

# krasnej priklad toho, proc jsem vam rikal abyste si nejdriv program
# promysleli nez ho naprogramujete

# na druhou stranu respekt zes to dotahl i presto ze je to tak necitelny
# a taky diky tobe mam o cem mluvit :D