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
相关产品推荐
相关产品推荐

