pygame中键处理和边界冲突的问题

时间:2017-04-12 13:48:30

标签: python python-2.7 pygame

所以,首先我遇到碰撞处理问题。基本上我有这个代码:

      x_move = 0
      player_width = 115

   ...


        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_a:
                x_move -= 6
            if event.key == pygame.K_d:
                x_move += 6
                print(x_move)
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_a or event.key == pygame.K_d:
                x_move = 0


    if x > display_width - player_width:
        x_move -= 1
    if x < 0:
        x_move += 1

    x += x_move

显然,当一名球员按'A'时他们向左走,当他们按'D'时他们向右走。现在边界碰撞相当便宜,从一开始我就知道了。

我的想法是检测玩家进入的框架,以及框架(或其后的框架)是否在屏幕外,减去精灵的宽度(以便玩家的一半不在屏幕外 - 这是一艘宇宙飞船) ,然后拒绝玩家继续前进。

现在,其他实现实际上阻止了玩家继续前进,但是如果他们继续点击A或D,他们将逐帧移出屏幕。

然而,目前,当他们到达边缘时,他们确实会反弹并反转方向,如果他们在正确的时间向相反的方向发射,他们将提高速度并加快速度。

第二个问题是 - 除非他们完全释放密钥 - 否则他们无法使用另一个密钥。它阻止他们去任何地方。

任何人都可以帮助我理解幕后发生的事情吗?这两个问题一直是我的荆棘。

1 个答案:

答案 0 :(得分:0)

对于&#34;他们不断点击A或D,他们会逐帧移出屏幕&#34; 您只需要更改代码:

if x > display_width - player_width + x_move:
    x_move = 0
if x - x_move < 0:
    x_move = 0

如果你不明白为什么,我可以解释一下,但我认为这很容易理解......

但是,我不明白&#34;他们不能使用另一个键&#34;,你在想什么?