0

这是我的代码

    import pygame
    from pygame.locals import *
    import sys
    pygame.init()
    pygame.display.set_caption("*no current mission*")
    size = (1280, 750)
    screen = pygame.display.set_mode(size)
    clock = pygame.time.Clock()
    bg = pygame.image.load("bg1.png")
    guy = pygame.image.load("hero_stand.png")
    rect = guy.get_rect()
    x = 10
    y = 10
        while True:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    sys.exit()
                if event.type == KEYDOWN:
                    _if event.key == K_RIGHT:
                        x += 5
                        rect.move(x,y)_
        rect.move(x,y) 
        screen.blit(bg,(0,0))
        screen.blit(guy, rect)
        pygame.display.flip()

这只是一个简单的测试,看看我是否可以移动一个矩形。除了我用斜体写的代码外,一切似乎都有效。

4

2 回答 2

1

我对 PyGame 一无所知,但看起来该while循环永远不会退出,并且缩进使得从第二个rect.move(x,y)开始的所有内容都在循环之外,因此无法访问。从那里开始缩进所有内容,以便它在 while 循环中并且可以这样做。

于 2012-11-13T17:18:21.470 回答
0

问题在于 .flip() 方法。您必须在每次 blit 和更新时调用它一次,因此它会在屏幕上显示更改。将它们放在 While 循环中,它应该可以工作。基本的 pygame 循环应该如下所示:

#capture user input and call functions responsible
delta = timer.tick()
#this takes into account the speed of the machine, so it moves the sprites indepented of speed
updateSprites(delta) #moves the sprites
drawSprites()#blits the sprites at their positions
screen.diplay.flip() #flips the screen to show changes.
于 2012-11-13T19:00:33.167 回答