Pygame运动问题

2024-09-27 07:32:19 发布

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

我一直在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()

函数_游戏.角色(char,display,x,y)包含

^{pr2}$

我指的是this。 我为这个愚蠢的问题道歉,但我一直找不到解决办法。 提前谢谢!在


Tags: keyevent角色forifmaintypedisplay
1条回答
网友
1楼 · 发布于 2024-09-27 07:32:19

你应该在每一帧都将你的背景图像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()

相关问题 更多 >

    热门问题