为了账号安全,请及时绑定邮箱和手机立即绑定

2D列出替换对象

2D列出替换对象

慕虎7371278 2021-03-23 13:13:02
我正在尝试使用pygame库使用python 3制作棋盘游戏。我想要做的是创建一个对象的x x y 2d列表,我将这些空间称为代表板的空间。首先,我将所有空间初始化为灰色,并将is_piece属性设置为False,以指示它们都是空的空间。然后,我想通过用is_piece属性设置为true的对象替换board [x] [y]值来用空格替换空白。我遇到的错误是self.coords值被翻转了。例如,在下面的代码中,具有[2,3] self.coords值的石头对象最终位于board [3] [2]位置,反之亦然。添加更多的石头还可以通过翻转索引值并有时随后在其中之一上添加一个来破坏self.coords。def initialize_board():    #creates an array of empty spaces representing the board    board = [[Space(GRAY, RADIUS, [x, y], False) for x in range(BOARDWIDTH)]               for y in range(BOARDHEIGHT)    #Create the center stones    board[3][3] = Space(RED, RADIUS, [3, 3], True)    board[2][3] = Space(RED, RADIUS, [2, 3], True)    board[4][3] = Space(RED, RADIUS, [4, 3], True)    board[3][2] = Space(RED, RADIUS, [3, 2], True)    board[3][4] = Space(RED, RADIUS, [3, 4], True)  这是我正在使用的Space类的init方法:def __init__(self, color, size, coords, is_stone):    self.color = color    self.size = size    self.coords = coords    self.is_stone = is_stone #false if empty    self.pos = [CCONSTANT + DISTANCE * self.coords[0],                 CCONSTANT + DISTANCE * self.coords[1]]谁能告诉我我搞砸了吗?
查看完整描述

1 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

正如@Joran Beasley指出的那样,您可以在当前代码中使用[row] [col](将是[y] [x])来访问值。为了使用[x] [y]进行访问,您可以略微更改创建板的循环:


board = [[Space(GRAY, RADIUS, [x, y], False) for y in range(BOARDHEIGHT)] 

          for x in range(BOARDWIDTH)

(BOARDWIDTH, BOARDHEIGHT)在最终的板上获得形状。


查看完整回答
反对 回复 2021-03-29
  • 1 回答
  • 0 关注
  • 141 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信