如何在Python上创建游戏板

如何在Python上创建游戏板,python,multidimensional-array,visualization,Python,Multidimensional Array,Visualization,我想用Python重现第十五场比赛,但我一直在画一个二维的棋盘。我以前在C中这样做过,我尝试再次使用列表,如下所示: numbers = d * d - 1 global blankx, blanky, board blankx = d - 1 blanky = d - 1 for i in range(d): for j in range(d): board[i][j] = numbers numbers -= 1 board[blankx][blan

我想用Python重现第十五场比赛,但我一直在画一个二维的棋盘。我以前在C中这样做过,我尝试再次使用列表,如下所示:

numbers = d * d - 1
global blankx, blanky, board
blankx = d - 1
blanky = d - 1

for i in range(d):
    for j in range(d):
        board[i][j] = numbers
        numbers -= 1
board[blankx][blanky] = d * d

d是维度,BLANKX和Y是右下角空白空间的坐标。但它说: 线路板上的“列表索引超出范围”[i][j]=编号


我不明白为什么,有什么提示吗?

在Python中,访问
列表的索引不会自动将
列表扩展到所需的最小长度。您必须初始化一个空电路板,或者创建并填充它。我推荐一个
列表
理解:

board = [[i*d + j + 1 for i in range(d)] for j in range(d)]
board[blankx][blanky] = d * d
board = [[d*d-1-i-d*j for i in range(d)] for j in range(d)]
这相当于下面的显式循环,它使用
append()
向每个
列表添加新项:


在Python中,访问
列表
的索引不会自动将
列表
扩展到所需的最小长度。您必须初始化一个空电路板,或者创建并填充它。我推荐一个
列表
理解:

board = [[d*d-1-i-d*j for i in range(d)] for j in range(d)]
这相当于下面的显式循环,它使用
append()
向每个
列表添加新项:



您是如何初始化全局变量的?(为什么它们是全局的?@kazemakase我在其他函数中也使用了这些变量,所以它们是全局的。它们是:board=[]、blankx=0、blanky=0
board=[]
表示您有一个空的板。您是如何初始化全局变量的?(为什么它们是全局的?@kazemakase我在其他函数中也使用了这些变量,所以它们是全局的。它们是:board=[]、blankx=0、blanky=0
board=[]
表示您有一块空的板。您的板号都是一样的。看看我的变体。那应该更好。非常感谢@TigerhawkT3@DóraJámbor-听起来这对你很有效。您可以通过单击其分数下方的“接受”按钮来表示此答案已解决问题。向上投票并感谢您的评论。我认为数字必须按列分组。你的董事会号码都是一样的。看看我的变体。那应该更好。非常感谢@TigerhawkT3@DóraJámbor-听起来这对你很有效。您可以通过单击其分数下方的“接受”按钮来表示此答案已解决问题。向上投票并感谢您的评论。我认为这些数字必须按列进行分组。也许解释一下什么是错误的以及如何修复它会好一些?也许解释一下什么是错误的以及如何修复它会好一些?