【问题标题】:Tic Tac Toe Issues Appending User Input To Board Using Index Positions井字游戏问题使用索引位置将用户输入附加到棋盘
【发布时间】:2020-12-06 19:43:21
【问题描述】:

我正在构建一个基本的井字游戏(编码新手!)

我创建了一个棋盘并尝试将用户输入附加到游戏棋盘。这个想法是将用户输入的索引位置作为整数匹配到板上的索引位置。我目前有脚本打印板并接受输入,但它不会附加到板上。代码如下(我暂时排除了游戏逻辑)(假设问题出在棋盘放置函数和while游戏循环中):

board = [' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ']

def print_board(board):
    print('    ','|','    ','|','    ')
    print('  '+board[7],' |  '+board[8],'  |  '+board[9])
    print('    ','|','    ','|','    ')
    print('_________________')
    print('    ','|','    ','|','    ')
    print('  '+board[4],' |  '+board[5],'  |  '+board[6])
    print('    ','|','    ','|','    ')
    print('_________________')
    print('    ','|','    ','|','    ')
    print('  '+board[1],' |  '+board[2],'  |  '+board[3])
    print('    ','|','    ','|','    ')
    
def player_input():
    selection = ''
    accept_range = [1,2,3,4,5,6,7,8,9]
    
    while selection not in accept_range:
        player1 = int(input('Player 1: Pick a number 1 through 9 on your keypad to put an X on the board: '))
        player2 = int(input('Player 2: Pick a number 1 through 9 on your keypad to put an O on the board: '))
        
        if player1 not in accept_range:
            print('Please enter another number 1-9')
        else:
            player2
            
def board_placement():
    if player1 in accept_range:
        return board.append[player1]('X')
    else 
        if player2 in accept_range:
        return board.append[player2]('O')

game = True 

while game:
    #Print Board
    board = print_board(board)
    #Ask for An Initial Response
    position = player_input()
    #Place response 
    placement = board_placement(board) 

【问题讨论】:

    标签: python tic-tac-toe


    【解决方案1】:

    您的代码存在一些问题。 while selection not in accepted_range 永远不会重复,因为您永远不会更新 selection。你也不是returning 来自player_input 的任何东西,所以position 将被设置为None。在board_placement中,需要传入player1player2作为参数。您还将print_board 的结果分配给董事会,即None,因为它不返回任何内容。 board_placement 也有同样的问题。另外 append 会将一个项目添加到列表中,此时您只是尝试在特定索引处修改列表。在这里,我修改了你的代码

    board = [' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ']
    
    
    def print_board(board):
        print('    ', '|', '    ', '|', '    ')
        print('  ' + board[7], ' |  ' + board[8], '  |  ' + board[8])
        print('    ', '|', '    ', '|', '    ')
        print('_________________')
        print('    ', '|', '    ', '|', '    ')
        print('  ' + board[4], ' |  ' + board[5], '  |  ' + board[6])
        print('    ', '|', '    ', '|', '    ')
        print('_________________')
        print('    ', '|', '    ', '|', '    ')
        print('  ' + board[1], ' |  ' + board[2], '  |  ' + board[3])
        print('    ', '|', '    ', '|', '    ')
    
    
    def player_input():
        accept_range = [1, 2, 3, 4, 5, 6, 7, 8, 9]
        player1 = player2 = ''
        while player1 not in accept_range:
            player1 = int(input('Player 1: Pick a number 1 through 9 on your keypad to put an X on the board: '))
        while player2 not in accept_range:
            player2 = int(input('Player 1: Pick a number 1 through 9 on your keypad to put an O on the board: '))
    
        return player1, player2
    
    def board_placement(player1, player2):
        # we know player1 and player2 will be in accept_range because of player_input
        board[player1] = 'X'
        board[player2] = 'O'
    
    
    game = True
    
    while game:
        # Print Board
        print_board(board)
        # Ask for An Initial Response
        player1, player2 = player_input()
        # Place response
        board_placement(player1, player2)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多