2017-07-02 45 views
-2

我想在pygame中制作一个简单的游戏,我用WASD键移动字符(一个正方形)。我已经有所成就,但运动不顺畅,当我移动我的鼠标时,角色拒绝移动。当我的鼠标移动时,我的Pygame脚本让我在屏幕上的字符暂停

我认为它是事做我的for循环

for event in pygame.event.get(): 
     if event.type is pygame.QUIT: 
      pygame.quit() 
      sys.exit() 

我知道它是停留在循环,同时有输入,但我不知道如何解决它没有不能够关闭该程序。

下面是游戏主循环:

while launchGame: 
    for event in pygame.event.get(): 
     if event.type is pygame.QUIT: 
      pygame.quit() 
      sys.exit() 
    screen.fill(WHITE) 
    player.draw() 
    player.move() 
    pygame.display.flip() 

这里是我的举动脚本是否有帮助:

def move(self): 
    if event.type == pygame.KEYDOWN: 
     if pygame.key.get_pressed()[K_w]: 
      self.y -= self.speed 
     if pygame.key.get_pressed()[K_s]: 
      self.y += self.speed 
     if pygame.key.get_pressed()[K_a]: 
      self.x -= self.speed 
     if pygame.key.get_pressed()[K_d]: 
      self.x += self.speed 

我怎样才能解决这个问题。

回答

0

它是一个简单的错字。在第二行,你有if event.type is pygame.QUIT:

而且应该是if event.type == pygame.QUIT:

如果没有工作,请尝试:

while RUNNING: 
    for event in pygame.event.get(): 
     if event.type is pygame.QUIT: 
      RUNNING = False; 
    screen.fill(WHITE) 
    player.draw() 
    player.move() 
    pygame.display.flip() 

而且在命令行中运行程序,看它是否是一个问题pycharm

+0

它没有什么不同,它的效果相同。 – Michael

+0

你有错误吗?你在用什么IDE?也许你可以尝试使用 '而RUNNING'和代替 'pygame.quit()'' sys.exit()' 做'RUNNING = FALSE' 如果这都不能工作。发布完整的代码或github回购,我会检查出来 –

+0

没有错误,我使用pycharm,并且我尝试了RUNNING = False,但它仍然无法工作。 – Michael

0

我发现了这个问题。我不需要,如果event.type == pygame.KEYDOWN:如果我使用pygame.key.get_pressed(),因为它不是一个事件函数。

谢谢,但不,谢谢我猜xD

相关问题