每次按下一个键时,action/variable 更改只会发生一次

Making a action/variable change only happen once, everytime a key is pressed

我编写的代码应该在每次矩形(通过按 m 键创建)与另一个矩形(敌人)相交时移除 25 HP(生命值)。目前,在我只按一次m键后,敌人连续失去25HP,直到我在敌人外再次按m键body。

这是我对敌人的伤害代码。它被杀死时会变成白色,这就是为什么我在那里有 df1 等。

void damage() {

    //if (callMethod) {
    HP -=25;


    //callMethod = false;
    System.out.println(" " + HP);

    //}

    if (HP == 0) {
        df1 = 200;
        df2 = 200;
        df3 = 200;
    }
}

这是 m 输入的代码。

void Fight() {
    if (keyPressed) {

      if (key == 'm'|| key == 'M') {
        //villkor, flytta höger, X-led.
        fill(255, 0, 0, 63);
        noStroke();
        rect(xF, yF, wF, hF);
        xFF = xF;
        yFF = yF;
        wFF = wF;
        hFF = hF;

      }
   }
}

这是我的相交代码:

if (g.intersect(f)) {
    f.damage();
}

如果能得到任何帮助,我将不胜感激。为我糟糕的英语语法道歉:)

您可以使用另一个 boolean 变量来跟踪操作是否已经执行。

这是一个小例子:

boolean alreadyPressed = false;

void draw() {}

void mousePressed() {
  if(!alreadyPressed){
   background(random(255)); 
  }
  alreadyPressed = true;
}

然后,只要您希望有资格再次检测事件,就可以重置 boolean 变量。