From 0a7c6f328160f031030613655886c9cf45c6b05d Mon Sep 17 00:00:00 2001 From: Drew Bednar Date: Sun, 2 May 2021 21:48:10 -0400 Subject: [PATCH] Drew bump --- .gitignore | 6 +- python_game.py | 343 ++++++++++++++++++++++++------------------------- 2 files changed, 173 insertions(+), 176 deletions(-) diff --git a/.gitignore b/.gitignore index ae412d6..2051f41 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,5 @@ -env/ \ No newline at end of file +env/ + +.idea + +__pycache__/ \ No newline at end of file diff --git a/python_game.py b/python_game.py index 10b0aec..16d8df5 100644 --- a/python_game.py +++ b/python_game.py @@ -1,210 +1,203 @@ -#----------global variables------------ -#https://www.youtube.com/watch?v=BHh654_7Cmw -#Create a board +# ----------global variables------------ +# https://www.youtube.com/watch?v=BHh654_7Cmw +# Create a board import random -board = ['-','-','-', - '-','-','-', - '-','-','-'] +board = ['-', '-', '-', + '-', '-', '-', + '-', '-', '-'] -#if game is still going +# if game is still going GAME_GOING = True -#who won? +# who won? WINNER = None -#define valid symbols -SYMBOLS = {'X','O'} -#define players +# define valid symbols +SYMBOLS = {'X', 'O'} +# define players PLAYER1 = "" PLAYER2 = "" -#define how many players +# define how many players SINGLE_PLAYER = True CURRENT_PLAYER = random.choice(list(SYMBOLS)) + def main(): - global CURRENT_PLAYER - global SINGLE_PLAYER - global PLAYER1 - global PLAYER2 - - - mode = input("Single player mode y/n: ") - if mode not in "yn": - print("You did not select a valid option no game for you") - exit(1) - - - if mode == "y": - SINGLE_PLAYER = True - else: - SINGLE_PLAYER = False - - player_1 = input("Choose X or O for Player 1: ") - - if player_1 not in SYMBOLS: - print("You did not select a valid option no game for you") - exit(1) - PLAYER1 = player_1 - PLAYER2 = (SYMBOLS - {player_1}).pop() - - display_board () - - #while the game is still going - while GAME_GOING: - #handle a turn - handle_turn() - #check if he game has ended - check_if_game_over() - # cahnge to the other player - CURRENT_PLAYER = (SYMBOLS - {CURRENT_PLAYER}).pop() - - #the game has ended - if WINNER == 'X' or WINNER == 'O': - print (WINNER + "won.") - elif WINNER == None: - print ("Tie.") - -def display_board (): - print(board [0]+ '|'+ board[1]+'|'+ board [2]) - print(board [3]+ '|'+ board[4]+'|'+ board [5]) - print(board [6]+ '|'+ board[7]+'|'+ board [8]) - -#play game of tic tac toe - -def handle_turn(): - # import pdb; pdb.set_trace() - print("Current Player {}".format(CURRENT_PLAYER)) - while True: - if SINGLE_PLAYER: - if CURRENT_PLAYER == PLAYER1: - #take player input - choice = input('Choose a position from 1 to 9: ') - else: - choice = random.choice(find_open_spaces()) - else: - #take player input - choice = input('Choose a position from 1 to 9: ') - if validate_choice(choice): - break + global CURRENT_PLAYER + global SINGLE_PLAYER + global PLAYER1 + global PLAYER2 + + mode = input("Single player mode y/n: ") + if mode not in "yn": + print("You did not select a valid option no game for you") + exit(1) + + if mode == "y": + SINGLE_PLAYER = True else: - print("Invalid choice") + SINGLE_PLAYER = False + + player_1 = input("Choose X or O for Player 1: ") + + if player_1 not in SYMBOLS: + print("You did not select a valid option no game for you") + exit(1) + PLAYER1 = player_1 + PLAYER2 = (SYMBOLS - {player_1}).pop() + + # while the game is still going + while GAME_GOING: + display_board() + # handle a turn + handle_turn() + # import pdb; pdb.set_trace() + # check if he game has ended + check_if_game_over() + # cahnge to the other player + CURRENT_PLAYER = (SYMBOLS - {CURRENT_PLAYER}).pop() + + # the game has ended + display_board() + if WINNER == 'X' or WINNER == 'O': + print(WINNER + " won.") + elif WINNER == None: + print("Tie.") + exit(0) + +def display_board(): + print(board[0] + '|' + board[1] + '|' + board[2]) + print(board[3] + '|' + board[4] + '|' + board[5]) + print(board[6] + '|' + board[7] + '|' + board[8]) + + +# play game of tic tac toe + +def handle_turn(): + # import pdb; pdb.set_trace() + global board + print("Current Player {}".format(CURRENT_PLAYER)) + while True: + if SINGLE_PLAYER: + if CURRENT_PLAYER == PLAYER1: + # take player input + choice = input('Choose a position from 1 to 9: ') + else: + choice = random.choice(find_open_spaces()) + else: + # take player input + choice = input('Choose a position from 1 to 9: ') + choice = int(choice) - 1 + if validate_choice(choice): + break + else: + print("Invalid choice") + board[choice] = CURRENT_PLAYER - board[choice] == current_player - - def validate_choice(choice): - is_valid = False - try: - choice = int(choice) - except ValueError: + is_valid = False + try: + choice = int(choice) + except ValueError: + return is_valid + + if choice in list(range(0, 9)) and choice in find_open_spaces(): + is_valid = True + return is_valid - import pdb; pdb.set_trace() - if choice in list(range(0,9)) and choice in find_open_spaces(): - valid = True - else: - brake - return is_valid - - def check_if_game_over(): - check_if_win() - - check_if_tie() + check_if_win() + + check_if_tie() + - def check_if_win(): - #call global variable - global winner - #check rows - row_winner = check_rows() - #check columns - column_winner = check_columns() - #check diagonals - diagonal_winner = check_diagonal() - - - if row_winner: - #there is a winner - winner = row_winner - elif column_winner: - #there is a winner - winner = column_winner - elif diagonal_winner: - #there is a winner - winner = diagonal_winner - else: - winner = None - return + # call global variable + global WINNER + # check rows + row_winner = check_rows() + # check columns + column_winner = check_columns() + # check diagonals + diagonal_winner = check_diagonal() + + if row_winner: + # there is a winner + WINNER = row_winner + elif column_winner: + # there is a winner + WINNER = column_winner + elif diagonal_winner: + # there is a winner + WINNER = diagonal_winner + else: + WINNER = None + return + def check_rows(): - row_1 = board[0] == board[1] == board[2] != '-' - row_2 = board[3] == board[4] == board[5] != '-' - row_3 = board[6] == board[7] == board[8] != '-' - if row_1 or row_2 or row_3: - game_going = False - #display the winner - if row_1: - return board[0] - if row_2: - return board[3] - if row_3: - return board[6] - return + global GAME_GOING + row_1 = board[0] == board[1] == board[2] != '-' + row_2 = board[3] == board[4] == board[5] != '-' + row_3 = board[6] == board[7] == board[8] != '-' + if row_1 or row_2 or row_3: + GAME_GOING = False + # display the winner + if row_1: + return board[0] + if row_2: + return board[3] + if row_3: + return board[6] + return + def check_columns(): - column_1 = board[0] == board[3] == board[6] != '-' - column_2 = board[1] == board[4] == board[7] != '-' - column_3 = board[2] == board[5] == board[8] != '-' - #display the winner - if column_1: - return board[0] - if column_2: - return board[1] - if column_3: - return board[2] - return - + column_1 = board[0] == board[3] == board[6] != '-' + column_2 = board[1] == board[4] == board[7] != '-' + column_3 = board[2] == board[5] == board[8] != '-' + # display the winner + if column_1: + return board[0] + if column_2: + return board[1] + if column_3: + return board[2] + return + + def check_diagonal(): - diagonal_1 = board[0] == board[4] == board[8] != '-' - diagonal_2 = board[2] == board[4] == board[6] != '-' - #display the winner - if diagonal_1: - return board[0] - if diagonal_2: - return board[2] - return - -#check_if_tie + diagonal_1 = board[0] == board[4] == board[8] != '-' + diagonal_2 = board[2] == board[4] == board[6] != '-' + # display the winner + if diagonal_1: + return board[0] + if diagonal_2: + return board[2] + return + + +# check_if_tie def check_if_tie(): - global game_going - if "-" not in board: - game_going = False - return - -#change between players -def change_player(): -#call global variable - global current_player - #if the current player was X we change to O - if current_player == 'X': - current_player = 'O' - #if current player is O, change to X - elif current_player == 'O': - current_player = 'X' - return + global GAME_GOING + if "-" not in board: + GAME_GOING = False + return + def find_open_spaces(): - #find a random space to select - open_spaces = [] - for i in board: - if i == "-": - open_spaces.append(i) + # find a random space to select + open_spaces = [] + for i in range(0, len(board)): + if board[i] == "-": + open_spaces.append(i) return open_spaces + if __name__ == "__main__": - main() \ No newline at end of file + main()