使用Python 3.10.9+Pygame开发象棋游戏时棋盘空白问题求助
Pygame象棋游戏棋盘空白问题修复
你的代码存在三个关键问题导致棋盘无法正常显示:
const.py中未定义核心尺寸常量
SQSIZE的计算依赖WIDTH变量,但const.py里没有定义WIDTH和HEIGHT,会引发变量未定义错误,直接导致后续绘制逻辑无法执行。main.py中屏幕刷新方法未正确调用
pygame.display.update是方法调用,必须添加括号(),否则不会触发屏幕内容刷新,绘制的棋盘无法显示到窗口上。game.py未导入pygame模块
Game类的show_bg方法使用了pygame.draw.rect,但文件顶部未导入pygame,会触发NameError,导致绘制代码无法运行。
修正后的完整代码:
const.py
COLS = 8 ROWS = 8 WIDTH = 720 HEIGHT = 720 SQSIZE = WIDTH // COLS
game.py
import pygame class Game: def __init__(self): pass # Show Methods def show_bg(self, surface): for row in range(ROWS): for col in range(COLS): if (row + col) % 2 == 0: color = (234, 235, 200) else: color = (119, 154, 88) rect = (col * SQSIZE, row * SQSIZE, SQSIZE, SQSIZE) pygame.draw.rect(surface, color, rect)
main.py
import pygame import sys from const import * from game import Game class Main: def __init__(self): pygame.init() self.screen = pygame.display.set_mode((WIDTH, HEIGHT)) pygame.display.set_caption('Chess') self.game = Game() def mainloop(self): while True: self.game.show_bg(self.screen) for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() pygame.display.update() main = Main() main.mainloop()
运行上述修正后的代码,棋盘即可正常显示。
内容的提问来源于stack exchange,提问作者Christian Cangelli
相关产品推荐
相关产品推荐

