Skip to content

Instantly share code, notes, and snippets.

@Himan10
Last active August 1, 2019 11:48
Show Gist options
  • Select an option

  • Save Himan10/9907d28792e88b50ecf0c33977f31eff to your computer and use it in GitHub Desktop.

Select an option

Save Himan10/9907d28792e88b50ecf0c33977f31eff to your computer and use it in GitHub Desktop.
TIC TAC TOE - Making a game TIE
""" Playing Tic Tac Toe with Computer """
import random
BOARD_VALUE = {}
for number in range(1, 10):
BOARD_VALUE[number] = " "
COMP_MOVES = BOARD_VALUE.keys()
COMP_MOVES = list(COMP_MOVES)
def corner_center_side():
""" Making a Move """
turn = " x "
corner = [1, 3, 7, 9]
#side = [2, 4, 6, 8]
# Strategies for make a winning move
if all(BOARD_VALUE[i] == " " for i in corner):
return random.choice(corner)
if BOARD_VALUE[5] == " ":
return 5
if BOARD_VALUE[9] == " ": # for 9th move
if (
BOARD_VALUE[1] == turn and BOARD_VALUE[5] == turn or
BOARD_VALUE[3] == turn and BOARD_VALUE[6] == turn or
BOARD_VALUE[7] == turn and BOARD_VALUE[8] == turn
):
return 9
if BOARD_VALUE[8] == " ": # for 8th move
if (
BOARD_VALUE[7] == turn and BOARD_VALUE[9] == turn or
BOARD_VALUE[2] == turn and BOARD_VALUE[5] == turn
):
return 8
if BOARD_VALUE[7] == " ": # for 7th move
if (
BOARD_VALUE[1] == turn and BOARD_VALUE[4] == turn or
BOARD_VALUE[3] == turn and BOARD_VALUE[5] == turn or
BOARD_VALUE[8] == turn and BOARD_VALUE[9] == turn
):
return 7
if BOARD_VALUE[6] == " ": # for 6th move
if (
BOARD_VALUE[3] == turn and BOARD_VALUE[9] == turn or
BOARD_VALUE[4] == turn and BOARD_VALUE[5] == turn
):
return 6
if BOARD_VALUE[5] == " ": # for 5th move
if (
BOARD_VALUE[1] == turn and BOARD_VALUE[9] == turn or
BOARD_VALUE[2] == turn and BOARD_VALUE[8] == turn or
BOARD_VALUE[3] == turn and BOARD_VALUE[7] == turn or
BOARD_VALUE[4] == turn and BOARD_VALUE[6] == turn
):
return 5
if BOARD_VALUE[4] == " ": # for 4th move
if (
BOARD_VALUE[1] == turn and BOARD_VALUE[7] == turn or
BOARD_VALUE[5] == turn and BOARD_VALUE[6] == turn
):
return 4
if BOARD_VALUE[3] == " ": # for 3rd move
if (
BOARD_VALUE[1] == turn and BOARD_VALUE[2] == turn or
BOARD_VALUE[6] == turn and BOARD_VALUE[9] == turn or
BOARD_VALUE[5] == turn and BOARD_VALUE[7] == turn
):
return 3
if BOARD_VALUE[2] == " ": # for 2nd move
if (
BOARD_VALUE[5] == turn and BOARD_VALUE[8] == turn or
BOARD_VALUE[1] == turn and BOARD_VALUE[3] == turn
):
return 2
if BOARD_VALUE[1] == " ": # for 1st move
if (
BOARD_VALUE[2] == turn and BOARD_VALUE[3] == turn or
BOARD_VALUE[4] == turn and BOARD_VALUE[7] == turn or
BOARD_VALUE[5] == turn and BOARD_VALUE[9] == turn
):
return 1
return random.choice(COMP_MOVES)
def computer_play(turn):
""" Computer move on the board """
comp_val = corner_center_side()
print(" Computer value : ", comp_val)
BOARD_VALUE[comp_val] = turn
del COMP_MOVES[COMP_MOVES.index(comp_val)]
def user_play(turn):
""" User move on the board """
user_val = int(input(" Make your Move : "))
BOARD_VALUE[user_val] = turn
del COMP_MOVES[COMP_MOVES.index(user_val)]
def print_board():
""" Printing the Board """
print(" _____ _____ _____")
print("| | | |")
print(f"|{BOARD_VALUE[1]}|{BOARD_VALUE[2]}|{BOARD_VALUE[3]}|")
print("| | | |")
print(" -----+-----+-----")
print("| | | |")
print(f"|{BOARD_VALUE[4]}|{BOARD_VALUE[5]}|{BOARD_VALUE[6]}|")
print("| | | |")
print(" -----+-----+-----")
print("| | | |")
print(f"|{BOARD_VALUE[7]}|{BOARD_VALUE[8]}|{BOARD_VALUE[9]}|")
print("|_____|_____|_____|")
def winner(turn):
""" Win the Game """
return ((BOARD_VALUE[1] == turn and BOARD_VALUE[2] == turn and BOARD_VALUE[3] == turn) or
(BOARD_VALUE[4] == turn and BOARD_VALUE[5] == turn and BOARD_VALUE[6] == turn) or
(BOARD_VALUE[7] == turn and BOARD_VALUE[8] == turn and BOARD_VALUE[9] == turn) or
(BOARD_VALUE[1] == turn and BOARD_VALUE[4] == turn and BOARD_VALUE[7] == turn) or
(BOARD_VALUE[2] == turn and BOARD_VALUE[5] == turn and BOARD_VALUE[8] == turn) or
(BOARD_VALUE[3] == turn and BOARD_VALUE[6] == turn and BOARD_VALUE[9] == turn) or
(BOARD_VALUE[1] == turn and BOARD_VALUE[5] == turn and BOARD_VALUE[9] == turn) or
(BOARD_VALUE[3] == turn and BOARD_VALUE[5] == turn and BOARD_VALUE[7] == turn))
def main():
""" Main function """
comp_turn = " o "
chance = random.randint(0, 1) # 0 for user and 1 for computer
try:
user_turn = " " + str(input(" 'x' or 'o' : ")) + " "
if user_turn == " o ":
comp_turn = " x "
for i in range(chance, chance + 9): # chance == 0 then we've 0-9
# and chance == 1 then we've 1-10
if i % 2 != 0:
user_play(user_turn)
win = winner(user_turn)
else:
computer_play(comp_turn)
win = winner(comp_turn)
print_board()
if win:
print(" WINNNEEEERRRRR ")
break
except (IndexError, ValueError) as err:
print(err)
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment