Skip to content

Instantly share code, notes, and snippets.

@jpadams
Created November 29, 2013 09:37
Show Gist options
  • Save jpadams/7703488 to your computer and use it in GitHub Desktop.
Save jpadams/7703488 to your computer and use it in GitHub Desktop.
import os
import random
import treelib
from treelib import Node, Tree
SPACER = '_'
def init_board():
board = [[SPACER for x in xrange(3)] for x in xrange(3)]
return board
def change_player(player):
if player == 'x':
return 'o'
else:
return 'x'
def get(move, board):
m = int(move)
if m == 1: return board[0][0]
elif m == 2: return board[0][1]
elif m == 3: return board[0][2]
elif m == 4: return board[1][0]
elif m == 5: return board[1][1]
elif m == 6: return board[1][2]
elif m == 7: return board[2][0]
elif m == 8: return board[2][1]
elif m == 9: return board[2][2]
def set(move, current_player, board):
m = int(move)
if m == 1: board[0][0]=current_player
elif m == 2: board[0][1]=current_player
elif m == 3: board[0][2]=current_player
elif m == 4: board[1][0]=current_player
elif m == 5: board[1][1]=current_player
elif m == 6: board[1][2]=current_player
elif m == 7: board[2][0]=current_player
elif m == 8: board[2][1]=current_player
elif m == 9: board[2][2]=current_player
def getMove(player, computer, board):
if player == computer:
computer_move(computer, board)
else:
human_move(player, board)
def computer_move(computer, board):
while True:
move = random.randint(1, 9)
if get(move, board) == SPACER:
set(move, computer, board)
return
def human_move(human, board):
print "please make a move, player " + human
while True:
move = raw_input()
if get(move, board) == SPACER:
set(move, human, board)
return
else:
print "try again"
def tie(board):
b = [ get(1, board),
get(2, board),
get(3, board),
get(4, board),
get(5, board),
get(6, board),
get(7, board),
get(8, board),
get(9, board)
]
if SPACER in b:
return False
elif win(board):
return False
else:
return True
def print_board(board):
os.system('clear')
print board[0]
print board[1]
print board[2]
def win(board):
one = get(1, board)
two = get(2, board)
three = get(3, board)
four = get(4, board)
five = get(5, board)
six = get(6, board)
seven = get(7, board)
eight = get(8, board)
nine = get(9, board)
if one == two == three: return one
elif four == five == six: return four
elif seven == eight == nine: return seven
elif one == four == seven: return one
elif two == five == eight: return two
elif three == six == nine: return three
elif one == five == nine: return one
elif three == five == seven: return three
else: return False
def play(current_player, computer_player):
board = init_board()
while True:
print_board(board)
getMove(current_player, computer_player, board)
print_board(board)
if win(board) == current_player:
print "You won, player " + current_player + "!!"
quit()
if tie(board):
print "It's a tie. Play again?"
quit()
current_player = change_player(current_player)
play('x', 'o') # x first, o computer
# play('o', 'o') # o first, o computer
# play('o', 'x') # o first, x computer
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment