From 13838c8dbff48f3aef5dbfaa0f188a05affc9864 Mon Sep 17 00:00:00 2001 From: "Dawid J. Kubis" Date: Sun, 10 Nov 2019 00:10:41 +0100 Subject: [PATCH] prvni payload piskvorek uz je tady --- 7/readme.md | 1 + projekty/tic_tac_toe/katka.py | 51 ++++++++++ projekty/tic_tac_toe/matej.py | 181 +++++++++++++++++++++++++++++++++ projekty/tic_tac_toe/ondra.py | 121 ++++++++++++++++++++++ projekty/tic_tac_toe/petr.py | 56 ++++++++++ projekty/tic_tac_toe/vlasta.py | 84 +++++++++++++++ 6 files changed, 494 insertions(+) create mode 100644 7/readme.md create mode 100644 projekty/tic_tac_toe/katka.py create mode 100644 projekty/tic_tac_toe/matej.py create mode 100644 projekty/tic_tac_toe/ondra.py create mode 100644 projekty/tic_tac_toe/petr.py create mode 100644 projekty/tic_tac_toe/vlasta.py diff --git a/7/readme.md b/7/readme.md new file mode 100644 index 0000000..6744743 --- /dev/null +++ b/7/readme.md @@ -0,0 +1 @@ +furt piskvorky... diff --git a/projekty/tic_tac_toe/katka.py b/projekty/tic_tac_toe/katka.py new file mode 100644 index 0000000..15ee523 --- /dev/null +++ b/projekty/tic_tac_toe/katka.py @@ -0,0 +1,51 @@ +plocha = [[" ", " ", " "], [" ", " ", " "], [" ", " ", " "]] +hrac = "X" + +def kontrola(): + if plocha[0][0] == plocha[0][1] and plocha[0][1] == plocha[0][2] and plocha[0][2] != " ": + print("Vyhrál " + hrac) + return True + if plocha[1][0] == plocha[1][1] and plocha[1][1] == plocha[1][2] and plocha[1][2] != " ": + print("Vyhrál " + hrac) + return True + if plocha[2][0] == plocha[2][1] and plocha[2][1] == plocha[2][2] and plocha[2][2] != " ": + print("Vyhrál " + hrac) + return True + if plocha[0][0] == plocha[1][0] and plocha[1][0] == plocha[2][0] and plocha[2][0] != " ": + print("Vyhrál " + hrac) + return True + if plocha[0][1] == plocha[1][1] and plocha[1][1] == plocha[2][1] and plocha[2][1] != " ": + print("Vyhrál " + hrac) + return True + if plocha[0][2] == plocha[1][2] and plocha[1][2] == plocha[2][2] and plocha[2][2] != " ": + print("Vyhrál " + hrac) + return True + if plocha[0][0] == plocha[1][1] and plocha[1][1] == plocha[2][2] and plocha[2][2] != " ": + print("Vyhrál " + hrac) + return True + if plocha[0][2] == plocha[1][1] and plocha[1][1] == plocha[2][0] and plocha[2][0] != " ": + print("Vyhrál " + hrac) + return True + return False + +def vytiskni(): + print(plocha[0][0] + "|" + plocha[0][1] + "|" + plocha[0][2]) + print("-+-+-") + print(plocha[1][0] + "|" + plocha[1][1] + "|" + plocha[1][2]) + print("-+-+-") + print(plocha[2][0] + "|" + plocha[2][1] + "|" + plocha[2][2]) + +vytiskni() +while True: + x = input() + y = x.split() + if plocha[int(y[0])][int(y[1])] == " ": + plocha[int(y[0])][int(y[1])] = hrac + if kontrola(): + vytiskni() + break + if hrac == "X": + hrac = "O" + else: + hrac = "X" + vytiskni() diff --git a/projekty/tic_tac_toe/matej.py b/projekty/tic_tac_toe/matej.py new file mode 100644 index 0000000..b5d23e6 --- /dev/null +++ b/projekty/tic_tac_toe/matej.py @@ -0,0 +1,181 @@ +grid = [ + ["", "", ""], + ["", "", ""], + ["", "", ""] +] + +x = False + +def play1(): + + global x_input_1 + global y_input_1 + true_x = False + true_y = False + true_taken_1 = False + + print("Now will play player 1") + + while not true_taken_1: + + 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)") + + 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]) + +def play2(): + print("Now will play player 2\n") + global x_input_2 + global y_input_2 + 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 + x0_y0 = grid[0][0] + x0_y1 = grid[0][1] + x0_y2 = grid[0][2] + x1_y0 = grid[1][0] + x1_y1 = grid[1][1] + x1_y2 = grid[1][2] + x2_y0 = grid[2][0] + x2_y1 = grid[2][1] + x2_y2 = grid[2][2] + + 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 + +while not x: + win() + play1() + + win() + if not x: + play2() + +print("End of the game") diff --git a/projekty/tic_tac_toe/ondra.py b/projekty/tic_tac_toe/ondra.py new file mode 100644 index 0000000..0c67e02 --- /dev/null +++ b/projekty/tic_tac_toe/ondra.py @@ -0,0 +1,121 @@ +board = ["[ ]", "[ ]", "[ ]", + "[ ]", "[ ]", "[ ]", + "[ ]", "[ ]", "[ ]"] +player_2 = False +Hra = True +kolo = 1 +winner_2 = None + +#spuští funkce ve správném pořadí +def tah(): + Tah = Input_pos() + while Input_chack(Tah) == False: + Tah = Input_pos() + Move(Tah) + Show() + +#zobarí hrací desku +def Show(): + print(board[0], board[1], board[2], sep="") + print(board[3], board[4], board[5], sep="") + print(board[6], board[7], board[8], sep="") + print("_________") + +#vrátí array s xy informací o tahu +def Input_pos(): + player = int(player_2) + 1 + print("hráč", player, "hraje") + vert = int(input("zadej sloupec (max 3)")) + while vert > 3: + print("vstup nesmí být větší než 3") + vert = int(input("zadej sloupec (max 3)")) + hor = int(input("zadej řádek (max 3)")) + while hor > 3: + hor = int(input("zadej řádek (max 3)")) + print("vstup nesmí být větší než 3") + tah = [vert, hor] + return To_Index(tah) + +#změní políčko +def Move(tah): + if Input_chack(tah): + if player_2: + x = "O" + else: + x = "X" + board[tah] = "[" + x + "]" + else: + pass + +#skontroluje platnost vstupu +def Input_chack(index): + if not board[index] == "[ ]": + print("pole je již obsazené") + return False + else: + return True + +#převede array s xy pozicí do indexu +def To_Index(tah): + index = tah[0] + ((tah[1] - 1) * 3) - 1 + return index + +#skontroluje zde hráč nevyhrál +def Chack(): + if board[0] == board[1] and board[0] == board[2] and not board[0] == "[ ]": #123 + if board[0] == "[X]": + return True + else: + return False + elif board[3] == board[4] and board[3] == board[5] and not board[3] == "[ ]": #456 + if board[3] == "[X]": + return True + else: + return False + elif board[6] == board[7] and board[6] == board[8] and not board[6] == "[ ]": #789 + if board[6] == "[X]": + return True + else: + return False + elif board[0] == board[3] and board[0] == board[6] and not board[0] == "[ ]": #147 + if board[0] == "[X]": + return True + else: + return False + elif board[1] == board[4] and board[1] == board[7] and not board[1] == "[ ]": #258 + if board[1] == "[X]": + return True + else: + return False + elif board[2] == board[5] and board[2] == board[8] and not board[2] == "[ ]": #369 + if board[2] == "[X]": + return True + else: + return False + elif board[0] == board[4] and board[0] == board[8] and not board[0] == "[ ]": #159 + if board[0] == "[X]": + return True + else: + return False + elif board[2] == board[4] and board[2] == board[6] and not board[2] == "[ ]": #357 + if board[2] == "[X]": + return True + else: + return False + else: + return None + +Show() +while Hra: + tah() + if not Chack() == None: + Hra = False + if player_2: + print("Hráč 2 wyhrál v kole", kolo) + else: + print("Hráč 1 wyhrál v kole", kolo) + player_2 = not player_2 + kolo += 1 + if kolo > 8: + Hra = False + print("Hra skončila bez výsledku") diff --git a/projekty/tic_tac_toe/petr.py b/projekty/tic_tac_toe/petr.py new file mode 100644 index 0000000..290a7fd --- /dev/null +++ b/projekty/tic_tac_toe/petr.py @@ -0,0 +1,56 @@ +values = { + 0: " ", + 1: "x", + 2: "o" +} + +board = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] + +def print_board(): + for i in range(3): + print("{}|{}|{}".format(values.get(board[i][0]), values.get(board[i][1]), values.get(board[i][2]))) + print("-+-+-") + +def get_user_input(): + return [int(i) for i in input().split()] + +def check_win(): + for i in range(3): + if board[i][0] == board[i][1] == board[i][2] and board[i][0] != 0: + return True + if board[0][i] == board[1][i] == board[2][i] and board[0][i] != 0: + return True + + if board[0][0] == board[1][1] == board[2][2] and board[1][1] != 0: + return True + if board[2][0] == board[1][1] == board[0][2] and board[1][1] != 0: + return True + return False + +def main(): + finished = False + plays = 1 + while not finished: + print_board() + print("Hraje {}".format(values.get(plays))) + inp = False + while not inp: + try: + user_input = get_user_input() + if board[user_input[0]][user_input[1]] == 0: + board[user_input[0]][user_input[1]] = plays + if plays == 2: + plays = 0 + plays += 1 + inp = True + else: + print("Buňka je již obsazena") + except: + print("Váš vstup není platný") + finished = check_win() + + print_board() + print("Konec hry") + +if __name__ == "__main__": + main() diff --git a/projekty/tic_tac_toe/vlasta.py b/projekty/tic_tac_toe/vlasta.py new file mode 100644 index 0000000..449cb83 --- /dev/null +++ b/projekty/tic_tac_toe/vlasta.py @@ -0,0 +1,84 @@ +#Jupyter je lepsi +import numpy as np +ikonky = [" "," X "," O "] +def render(board): + text = "+---+---+---+\n" + for row in board: + text += "|" + for column in row: + text += ikonky[column] + "|" + text += "\n+---+---+---+\n" + print(text) + print("""+---+---+---+ +| 0 | 1 | 2 | ++---+---+---+ +| 3 | 4 | 5 | ++---+---+---+ +| 6 | 7 | 8 | ++---+---+---+""") + +def compare3(a,b,c): + return a == b and b == c and a != 0 + +def check(board, move): + #print(board, move) + end = False + #kontrola řádku + end = end or compare3(board[0, move[1]],board[1, move[1]],board[2, move[1]]) + #kontrola sloupce + end = end or compare3(board[move[0], 0],board[move[0], 1],board[move[0], 2]) + #kontrola diagnálně + end = end or compare3(board[0, 0],board[1, 1],board[2, 2]) + end = end or compare3(board[0, 2],board[1, 1],board[2, 0]) + + return (end, 0 in board) + +def inputMove(): + x = "" + OK = False + while not OK: + x = input("Zadejte tah od 0 do 8 \n > ") + OK = x.isnumeric() + if OK: + OK = int(x) >= 0 and int(x) <= 8 + if OK: + X = int(x)//3 + Y = int(x)%3 + OK = move((X, Y),1) + +def move(move,player): + global board + global lastMove + OK = board[move] == 0 + if OK: + board[move] = player + lastMove = move + return OK + +from random import randint +def AImove(): + #vim ze to neni minmax + while not move((randint(0,2),randint(0,2)), 2): + continue + return move + + +#hra +global board +board = np.zeros((3, 3), dtype=np.int) +global lastMove +lastMove = (0,0) +player = 1 +render(board) +while (not check(board, lastMove)[0]) and check(board, lastMove)[1]: + if player == 1: + inputMove() + else: + AImove() + render(board) + player = (player%2)+1 #Hraje další hráč; 1 => 2; 2 => 1 +if check(board, lastMove)[0]: + print("Vyhrál: "+ikonky[board[lastMove]]) +else: + print("Remíza") +