Pygame无法生成国际象棋棋盘网格,错误来源无法定位
问题根因
- 绘制逻辑未触发:你编写的
drawBoard、drawGameState等棋盘绘制函数,从未在main函数的主运行循环内被调用,所有绘制代码没有实际执行过。 - 无效调用位置错误:你在代码末尾写的
drawGameState()既缺少必填的screen、gs入参,执行时机也在main()函数返回(即用户关闭窗口)之后,此时pygame资源已即将释放,完全不会生效。
修复方案
仅需调整main函数的循环逻辑,把绘制流程加到清屏和屏幕刷新之间,同时删除末尾的无效drawGameState()调用即可,修改后的核心代码如下:
def main(): p.init() screen = p.display.set_mode((WIDTH, HEIGHT)) clock = p.time.Clock() gs = chessEngine.GameState() loadImages() running = True while running: for e in p.event.get(): if e.type == p.QUIT: running = False # 每次刷新先清屏,避免后续添加动画、棋子移动时出现残影 screen.fill(p.Color("white")) # 调用绘制函数生成棋盘 drawGameState(screen, gs) clock.tick(MAX_FPS) p.display.flip() # 下面这行原代码直接删除即可,属于无效调用 # drawGameState()
修改后运行即可看到8*8的灰白相间棋盘。
内容的提问来源于stack exchange,提问作者mjbArctic
相关产品推荐
相关产品推荐

