You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pygame开发康威生命游戏点击单元格后整行Cell状态异常修改问题

问题排查与解决方案

问题根源

二维列表board初始化逻辑存在引用重复问题:

  • 仅在每行的外层循环中创建了1个Cell实例,内层循环把同一个实例重复追加到当前行的所有列位置
  • Python中自定义类的实例属于引用类型,同一行所有位置指向的都是同一个Cell对象,修改任意位置的state属性,整行的状态都会同步变更

修复方案

修改board初始化代码,将Cell实例化逻辑移到内层列循环中,保证每个棋盘格对应独立的Cell实例:

block_size = 25
board = []
rows, cols = (int((window_height - 100)/ block_size), int(window_width / block_size))
for i in range(rows):
    col = []
    for j in range(cols):
        cell = Cell()
        col.append(cell)
    board.append(col)

验证方法

执行以下代码确认修复效果,同一行不同位置的Cell实例ID输出为不同值即修复成功:

print(id(board[0][0]), id(board[0][1]))

内容的提问来源于stack exchange,提问作者Gemini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 09:36:05