我试图使用坐标在Pygame中移动一个矩形但不起作用

时间:2012-11-13 16:58:04

标签: python pygame rect

这是我的代码

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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.