pygame对象运动

时间:2018-12-12 22:54:00

标签: python pygame

我有两个用keboard控制的对象,一个用WASD控制,另一个用箭头控制。 (想象一个2D游戏)

我最近编写了代码,使它们在按下键的同时继续运动,但是如果我同时按住W和向上箭头,则只有一个起作用,而另一个则停止。  我想知道一个解决方法。

这是移动代码:

if e.type == pygame.KEYDOWN:

    if e.key==K_d:
        PX += movimentenpx
        EnergiaD +=energiapermoviment

    if e.key==K_a:
        PX -= movimentenpx
        EnergiaD +=energiapermoviment

    if e.key==K_w:

        PY -= movimentenpx
        EnergiaD +=energiapermoviment

    if e.key==K_s:

        PY += movimentenpx
        EnergiaD +=energiapermoviment

    if e.key ==K_UP:

        PY2 -= movimentenpx
        EnergiaD2 +=energiapermoviment

    if e.key ==K_LEFT:
        PX2 -= movimentenpx

        EnergiaD2 +=energiapermoviment

    if e.key ==K_DOWN:

        PY2 += movimentenpx
        EnergiaD2 +=energiapermoviment

    if e.key ==K_RIGHT:
        PX2 +=movimentenpx
        EnergiaD2 +=energiapermoviment

1 个答案:

答案 0 :(得分:2)

抓住pygame.key.get_pressed()上的按键一次只能一次获得一次按键。您需要使用pressed_keys = pygame.key.get_pressed() if pressed_keys[pygame.K_w]: # do stuff if pressed_keys[pygame.K_s]: # do stuff 来获取整个键盘状态的数组。

<button
  name="btn1"
  id="btn1"
  type="submit"
  class="btn btn-primary btn-block button-size"
>
  Click Here!
</button>

<script type="text/javascript">
  const btn = document.getElementById("btn1");
  btn.onclick = function(e) {
    btn.innerHTML =
      "<span><i class='fa fa-spinner fa-spin'></i> Loading</span>";
    btn.disabled = true;
    setTimeout(() => {
      btn.disabled = false;
      btn.innerText = "Click here again!";
    }, 3000);
  };
</script>

这一切都发生在主游戏循环中。如果您想按住键,这也是抓住键的方法。

有关更多文档:https://www.pygame.org/docs/ref/key.html#pygame.key.get_pressed