| | |
Problems writing code for my project
Please support our Python advertiser: Programming Forums - DaniWeb Sister Site
![]() |
•
•
Join Date: Oct 2009
Posts: 4
Reputation:
Solved Threads: 0
I'm writing code in python for a tic tac toe game. I have ran into a problem. can any one help me out. thanks
Editor's note:
If you have an error please state the error message.
Also, use code tags with your code to preserve the indentations. Otherwise the code is very difficult to read and not too many folks will help.
[code=python]
your Python code here
[/code]
python Syntax (Toggle Plain Text)
# TIC TAC TOE # Started: 10/19/09 # Ended: still in progress #GLOBAL CONSTANTS X = "X" O = "O" Empty = " " TIE = "TIE" NUM_SQUARES = 9 def display_instruct(): """Display game instructions.""" print \ """ Welcome to the intellectual challenge of all time: Tic-Tac-Toe. You will make your move know by entering a number, 0 - 8. The number will correspond to the board position as illustrated: 0 | 1 | 2 _________ 3 | 4 | 5 _________ 6 | 7 | 8 Prepare yourself. The ultimate battle is about to begin. \n """ def ask_yes_no(question): """Ask a yes or no question.""" response = None while response not in ("y", "n"): response = raw_input(question).lower() return response def ask_number(question, low, high): """Ask for a number within a range.""" response = None while response not in range(low, high): response = int(raw_input(question)) return response def pieces(): """Determine if Player 1 or Computer goes first.""" go_first = ask_yes_no("Do you require the first move? (y/n):") if go_first == "y": print "\nThen take the first move." player1 = X computer = O else: print "\nComputer will go first." player2 = X computer = O return computer, player1 def new_board(): """Create new game board.""" board = [] for square in range(NUM_SQUARES): board.append(EMPTY) return board def display_board(board): """Display game board on screen.""" 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 legal_moves(board): """Create list of legal moves.""" moves =[] for squares in range(NUM_SQUARES): if board[square] == EMPTY: moves.append(square) return moves def winner(board): """Determine the game winner.""" WAYS_TO_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 row in WAYS_TO_WIN: if board[row[0]] == board[row[1]] == board[row[2]] != EMPTY: winner = board[row[0]] return winner if EMPTY not in board: return TIE return None def player1_move(board, player1): """Get Player 1 move.""" legal = legal_moves(board) move = None while move not in legal: move = ask_number("Where will you move? (0 - 8): ", 0, NUM_SQUARES) if move not in legal: print "\nThat square is already occupied. Choose another.\n" print "Fine..." return move def computer_move(board, computer, player1): """ Make computer move.""" # make a copy to work with since function will be changing list board = board[:] # the best positions to have, in order BEST_MOVES = (4, 0, 2, 6, 8, 1, 3, 5, 7) print "I shall take square number", # if computer can win, block that move for move in legal_moves(board): board[move] = computer if winner(board) == computer: print move return move # done checking this move, undo it board[move] = EMPTY # if player1 can win, block that move for move in legal_moves(board): board[move] = player1 if winner(board) == player1: print move return move # done checking this move, undo it board[move] = EMPTY # since no one can win on next move, pick open square for move in BEST_MOVES: if move in legal_moves(board): print move return move #done checking this move, undo it board[move] = EMPTY def next_turn(turn): """Switch turns.""" if turn == X: return O else: return X def congrat_winner(The_winner, computer, player1): """Congratulate the winner.""" if the_winner != TIE: print the_winner, "won\n" else: print "It's a tie!\n" if the_winner == computer: print " Computer is great.\n" elif the_winner == player1: print "Player 1 is great.\n" elif the_winner == TIE: print "You two try again.\n" def main(): display_instruct() computer, player1 = pieses() turn = X board = new_board() display_board(board) while not winner(board): if turn == player1: move = player1_move(board, player1) board[move] = player1 else: turn == computer move = computer_move(board, player2) board[move] = computer display_board(board) turn = next_turn(turn) the_winner = winner(board) congrat_winner(the_winner , computer, player1) # start the program main() raw_input("\n\nPress the enter key to quit.")
Editor's note:
If you have an error please state the error message.
Also, use code tags with your code to preserve the indentations. Otherwise the code is very difficult to read and not too many folks will help.
[code=python]
your Python code here
[/code]
Last edited by vegaseat; Oct 20th, 2009 at 10:36 am. Reason: added code tags
0
#4 Oct 20th, 2009
soooooo... what's your question
?
and Yes pls use code tags next time.... so much easier to read!
? and Yes pls use code tags next time.... so much easier to read!
0
#5 Oct 20th, 2009
Just some obvious stuff:
Lines 124 to 140 have lost their indentations as a code block. They belong to function computer_move().
pieces is misspelled in line 172
You also need to do something about your globals (check case).
squares should be square in line 76
You will also discover some runtime problems.
Good luck with your project!
Lines 124 to 140 have lost their indentations as a code block. They belong to function computer_move().
pieces is misspelled in line 172
You also need to do something about your globals (check case).
squares should be square in line 76
You will also discover some runtime problems.
Good luck with your project!
Last edited by vegaseat; Oct 20th, 2009 at 11:23 am.
May 'the Google' be with you!
•
•
Join Date: Oct 2009
Posts: 4
Reputation:
Solved Threads: 0
0
#6 Oct 20th, 2009
There's an error in your program:
***'return' outside function (line 129)
This code is straight out of the book. I was trying this before I changed it for a two player game. The book is "Python Programming, for the absolute beginner second edition"
***'return' outside function (line 129)
This code is straight out of the book. I was trying this before I changed it for a two player game. The book is "Python Programming, for the absolute beginner second edition"
Last edited by xaeubanks; Oct 20th, 2009 at 4:43 pm.
0
#7 Oct 20th, 2009
•
•
•
•
There's an error in your program:
***'return' outside function (line 129)
Python Syntax (Toggle Plain Text)
IDLE 2.6.2 >>> def a(x, y): return x + y >>> a(5, 8) 13 >>> x = 5 >>> y = 8 >>> return x + y #this you can not do because outside a function SyntaxError: 'return' outside function >>>
Make small changes and test it out.
Return outside a function will always give a error.
![]() |
Similar Threads
- error while i am writing the code to file upload (ASP.NET)
- please help me (C++)
- Help me write a very simple tool (C++)
- Beware writing code without a plan (C)
- Problems writing stdout to a file, please help! (Perl)
- Creating and copying folders and files (C++)
- new to windows apps (C)
Other Threads in the Python Forum
- Previous Thread: python 2. to 3
- Next Thread: Clearing the screen of text
| Thread Tools | Search this Thread |
abrupt ansi anti approximation assignment avogadro backend beginner binary bluetooth calculator character cmd code customdialog decimals dictionaries dictionary directory drive dynamic error examples excel exe file float format function gnu graphics gui heads homework http ideas import input java launcher leftmouse line linux list lists logging loop module mouse number numbers output parsing path pointer port prime programming progressbar projects push py2exe pygame pyqt python random recursion schedule scrolledtext sqlite statistics stdout string strings sudokusolver sum table terminal text thread threading time tkinter tlapse tricks tuple tutorial twoup ubuntu unicode update urllib urllib2 variable ventrilo wikipedia windows write wxpython xlib






