-1

Pythonを使用してリバーシゲームを作成しようとしています。これは空白のボードのコードです

   #reversi
import random
import sys
board = range(9)
def char_range(start, end, step=1):
    for char in range(ord(start), ord(end), step):
        yield char
def drawBoard(board):
    ###this prints out the board
    HLINE = ' +-+-+-+-+-+-+-+-+'
    VLINE = ' | | | | | | | | |'
    print('  a b c d e f g h')
    print(HLINE)
    for y in range(8):
        print(y+1, end = '|.|')
        for x in char_range('a','h'):
            print('| %s' %(board[x][y]), end='.')
        print('|')
        print(HLINE)
def resetBoard(board):
    #blanks out the board
    for x in char_range('a', 'h'):
        for y in range(8):
            board[x][y] = '.'
    #starters
    board[c][3] = 'X'
    board[c][4] = 'O'
    board[d][3] = 'O'
    board[d][4] = 'X'
def getNewBoard():
    #new board
    board = []
    for i in range(9):
        board.append([' '] * 9)
    return board
getNewBoard()
drawBoard(board)
resetBoard(board)

何らかの理由で実行すると、次のメッセージが表示されます。

 File "C:\Users\Larry\Desktop\test.py", line 18, in drawBoard
print('| %s' % (board[x][y]), end='.')
IndexError: string index out of range

これは何を意味するのでしょうか。変更する必要がありますか

char_range() 

または

 print('| %s' % (board[x][y]), end='.')
4

1 に答える 1

0

wim がコメントしたように、dict は、多くの場合、このようなボードを実装するための完全に優れた方法です。

def getNewBoard():
    #new board
    board = {}
    for x in range(8): # or x in 'abcdefgh': if you prefer
        for y in range(8):
            board[x, y] = ' '
    return board

そして、ボードをに割り当てることを忘れないでくださいboard

board = getNewBoard()
于 2013-02-18T03:15:58.293 に答える