diff --git a/python_game.py b/python_game.py new file mode 100644 index 0000000..10b0aec --- /dev/null +++ b/python_game.py @@ -0,0 +1,210 @@ +#----------global variables------------ +#https://www.youtube.com/watch?v=BHh654_7Cmw +#Create a board +import random + +board = ['-','-','-', + '-','-','-', + '-','-','-'] + +#if game is still going +GAME_GOING = True +#who won? +WINNER = None +#define valid symbols +SYMBOLS = {'X','O'} +#define players +PLAYER1 = "" +PLAYER2 = "" +#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 + else: + print("Invalid choice") + + board[choice] == current_player + + + +def validate_choice(choice): + is_valid = False + try: + choice = int(choice) + except ValueError: + 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() + + +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 + +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 + +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 + +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 + +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 + +def find_open_spaces(): + #find a random space to select + open_spaces = [] + for i in board: + if i == "-": + open_spaces.append(i) + + return open_spaces + +if __name__ == "__main__": + main() \ No newline at end of file