[Tutor] HELP!!!!!
Michael Kim
kimgaang at aol.com
Thu Apr 17 09:40:11 CEST 2008
Hi I am having a really hard time making my tictactoe program work. I
was wondering if you could could check it out and help me with the
error. Thanks
blank = " "
def asknumber(question, low, high):
response = None
while response not in range(low, high):
response = int(raw_input(question))
return response
def askquestion(question):
response = None
while response not in ("y", "n"):
response = raw_input (question).lower()
return response
def pieces():
whosefirst=askquestion("Do you want to go first? (y/n): ")
if whosefirst == "y":
human = X
X="X"
computer = O
O="O"
else:
computer = X
human = O
return computer, human
def newboard():
board = []
box = 9
for square in range(box):
blank = " "
board.append(blank)
return board
def createboard(board):
print "\n\t", board[0], "|", board[1], "|", board[2]
print "\t", "---------"
print "\t", board[3], "|", board[4], "|", board[5]
print "\t", "---------"
print "\t", board[6], "|", board[7], "|", board[8], "\n"
def allowedmove(board):
moves=[]
for square in range(box):
if board[square] == blank:
moves.append(square)
return moves
def winner(board):
movestowin=((0,1,2),(3,4,5),(6,7,8),(0,3,6),(1,4,7),(2,5,8),(0,4,8),(2,4,6))
for row in movestowin:
if board[row[0]] == board[row[1]] ==board[row[2]] !=blank:
winner=board[row[0]]
return winner
if blank not in board:
tie = "tie"
return tie
return None
def humanmove (board, human):
allowed = allowedmove(board)
move = None
while move not in allowed:
move = asknumber("It is your turn. Pick 0-8:", 0, box)
if move not in allowed:
print "\nPick again.\n"
return move
def computermove (board, computer, human):
board = board[:]
winnermoves = (4, 0, 2, 6, 8, 1, 3, 5, 7)
for move in allowedmoves(board):
board[move] = computer
if winner (board) == computer:
print move
return move
board[move] = blank
for move in allowedmoves(board):
board[move] = human
if winner(board) == human:
print move
return move
board[move] = blank
for move in winnermoves:
if move in allwedmoves(board):
print move
return move
def whoseturn(turn):
if turn == X:
return O
else:
return X
def whowon(iwon, computer, human):
if iwon !=tie:
print iwon, "you win!"
else:
print "a tie"
def main():
computer, human = pieces()
turn = X
board = newboard()
createboard(board)
while not winner(board):
if turn == human:
move = humanmove(board, human)
board[move] = human
else:
move = computermove(board, computer, human)
board[move] = computer
createboard(board)
turn = whoseturn(turn)
iwon = winner(board)
whowon(iwon, computer, human)
main()
More information about the Tutor
mailing list