From 6638797e8f17777be990023aa8a972b9e661f684 Mon Sep 17 00:00:00 2001 From: zajiha Date: Thu, 19 Nov 2020 19:41:14 +0100 Subject: [PATCH 1/2] tic tac toe draw and check --- src/pp_26_check_tic_tac_toe.py | 80 ++++++++++++++++++++++++++++++++++ src/pp_27_tic_tac_toe_draw.py | 68 +++++++++++++++++++++++++++++ 2 files changed, 148 insertions(+) create mode 100644 src/pp_26_check_tic_tac_toe.py create mode 100644 src/pp_27_tic_tac_toe_draw.py diff --git a/src/pp_26_check_tic_tac_toe.py b/src/pp_26_check_tic_tac_toe.py new file mode 100644 index 0000000..8da7114 --- /dev/null +++ b/src/pp_26_check_tic_tac_toe.py @@ -0,0 +1,80 @@ +board_1 = [[1, 1, 0], + [2, 1, 0], + [2, 2, 2]] + + +def row_check(board: list) -> int: + """check for same values in row + + Args: + board (list): input board list + + Returns: + int: won player + """ + for row in board: + if len(set(row)) == 1 and row[0] != 0: + print("won in row") + return row[0] + + print("not in row") + return None + + +def column_check(board: list) -> int: + """check for same values in column + + Args: + board (list): input board list + + Returns: + int: won player + """ + new_board = [[board[j][i] for j in range(len(board))] for i in range(len(board[0])-1,-1,-1)] + for column in new_board: + if len(set(column)) == 1 and column[0] != 0: + print("won in column") + return column[0] + + print("not in column") + return None + + +def diagonale_check(board: list) -> int: + """check for same values in diagonale + + Args: + board (list): input board list + + Returns: + int: won player + """ + if (board[0][0] == board[1][1] == board[2][2]) or (board[2][0] == board[1][1] == board[0][2]): + if board[0][0] != 0: + print("won in diagonale") + return board[0][0] + + print("not in diagonale") + return None + + +def get_winner(board: list) -> int: + """winner evaluation + + Args: + board (list): input board list + + Returns: + int: winner + """ + win_type = [row_check, column_check, diagonale_check] + for won in win_type: + winner = won(board) + if winner is not None: + print("The winner is player:") + return winner + + return 0 + +tic_tac_toe = get_winner(board_1) +print(tic_tac_toe) diff --git a/src/pp_27_tic_tac_toe_draw.py b/src/pp_27_tic_tac_toe_draw.py new file mode 100644 index 0000000..3b7e789 --- /dev/null +++ b/src/pp_27_tic_tac_toe_draw.py @@ -0,0 +1,68 @@ +game = [[0, 0, 0], + [0, 0, 0], + [0, 0, 0]] + +print(game[0]) +print(game[1]) +print(game[2]) + +PLAYER_1 = 'x' +PLAYER_2 = 'o' + +def player_move(player_input: str) -> dict: + """input tranformation into indices + + Args: + player_input (str): user input + + Returns: + dict: row index, column index + """ + player_split = player_input.split(",", 1) + player_row = int(player_split[0]) - 1 + player_col = int(player_split[1]) - 1 + return { + "row" : player_row, + "column" : player_col + } + + +def play_the_game(board: list): + """game board filling + + Args: + board (list): input board + """ + number_of_moves = 0 + while True: + if number_of_moves == 9: + break + print("Make your move as row number,column number") + player_1 = input("Player 1, you are on - row/column: ") + player_1_move = player_move(player_1) + + if board[player_1_move['row']][player_1_move['column']] == 0: + board[player_1_move['row']][player_1_move['column']] = PLAYER_1 + number_of_moves += 1 + + print(game[0]) + print(game[1]) + print(game[2]) + + print("Make your move as row number,column number") + player_2 = input("Player 2, you are on - row/column: ") + player_2_move = player_move(player_2) + + if board[player_2_move['row']][player_2_move['column']] == 0: + board[player_2_move['row']][player_2_move['column']] = PLAYER_2 + number_of_moves += 1 + + print(game[0]) + print(game[1]) + print(game[2]) + + + print("Game over") + + +play_the_game(game) From 470744f81d5eba51b96becfb07b6f0cb0235444c Mon Sep 17 00:00:00 2001 From: zajiha Date: Fri, 20 Nov 2020 19:31:40 +0100 Subject: [PATCH 2/2] tic tac preversion --- src/pp_26_check_tic_tac_toe.py | 12 +++++++----- src/pp_27_tic_tac_toe_draw.py | 31 +++++++++++++++---------------- 2 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/pp_26_check_tic_tac_toe.py b/src/pp_26_check_tic_tac_toe.py index 8da7114..83984fb 100644 --- a/src/pp_26_check_tic_tac_toe.py +++ b/src/pp_26_check_tic_tac_toe.py @@ -50,9 +50,9 @@ def diagonale_check(board: list) -> int: int: won player """ if (board[0][0] == board[1][1] == board[2][2]) or (board[2][0] == board[1][1] == board[0][2]): - if board[0][0] != 0: + if board[1][1] != 0: print("won in diagonale") - return board[0][0] + return board[1][1] print("not in diagonale") return None @@ -71,10 +71,12 @@ def get_winner(board: list) -> int: for won in win_type: winner = won(board) if winner is not None: - print("The winner is player:") + print(f"The winner is player: {winner}") return winner + print("There is no winner") return 0 -tic_tac_toe = get_winner(board_1) -print(tic_tac_toe) +if __name__ == '__main__': + tic_tac_toe = get_winner(board_1) + print(tic_tac_toe) diff --git a/src/pp_27_tic_tac_toe_draw.py b/src/pp_27_tic_tac_toe_draw.py index 3b7e789..9e94c55 100644 --- a/src/pp_27_tic_tac_toe_draw.py +++ b/src/pp_27_tic_tac_toe_draw.py @@ -1,3 +1,5 @@ +from pp_26_check_tic_tac_toe import get_winner + game = [[0, 0, 0], [0, 0, 0], [0, 0, 0]] @@ -34,33 +36,30 @@ def play_the_game(board: list): board (list): input board """ number_of_moves = 0 + current_player = PLAYER_1 while True: - if number_of_moves == 9: + if number_of_moves >= 9: break - print("Make your move as row number,column number") - player_1 = input("Player 1, you are on - row/column: ") - player_1_move = player_move(player_1) - - if board[player_1_move['row']][player_1_move['column']] == 0: - board[player_1_move['row']][player_1_move['column']] = PLAYER_1 - number_of_moves += 1 - - print(game[0]) - print(game[1]) - print(game[2]) print("Make your move as row number,column number") - player_2 = input("Player 2, you are on - row/column: ") - player_2_move = player_move(player_2) + player_input = input(f"Player {current_player}, you are on - row/column: ") + players_move = player_move(player_input) - if board[player_2_move['row']][player_2_move['column']] == 0: - board[player_2_move['row']][player_2_move['column']] = PLAYER_2 + if board[players_move['row']][players_move['column']] == 0: + board[players_move['row']][players_move['column']] = current_player number_of_moves += 1 print(game[0]) print(game[1]) print(game[2]) + if get_winner(game) != 0: + break + + if current_player == PLAYER_1: + current_player = PLAYER_2 + else: + current_player = PLAYER_1 print("Game over")