self.logic_board_owner = [0]*((self.__n-1)*(self.__n-1)) self.logic_board_state = [[0]*(self.__n-1) for _ in range((self.__n-1)*(self.__n-1))]
时间: 2023-10-29 18:07:03 浏览: 157
这段代码初始化了两个变量 `self.logic_board_owner` 和 `self.logic_board_state`。
`self.logic_board_owner` 是一个长度为 `(self.__n-1)*(self.__n-1)` 的列表,每个元素都被初始化为 0。
`self.logic_board_state` 是一个二维列表,有 `(self.__n-1)*(self.__n-1)` 行和 `(self.__n-1)` 列。每个元素都被初始化为 0。使用列表推导式创建了这个二维列表,`_` 在这里是一个占位符,表示不关心具体的值。
通过这两个初始化操作,完善了游戏逻辑棋盘的初始状态和所有者列表的初始状态。
相关问题
def judge_owner(self,row,col,color,direct): c=[] if direct == 0: if 0 < row < self.__n-1: if 0 not in self.logic_board_state[row * 4 + col]: self.logic_board_owner[row * 4 + col] = color c.append(row * 4 + col) if 0 not in self.logic_board_state[row * 4 + col - 4]: self.logic_board_owner[row * 4 + col - 4] = color c.append(row * 4 + col - 4) elif row == 0: if 0 not in self.logic_board_state[col]: self.logic_board_owner[col] = color c.append(col) elif row == self.__n - 1: if 0 not in self.logic_board_state[row*3+col]: self.logic_board_owner[row*3+col] = color c.append(row*3+col) if direct == 1: if 0 < col < (self.__n-1): if 0 not in self.logic_board_state[row*4 + col]: self.logic_board_owner[row*4 + col] = color c.append(row*4 + col) if 0 not in self.logic_board_state[row*4 + col - 1]: self.logic_board_owner[row*4 + col - 1] = color c.append(row*4 + col - 1) elif col == 0: if 0 not in self.logic_board_state[row*4]: self.logic_board_owner[row*4] = color c.append(row*4) elif col == self.__n - 1: if 0 not in self.logic_board_state[4*row + (col - 1)]: self.logic_board_owner[4*row + (col - 1)] = color c.append(4*row + (col - 1)) return c
这段代码是一个名为 `judge_owner` 的函数,它接收四个参数 `row`、`col`、`color` 和 `direct`。根据 `direct` 的值进行条件判断,函数会根据不同的情况执行相应的操作,并返回一个列表 `c`。
首先,判断 `direct` 的值是否为 0。如果是,会再根据 `row` 的值进行判断。如果满足条件 `0 < row < self.__n-1`,会执行以下操作:
- 检查 `self.logic_board_state[row * 4 + col]` 中是否没有 0。如果没有,将 `self.logic_board_owner[row * 4 + col]` 设置为 `color`,并将 `row * 4 + col` 添加到列表 `c` 中。
- 检查 `self.logic_board_state[row * 4 + col - 4]` 中是否没有 0。如果没有,将 `self.logic_board_owner[row * 4 + col - 4]` 设置为 `color`,并将 `row * 4 + col - 4` 添加到列表 `c` 中。
如果 `row` 的值等于 0,会执行以下操作:
- 检查 `self.logic_board_state[col]` 中是否没有 0。如果没有,将 `self.logic_board_owner[col]` 设置为 `color`,并将 `col` 添加到列表 `c` 中。
如果 `row` 的值等于 `self.__n - 1`,会执行以下操作:
- 检查 `self.logic_board_state[row*3+col]` 中是否没有 0。如果没有,将 `self.logic_board_owner[row*3+col]` 设置为 `color`,并将 `row*3+col` 添加到列表 `c` 中。
如果 `direct` 的值不是 0,会进行第二个条件语句的判断。如果满足条件 `0 < col < (self.__n-1)`,会执行以下操作:
- 检查 `self.logic_board_state[row*4 + col]` 中是否没有 0。如果没有,将 `self.logic_board_owner[row*4 + col]` 设置为 `color`,并将 `row*4 + col` 添加到列表 `c` 中。
- 检查 `self.logic_board_state[row*4 + col - 1]` 中是否没有 0。如果没有,将 `self.logic_board_owner[row*4 + col - 1]` 设置为 `color`,并将 `row*4 + col - 1` 添加到列表 `c` 中。
如果 `col` 的值等于 0,会执行以下操作:
- 检查 `self.logic_board_state[row*4]` 中是否没有 0。如果没有,将 `self.logic_board_owner[row*4]` 设置为 `color`,并将 `row*4` 添加到列表 `c` 中。
如果 `col` 的值等于 `self.__n - 1`,会执行以下操作:
- 检查 `self.logic_board_state[4*row + (col - 1)]` 中是否没有 0。如果没有,将 `self.logic_board_owner[4*row + (col - 1)]` 设置为 `color`,并将 `4*row + (col - 1)` 添加到列表 `c` 中。
最后,函数会返回列表 `c`。
ef start(self): self.logic_board_owner = [0]*((self.__n-1)*(self.__n-1)) self.logic_board_state = [[0]*(self.__n-1) for _ in range((self.__n-1)*(self.__n-1))] #[上,下,左,右] self.__history = 0 self.direct= 0 self.turelly_history = 0 self.judge_colory = False self.game_board = None self.__game_board = Game_Board(self.__cell_width,self.__n,self.__margin) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: sys.exit() elif event.type == locals.MOUSEBUTTONDOWN: if event.button == 1: x, y = event.pos[0], event.pos[1] self.__choose_button(x, y) pygame.display.update()
这段代码是一个名为 `start` 的方法,用来开始游戏。方法首先对一些变量进行初始化,包括 `self.logic_board_owner`、`self.logic_board_state`、`self.__history`、`self.direct`、`self.turelly_history`、`self.judge_colory`、`self.game_board` 和 `self.__game_board`。
然后,进入一个无限循环,用来处理游戏事件。通过调用 `pygame.event.get()` 获取当前的事件列表,并遍历处理每个事件。
如果事件类型是 `pygame.QUIT`,即用户点击了关闭按钮,调用 `sys.exit()` 退出游戏。
如果事件类型是 `locals.MOUSEBUTTONDOWN`,即用户点击了鼠标按钮,且按钮为左键(button == 1),获取鼠标点击的坐标位置,并调用 `self.__choose_button` 方法处理点击事件。
最后,调用 `pygame.display.update()` 更新游戏界面。这样,在游戏界面上进行的操作就能够得到及时的更新。
阅读全文