Pygame 背景正在另一张图像上绘制

问题描述 投票:0回答:1

我是 Python 和 Pygame 的新手,我想知道为什么游戏窗口将棋盘打印在棋子的顶部,因此棋子没有显示。我认为如果你把背景图放在所有东西之前,其他部分应该是可见的,但它们不是。有人可以帮忙吗?

这是我写的程序:

import pygame
pygame.init()
xBp = 0
yBp = 50
countBp = 0
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():
    global xBp,yBp,countBp
    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
    board_setup()
    screen.blit(brett, (0, 0))

    clock.tick(60)
    pygame.display.update()
pygame
1个回答
0
投票

您不断在

board_setupt
中呼叫
while
,您只想这样做一次。

另外,在放置碎片之前先画出背景。

我将脚本分为“初始”和“游戏逻辑”部分

import pygame

def board_setup():
    global xBp,yBp,countBp
    for i in imagesB:
        countBp += 1
        if countBp <=8:
            screen.blit(i,(xBp,yBp))
            xBp +=50

# Initial setup
pygame.init()
xBp = 0
yBp = 50
countBp = 0
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")]screen.blit(brett, (0, 0))
board_setup()
running = True
pygame.display.update()

# Game Logic
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

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

© www.soinside.com 2019 - 2024. All rights reserved.