Hi all! Can You explain me what happens when in this function I remove board arg: def human_move(board, human)? What is doing that argument? Thanks! # global constantsX = "X"O = "O"EMPTY = " "TIE = "TIE"NUM_SQUARES = 9 def display_instruct(): """Display game instructions.""" print \ """ Welcome to the greatest intellectual challenge of all time: Tic-Tac-Toe. This will be a showdown between your human brain and my silicon processor. You will make your move known 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, human. 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, step=1): """Ask for a number within a range.""" response = None while response not in range(low, high, step): response = int(raw_input(question)) return response def pieces(): """Determine if player 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. You will need it." human = X computer = O
else: print "\nYour bravery will be your undoing... I will go first." computer = X human = O return computer, human 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 square 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 human_move(human): # <= here is board removed """Get human 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, foolish human. Choose another.\n" print "Fine.." return move def computer_move(board, computer, human): """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, take 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 human can win, block that move for move in legal_moves(board): board[move] = human if
winner(board) == human: print move return move # done checkin this move, undo it board[move] = EMPTY # since no one can win on next move, pick best open square for move in BEST_MOVES: if move in legal_moves(board): print move return move def next_turn(turn): """Switch turns.""" if turn == X: return O else: return X
def congrat_winner(the_winner, computer, human): """Congratulate the winner.""" if the_winner != TIE: print the_winner, "won!\n" else: print "It's a tie!\n" if the_winner == computer: print "As I predicted, human, I am triumphant once more. \n" \ "Proof that computers are superior to humans in all regards." elif the_winner == human: print "No, no! It cannot be! Somehow you tricked me, human. \n" \ "But never again! I, the computer, so swears it!"
elif the_winner == TIE: print "You were most lucky, human, and somehow managed to tie me. \n" \ "Celebrate today... for this is the best you will ever achieve." def main(): display_instruct()