我知道这个问题可以看作是重复的,但我花了几个小时搜索并找出了我的代码中的错误。你知道吗
我的问题是,当按下左键或右键时,我的对象(称为player)不会不断移动:
for event in pygame.event.get():
if event.type == QUIT:
self.terminate()
if event.type == KEYDOWN:
if event.key == K_ESCAPE:
self.terminate()
if event.key == K_LEFT or event.key == K_a:
self.moveRight = False
self.moveLeft = True
if event.key == K_RIGHT or event.key == K_d:
self.moveLeft = False
self.moveRight = True
if event.type == KEYUP:
if event.key == K_LEFT or event.key == K_a:
self.moveLeft = False
if event.key == K_RIGHT or event.key == K_d:
self.moveRight = False
# Move the player around
if self.moveLeft :
# Moves the player object to left with self.PLAYERMOVERATE pixels.
self.player.setLeftRight(-1 * self.PLAYERMOVERATE)
if self.moveRight :
self.player.setLeftRight(self.PLAYERMOVERATE)
我也尝试过这个选择:
while True:
keys = pygame.key.get_pressed()
if keys[pygame.K_LEFT]:
self.player.setLeftRight(-1 * self.PLAYERMOVERATE)
if keys[pygame.K_RIGHT]:
self.player.setLeftRight(self.PLAYERMOVERATE)
我认为问题是你没有处理主游戏循环中的输入。你知道吗
在您的代码中,您似乎在处理对象
Player
的方法内部的输入。这不是处理输入的方式。在第二个代码示例中,有一个while True:
循环,这意味着循环永远不会退出,因此方法的执行永远不会完成。我怀疑你的第一个例子中可能有类似的问题。你知道吗相反,您应该:
创建所有对象和类。
编写主游戏循环。
主游戏循环应该处理输入,然后处理游戏的逻辑,然后呈现应该呈现的内容。你知道吗
下面是一个简短的代码示例。你知道吗
我希望这对你有帮助,如果你有任何进一步的问题,请随时张贴在下面的评论部分!你知道吗
相关问题 更多 >
编程相关推荐