在制作的乒乓球游戏中,我不能同时移动两个桨

时间:2019-08-31 17:55:05

标签: java processing

因此,我尝试在处理过程中对pong进行编码,并且一切正常,并且我可以完美地上下移动拨片,但是,当您尝试同时移动两个拨片时,它们不会移动/它不允许您(我将把它制作成2人游戏,这样2人可以使用相同的键盘来玩,但不同的拨盘使用不同的键)。

我认为这是使用“ key”或“ keyPressed”的问题,因为我认为它不能同时检测到这两种东西?但我似乎无法弄清楚如何解决此问题或任何其他选择。 (请记住,我知道如何移动拨片,只是您不能使用不同的提供的键(例如im试图同时移动它们))

到目前为止,我有两个对象“ Player1”和“ Player2”

请记住,“ y”是y位置,它会根据所按下的键而上升或下降,而“ speed”只是桨将移动的速度。

这是在Player1中。上= w,下= s

void movement() {

    if(keyPressed) {

      if(key == 'w' || key == 'W') {
        y = y - speed; //goes up

      } else if (key == 's' || key == 'S') {
        y = y + speed; //goes down
      }
    }
  }

这是在Player2中。向上=向上箭头键,向下=向下箭头键

void movement() {

    if (keyPressed) {

      if(key == CODED) {

      if(keyCode == UP) {
        y = y - speed; //goes up

      } else if (keyCode == DOWN) {
        y = y + speed; //goes down
      }

    }

    }

  }

没有错误消息,只是不允许您同时移动两个拨片,这是我想做的事情。

1 个答案:

答案 0 :(得分:4)

您必须使用keyPressedkeyReleased()事件。按下或释放键时,事件将执行一次。 设置按下按键时的状态,或者分别释放按键时的状态:

Boolean player1_up = false;
Boolean player1_down = false;
Boolean player2_up = false;
Boolean player2_down = false;

void keyPressed() {
    if (keyCode == UP)
        player1_up = true;
    else if (keyCode == DOWN)
        player1_up = true;
    if (key == 'w' || key == 'W')
        player2_up = true;
    else if (key == 's' || key == 'S')
        player2_down = true;
}

void keyReleasd() {
    if (keyCode == UP)
        player1_up = false;
    else if (keyCode == DOWN)
        player1_up = false;
    if (key == 'w' || key == 'W')
        player2_up = false;
    else if (key == 's' || key == 'S')
        player2_down = false;
}

player1_up函数中使用状态player1_downplayer2_upplayer2_downmovement