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

Pygame背景覆盖棋子导致不可见问题求助

Pygame棋子被棋盘遮挡的问题解决

问题根源

  • 绘制顺序颠倒:当前代码先绘制棋子,再绘制棋盘背景,导致棋盘完全覆盖在棋子上方,自然看不到棋子。必须遵循「先画背景,再画前景元素」的绘制逻辑。
  • 全局变量未重置:xBp、countBp作为全局变量,每次调用board_setup都会持续累加数值,第一次循环后棋子位置就会偏离初始区域,后续循环甚至无法正常绘制棋子。

修正后的代码

import pygame
pygame.init()

pygame.display.set_caption("epic Chess")
screen = pygame.display.set_mode((800,800))
clock = pygame.time.Clock()
brett = pygame.image.load("Chessbot/schachbrett.jpg")
imagesB = [
    pygame.image.load("Chessbot/imagesbR.png"),
    pygame.image.load("Chessbot/images/bN.png"),
    pygame.image.load("Chessbot/images/bB.png"),
    pygame.image.load("Chessbot/images/bK.png"),
    pygame.image.load("Chessbot/images/bQ.png"),
    pygame.image.load("Chessbot/images/bB.png"),
    pygame.image.load("Chessbot/images/bN.png"),
    pygame.image.load("Chessbot/images/bR.png")
]
running = True

def board_setup():
    # 将变量移至函数内部,每次调用都重置初始值
    xBp = 0
    yBp = 50
    countBp = 0
    for i in imagesB:
        countBp += 1
        if countBp <=8:
            screen.blit(i,(xBp,yBp))
            xBp +=50

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
    
    # 先绘制背景棋盘
    screen.blit(brett, (0, 0))
    # 再绘制棋子
    board_setup()

    clock.tick(60)
    pygame.display.update()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 07:35:18