pygame:神秘缺乏精灵运动

时间:2017-07-31 23:45:16

标签: python python-2.7 pygame

出于某种原因,当我按箭头键时,我的Player精灵没有移动。 它之前正在移动,但现在它根本没有移动,我没有看到任何问题 使用我正在使用的代码(另外,没有引发异常)。这是相关的代码 (告诉我是否需要添加更多):

def move(self,up,down,right,left): #move function in Player class
    if up and self.rect.y>0: 
        print'up'
        self.rect.y-=self.speed
    if down and self.rect.y<650:
        print'down'
        self.rect.y+=self.speed
    if right and self.rect.x<650:
        print'right'
        self.rect.x+=self.speed
    if left and self.rect.x>0:
        print'left'
        self.rect.x-=self.speed

...

#in while loop, under "for event in pygame.event.get():"
elif event.type == 2: #pygame.KEYDOWN
    if event.key in range(273,277): #if the key is an arrow key
        if event.key==273: #up
            up=True
        elif event.key==274: #down
            down=True
        elif event.key==275: #left
            right=True
        else:               #right
            left=True

以下两点都没有回答我的问题: This,this

我在Windows 10,python 2.7。

1 个答案:

答案 0 :(得分:0)

让我们看看嵌入在while循环中的for循环中的代码块 while循环是无限的,或者更确切地说,当你不想要它时它会停止吗? 另外,你是否在if语句之后直接调用move函数,在你这样做之后,你是否重置方向的变量?
像这样:

#in while loop, under "for event in pygame.event.get():"
elif event.type == 2: #pygame.KEYDOWN
    if event.key in range(273,277): #if the key is an arrow key
        if event.key==273: #up
            up=True
        elif event.key==274: #down
            down=True
        elif event.key==275: #left
            right=True
        else:               #right
            left=True
    move(up,down,left,right)
    up,down,right,left=False,False,False,False

希望这可以帮助您找出错误。