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