Immediate Help with python program!

Daniel dkeeper09 at yahoo.com
Wed Dec 9 19:21:18 EST 2009


On Dec 9, 6:18 pm, Jon Clements <jon... at googlemail.com> wrote:
> On Dec 9, 11:55 pm, Daniel <dkeepe... at yahoo.com> wrote:
>
>
>
> > i am making a tic-tac-toe game using python. i am pretty new to it,
> > but cant seem to figure this one out.
> > Here is my code:
>
> > X = "X"
> > O = "O"
> > empty = " "
> > tie = "Tie"
> > squares = 9
>
> > def display():
> >     print """Welcome to Tic-Tac-Toe. Player will play against the
> > computer.
> >             \nYou will move by typing in the number to the
> > corresponding square below:
>
> >                   0 | 1 | 2
> >                 -------------
> >                   3 | 4 | 5
> >                 -------------
> >                   6 | 7 | 8 \n"""
>
> > def select():
> >     question = ask("Do you want to go first? (y/n)")
> >     if question == "y":
> >         player = X
> >         computer = O
> >     else:
> >         computer = X
> >         player = O
> >     return computer, player
>
> > def newBoard():
> >     board = []
> >     for i in range(squares):
> >         board.append(empty)
> >     return board
>
> > def displayBoard(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 boardMoves(board):
> >     moves = []
> >     for i in range(squares):
> >         if board[i] == empty:
> >             moves.append(i)
> >     return moves
>
> > def findWinner(board):
> >     win = ((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 i in win:
> >         if board[i[0]] == board[i[1]] == board[i[2]] != empty:
> >             winner = board[i[0]]
> >             return winner
> >         if empty not in board:
> >             return tie
> >         return None
>
> > def askMove(question, low, high):
> >     response = None
> >     while response not in range(low, high):
> >         response = int(raw_input(question))
> >     return response
>
> > def playerMove(board, player):
> >     legal = boardMoves(board)
> >     move = None
> >     while move not in legal:
> >         move = askMove("Pick a number where you want to move(0-8):",
> > 0, squares)
> >         if move not in legal:
> >             print "\nThat move is taken already. Pick another."
> >     return move
>
> > def compMove(board, computer, player):
> >     board = board[:]
> >     strategy = (4, 0, 2, 6, 8, 1, 3, 5, 7)
> >     print "Computer chooses:",
>
> >     # if computer can win, take that move
> >     for move in boardMoves(board):
> >         board[move] = computer
> >         if findWinner(board) == computer:
> >             print move
> >             return move
> >         board[move] = empty
>
> >     # if human can win, block that move
> >     for move in boardMoves(board):
> >         board[move] = player
> >         if findWinner(board) == player:
> >             print move
> >             return move
> >         board[move] = empty
>
> >     # If no one can win pick best open square
> >     for move in strategy:
> >         if move in boardMoves(board):
> >             print move
> >             return move
>
> > def nextTurn(turn):
> >     if turn == X:
> >         return 0
> >     else:
> >         return X
>
> > def gameWinner(winner, computer, player):
> >     if winner == computer:
> >         print "Computer Wins. Better luck next time"
> >     elif winner == player:
> >         print "You win. Good job!"
> >     elif winner == tie:
> >         print "Tie game. Play again."
>
> > def main():
> >     display()
> >     computer, player = select()
> >     turn = X
> >     board = newBoard()
> >     displayBoard(board)
>
> >     while not findWinner(board):
> >         if turn == player:
> >             move = playerMove(board, player)
> >             board[move] = player
> >         else:
> >             move = compMove(board, computer, player)
> >             board[move] = computer
> >         displayBoard(board)
> >         turn = nextTurn(turn)
> >     winner = findWinner(board)
> >     gameWinner(winner, computer, player)
>
> > main()
>
> > Here is my problem:
> > If you hit 'n' at the beginning prompt, the computer does four moves
> > automatically and wins- you can't input anything. If you hit 'y' at
> > the beginning prompt, you can play but cannot win. I got three x's in
> > a row and it didn't let me win. It just keeps letting
> > you input numbers until the computer wins even if you have three in a
> > row.
>
> > If anyone can help please do asap.
> > Thank you!
>
> Someone's homework assignment is overdue/due very soon? And, I don't
> believe for a second this is your code. In fact, just searching for
> (the obvious Java based) function names leads me to believe you've
> 'butchered' it from Java code (do you not think your teacher/lecturer
> can do the same?).
>
> Someone might well help out, but I'd be surprised if you got a "here's
> how to fix it response", as from my POV you haven't done any work.
>
> Of course, I'm occasionally wrong,
>
> Jon.

Just lookin for some help man. It is my code. but im here because i
needed help and i dont know whats wrong with it. Figured someone would
offer a hand. Thanks anyway.



More information about the Python-list mailing list