# Python Tic-Tac-Toe by D10d3
# Goals:
# play tic tac toe with computer
# Optional future goals
# ask to play again
# keep score of games
# ask player if X or O
# ask player if they want to go first
# Better Computer Logic
#**********************************************************************************************
# SETUP
import os
os.system('cls') #Clears the screen on windows machines
import random
board = [' ',' ',' ',' ',' ',' ',' ',' ',' ']
#Sub Routines
def ClearScreen():
os.system('cls') #Clears the screen on windows machines
def ClearBoard():# assign board variables using a list numbered 0-8 for the 9 slots, defaulting to ' ' as empty
board = [' ',' ',' ',' ',' ',' ',' ',' ',' ']
def PrintExampleBoard (): #Example board to for player move selection
print "-------------"
print "| 1 | 2 | 3 |"
print "-------------"
print "| 4 | 5 | 6 |"
print "-------------"
print "| 7 | 8 | 9 |"
print "-------------\n"
def PrintBoard (): #Prints the current board
print "Current Board Positions:"
print "-------------"
print "|", board[0] , "|" , board[1] , "|" , board[2] , "|"
print "-------------"
print "|", board[3] , "|" , board[4] , "|" , board[5] , "|"
print "-------------"
print "|", board[6] , "|" , board[7] , "|" , board[8] , "|"
print "-------------\n"
def PlayerTurn(board): #player selects move and it checks if it's valid and applies it to the board
valid = False
while not valid:
print "Select a square to mark (1-9):"
p_choice = raw_input('>')
if p_choice == '1' or '2' or '3' or '4' or '5' or '6' or '7' or '8' or '9':
valid = True
else:
print '"' , p_choice , 'is not a valid move'
valid = False
if p_choice == "1" and board[0] == " ":
board[0] = "X"
elif p_choice == "2" and board[1] == " ":
board[1] = "X"
elif p_choice == "3" and board[2] == " ":
board[2] = "X"
elif p_choice == "4" and board[3] == " ":
board[3] = "X"
elif p_choice == "5" and board[4] == " ":
board[4] = "X"
elif p_choice == "6" and board[5] == " ":
board[5] = "X"
elif p_choice == "7" and board[6] == " ":
board[6] = "X"
elif p_choice == "8" and board[7] == " ":
board[7] = "X"
elif p_choice == "9" and board[8] == " ":
board[8] = "X"
else:
print '"' , p_choice , '" is not a valid move'
valid = False
return board
def ComputerTurn(board): #Computer selects move and it checks if it's valid and applies it to the board
valid = False
while not valid:
ComputerOptions = ['1','2','3','4','5','6','7','8','9']
p_choice = random.choice(ComputerOptions)
valid = True
if p_choice == "1" and board[0] == " ":
board[0] = "O"
elif p_choice == "2" and board[1] == " ":
board[1] = "O"
elif p_choice == "3" and board[2] == " ":
board[2] = "O"
elif p_choice == "4" and board[3] == " ":
board[3] = "O"
elif p_choice == "5" and board[4] == " ":
board[4] = "O"
elif p_choice == "6" and board[5] == " ":
board[5] = "O"
elif p_choice == "7" and board[6] == " ":
board[6] = "O"
elif p_choice == "8" and board[7] == " ":
board[7] = "O"
elif p_choice == "9" and board[8] == " ":
board[8] = "O"
else:
valid = False
return board
def DidPlayerWin(board,Playing):
# 3 Across Wins
if board[0] == "X" and board [1] == "X" and board[2] == "X":
ClearScreen()
PrintBoard()
print "You Win!"
quit()
elif board[3] == "X" and board [4] == "X" and board[5] == "X":
ClearScreen()
PrintBoard()
print "You Win!"
quit()
elif board[6] == "X" and board [7] == "X" and board[8] == "X":
ClearScreen()
PrintBoard()
print "You Win!"
quit()
# 3 Down Wins
elif board[0] == "X" and board [3] == "X" and board[6] == "X":
ClearScreen()
PrintBoard()
print "You Win!"
quit()
elif board[1] == "X" and board [4] == "X" and board[7] == "X":
ClearScreen()
PrintBoard()
print "You Win!"
quit()
elif board[2] == "X" and board [5] == "X" and board[8] == "X":
ClearScreen()
PrintBoard()
print "You Win!"
quit()
# Diagonal Wins
elif board[0] == "X" and board [4] == "X" and board[8] == "X":
ClearScreen()
PrintBoard()
print "You Win!"
quit()
elif board[2] == "X" and board [4] == "X" and board[6] == "X":
ClearScreen()
PrintBoard()
print "You Win!"
quit()
# No Win
else:
Playing = True
return Playing
def DidComputerWin(board,Playing):
# 3 Across Wins
if board[0] == "O" and board [1] == "O" and board[2] == "O":
ClearScreen()
PrintBoard()
print "The Computer Wins"
quit()
elif board[3] == "O" and board [4] == "O" and board[5] == "O":
ClearScreen()
PrintBoard()
print "The Computer Wins"
quit()
elif board[6] == "O" and board [7] == "O" and board[8] == "O":
ClearScreen()
PrintBoard()
print "The Computer Wins"
quit()
# 3 Down Wins
elif board[0] == "O" and board [3] == "O" and board[6] == "O":
ClearScreen()
PrintBoard()
print "The Computer Wins"
quit()
elif board[1] == "O" and board [4] == "O" and board[7] == "O":
ClearScreen()
PrintBoard()
print "The Computer Wins"
quit()
elif board[2] == "O" and board [5] == "O" and board[8] == "O":
ClearScreen()
PrintBoard()
print "The Computer Wins"
quit()
# Diagonal Wins
elif board[0] == "O" and board [4] == "O" and board[8] == "O":
ClearScreen()
PrintBoard()
print "The Computer Wins"
quit()
elif board[2] == "O" and board [4] == "O" and board[6] == "O":
ClearScreen()
PrintBoard()
print "The Computer Wins"
quit()
# No Win
else:
Playing = True
return Playing
def IsDraw(board,Playing):#Determines if the game ended in a draw
if board[0] != " " and board[1] != " " and board[2] != " " and board[3] != " " and board[4] != " " and board[5] != " " and board[6] != " " and board[7] != " " and board[8] != " ":
ClearScreen()
PrintBoard()
print "The Game Ended in a Draw"
quit()
else:
Playing = True
return Playing
#Introduction
print "lets play Tic-Tac-Toe"
print "You are X's and get to go first\n"
raw_input ("Press Any Key To Begin")
#Game Loop
Playing = True
while Playing == True:
ClearScreen()
PrintBoard()
PrintExampleBoard()
board = PlayerTurn(board)
Playing = DidPlayerWin(board,Playing)
Playing = IsDraw(board,Playing)
board = ComputerTurn(board)
Playing = DidComputerWin(board,Playing)
Playing = IsDraw(board,Playing)
Comments
0 B
|👍
/👎