为什么我的物体在Pygame中运动不正常?

2024-09-30 08:14:37 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的程序中,我试图用我的箭头键移动我的长方体。然而,它移动了,却留下了自己的复制品。我也在努力把健康栏移到上面。这是我的密码:

import pygame
from pygame.locals import *

pygame.init()

black = (0,0,0)
white = (255,255,255)
red = (255,0,0)
green = (0,255,0)
blue = (0,0,255)
yellow = (255,242,0)
darkBlue = (0,0,128)

size = winHeight,winWidth = (1350,668)

pygame.key.set_repeat(50,50)
x,y = 625,490

towerHealth = 1450
healthAdjusted = towerHealth / 10

screen = pygame.display.set_mode(size)
pygame.display.set_caption("Stormtroopers")
gameExit = False

while not gameExit:
    for event in pygame.event.get():
        if event.type == QUIT:
            gameExit = True

        if event.type == KEYDOWN:
            if event.key == K_UP: y -= 5
            if event.key == K_DOWN: y += 5
            if event.key == K_LEFT: x -= 5
            if event.key == K_RIGHT: x += 5

    tower = [
             pygame.draw.rect(screen,blue,(x,y,100,160)),
             pygame.draw.rect(screen,darkBlue,(x,y,100,160),5),
             pygame.draw.polygon(screen,blue,((x,y),(x + 50,y - 50),(x + 150,y - 50),(x + 100,y))),
             pygame.draw.polygon(screen,darkBlue,((x,y),(x + 50,y - 50),(x + 150,y - 50),(x + 100,y)),5),
             pygame.draw.polygon(screen,darkBlue,((x + 100,y),(x + 150,y - 50),(x + 150,y + 110),(x + 100,y + 160)))
             ]

    healthBar = [
                pygame.draw.rect(screen,white,(x,y - 80,150,15),5),
                pygame.draw.rect(screen,red,(x + 3,y - 77,healthAdjusted,10))
                ]

    if towerHealth <= 0:
        gameExit = True

    pygame.display.update()

pygame.quit()
quit()

请帮帮我


Tags: keyrectimporteventifdisplaybluescreen
1条回答
网友
1楼 · 发布于 2024-09-30 08:14:37

您需要通过在长方体上绘制背景来删除长方体的旧位置,否则最终会看到两个副本。Pygame不会自动删除每次更新时绘制的所有内容,您必须自己完成Here是一个教程。您可能还想在stackoverflow上签出this related question

相关问题 更多 >

    热门问题