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

使用Python 3.10.9+Pygame开发象棋游戏时棋盘空白问题求助

Pygame象棋游戏棋盘空白问题修复

你的代码存在三个关键问题导致棋盘无法正常显示:

  1. const.py中未定义核心尺寸常量
    SQSIZE的计算依赖WIDTH变量,但const.py里没有定义WIDTH和HEIGHT,会引发变量未定义错误,直接导致后续绘制逻辑无法执行。

  2. main.py中屏幕刷新方法未正确调用
    pygame.display.update是方法调用,必须添加括号(),否则不会触发屏幕内容刷新,绘制的棋盘无法显示到窗口上。

  3. 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 16:11:15