我一直在Pygame做一个小项目,但我遇到了一个问题。移动角色时,它似乎留下了一条痕迹。
while 1:
movey=0
movex=0
x=0
y=0
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
if event.key == K_w:
movey = -1
elif event.key == K_s:
movey = +1
elif event.key == K_a:
movex = -1
elif event.key == K_d:
movex = +1
if event.type == KEYUP:
if event.key == K_w:
movey = 0
elif event.key == K_s:
movey = 0
elif event.key == K_a:
movex = 0
elif event.key == K_d:
movex = 0
x=x+movex
y=y+movey
functions_for_game.character(char, display, x, y)
pygame.display.flip()
if __name__=='__main__':
main()
functions_for_game.character(char,display,x,y)包含
def character(char, screen, x, y):
char_main = pygame.image.load(char).convert_alpha()
screen.blit(char_main, (x, y))
pygame.display.update()
'Trail'是指this。 我为这个noobish问题道歉,但我一直无法找到解决方案。 先谢谢!
答案 0 :(得分:2)
你应该每帧都将你的背景图像blit到屏幕上(有更高级的技术只能更新屏幕的“脏”部分,但这是另一个话题。)
如果你在移动它时将你的播放器图像重复绘制到屏幕上,那么旧图像就不会从屏幕上“删除”,因此看起来它会留下痕迹。
您的代码还有一些问题,但您的主要问题是您不会重绘背景图像。它应该看起来像:
while True:
for event in pygame.event.get():
...
...
screen.blit(*your background surface here*)
functions_for_game.character(char, display, x, y)
pygame.display.flip()