为什么我的对象在Pygame中移动?

时间:2016-07-03 11:38:47

标签: python pygame

在我的程序中,我正在尝试使用箭头键移动我的长方体。但是,它会移动,但它本身就是复制品。我也试图将健康栏移到它上面。这是我的代码:

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()

请帮帮我。

1 个答案:

答案 0 :(得分:1)

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