<legend id='gKu4f'><style id='gKu4f'><dir id='gKu4f'><q id='gKu4f'></q></dir></style></legend>

  1. <tfoot id='gKu4f'></tfoot>
  2. <i id='gKu4f'><tr id='gKu4f'><dt id='gKu4f'><q id='gKu4f'><span id='gKu4f'><b id='gKu4f'><form id='gKu4f'><ins id='gKu4f'></ins><ul id='gKu4f'></ul><sub id='gKu4f'></sub></form><legend id='gKu4f'></legend><bdo id='gKu4f'><pre id='gKu4f'><center id='gKu4f'></center></pre></bdo></b><th id='gKu4f'></th></span></q></dt></tr></i><div id='gKu4f'><tfoot id='gKu4f'></tfoot><dl id='gKu4f'><fieldset id='gKu4f'></fieldset></dl></div>
    • <bdo id='gKu4f'></bdo><ul id='gKu4f'></ul>
  3. <small id='gKu4f'></small><noframes id='gKu4f'>

    1. Python 井字游戏

      Python tic tac toe game(Python 井字游戏)

      <i id='vrkNG'><tr id='vrkNG'><dt id='vrkNG'><q id='vrkNG'><span id='vrkNG'><b id='vrkNG'><form id='vrkNG'><ins id='vrkNG'></ins><ul id='vrkNG'></ul><sub id='vrkNG'></sub></form><legend id='vrkNG'></legend><bdo id='vrkNG'><pre id='vrkNG'><center id='vrkNG'></center></pre></bdo></b><th id='vrkNG'></th></span></q></dt></tr></i><div id='vrkNG'><tfoot id='vrkNG'></tfoot><dl id='vrkNG'><fieldset id='vrkNG'></fieldset></dl></div>
      <legend id='vrkNG'><style id='vrkNG'><dir id='vrkNG'><q id='vrkNG'></q></dir></style></legend>

        <bdo id='vrkNG'></bdo><ul id='vrkNG'></ul>
        <tfoot id='vrkNG'></tfoot>

                  <tbody id='vrkNG'></tbody>
              1. <small id='vrkNG'></small><noframes id='vrkNG'>

              2. 本文介绍了Python 井字游戏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                问题描述

                我不确定是否需要所有代码,所以我会发布它:

                I am unsure if all of the code will be necessary or not so i will post it:

                # Tic-Tac-Toe
                # Plays the game of tic-tac-toe against a human opponent
                
                # global constants
                X = "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. 
                
                    """
                    )
                
                
                def ask_yes_no(question):
                    """Ask a yes or no question."""
                    response = None
                    while response not in ("y", "n"):
                        response = 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(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("
                Then take the first move.  You will need it.")
                        human = X
                        computer = O
                    else:
                        print("
                Your 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("
                	", board[0], "|", board[1], "|", board[2])
                    print("	","---------")
                    print("	",board[3], "|", board[4], "|", board[5])
                    print("	","---------")
                    print("	",board[6], "|", board[7], "|", board[8])
                
                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(board, human):
                    """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("
                That square is already occupied, foolish human.  Choose another.
                ")
                    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,", end="")
                
                    # 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!
                ")
                    else:
                        print("It's a tie!
                ")
                
                    if the_winner == computer:
                        print("As I predicted, human, I am triumphant once more.  
                " 
                              "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. 
                " 
                              "But never again!  I, the computer, so swear it!")
                
                    elif the_winner == TIE:
                        print("You were most lucky, human, and somehow managed to tie me.  
                " 
                              "Celebrate today... for this is the best you will ever achieve.")
                
                
                def main():
                    display_instruct()
                    computer, human = pieces()
                    turn = X
                    board = new_board()
                    display_board(board)
                
                    while not winner(board):
                        if turn == human:
                            move = human_move(board, human)
                            board[move] = human
                        else:
                            move = computer_move(board, computer, human)
                            board[move] = computer
                        display_board(board)
                        turn = next_turn(turn)
                
                    the_winner = winner(board)
                    congrat_winner(the_winner, computer, human)
                
                
                # start the program
                main()
                input("
                
                Press the enter key to quit.")
                

                这是我正在阅读的书中的一个例子,我还没有完全理解,我认为直到:

                This is an example in a book i am reading and i am not fully understanding, i think understand all of it up until:

                for row in WAYS_TO_WIN:
                            if board[row[0]] == board[row[1]] == board[row[2]] != EMPTY:
                                winner = board[row[0]]
                                return winner
                

                谁能解释一下这个函数的作用,更具体地说是什么条件if board[row[0]] == board[row[1]] == board[row[2]] != EMPTY: 正在测试?

                Can somebody please explain what this function does and more specifically what the condition if board[row[0]] == board[row[1]] == board[row[2]] != EMPTY: is testing?

                推荐答案

                它只是检查当前棋盘,看看是否有任何获胜的单元格组合(如行数组中所列)具有 (a) 相同的值和 (b)该值不是 EMPTY.

                It's just checking the current board to see if any winning combination of cells (as listed in the row array) have (a) the same value and (b) that value is not EMPTY.

                注意:在 Python 中,如果 a == b == c != d,则检查 a ==b AND b == c AND c != d

                Note: in Python, if a == b == c != d, checks that a ==b AND b == c AND c != d

                因此,如果单元格 0、1 和 2 都有 X,那么在第一次通过循环时,它将从获胜例程返回 X.

                So if cells 0, 1, and 2, all have X, then on the first pass through the loop, it will return X from the winner routine.

                这篇关于Python 井字游戏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                相关文档推荐

                Initialize Multiple Numpy Arrays (Multiple Assignment) - Like MATLAB deal()(初始化多个 Numpy 数组(多重赋值) - 像 MATLAB deal())
                How to extend Python class init(如何扩展 Python 类初始化)
                What#39;s the difference between dict() and {}?(dict() 和 {} 有什么区别?)
                What is a wrapper_descriptor, and why is Foo.__init__() one in this case?(什么是 wrapper_descriptor,为什么 Foo.__init__() 在这种情况下是其中之一?)
                Initialize list with same bool value(使用相同的布尔值初始化列表)
                setattr with kwargs, pythonic or not?(setattr 与 kwargs,pythonic 与否?)
                • <bdo id='BDOgf'></bdo><ul id='BDOgf'></ul>
                  • <small id='BDOgf'></small><noframes id='BDOgf'>

                        <i id='BDOgf'><tr id='BDOgf'><dt id='BDOgf'><q id='BDOgf'><span id='BDOgf'><b id='BDOgf'><form id='BDOgf'><ins id='BDOgf'></ins><ul id='BDOgf'></ul><sub id='BDOgf'></sub></form><legend id='BDOgf'></legend><bdo id='BDOgf'><pre id='BDOgf'><center id='BDOgf'></center></pre></bdo></b><th id='BDOgf'></th></span></q></dt></tr></i><div id='BDOgf'><tfoot id='BDOgf'></tfoot><dl id='BDOgf'><fieldset id='BDOgf'></fieldset></dl></div>
                            <tbody id='BDOgf'></tbody>
                        • <tfoot id='BDOgf'></tfoot>
                          <legend id='BDOgf'><style id='BDOgf'><dir id='BDOgf'><q id='BDOgf'></q></dir></style></legend>