Счет игры через приращение обнаружения столкновений - PullRequest
1 голос
/ 10 марта 2020

Итак, у меня есть игра, в которой, если мой пользователь сталкивается с изображением, это увеличивает счет на 1. Однако, потому что я использую этот метод обнаружения столкновений и оператор if, чтобы увеличить мой счет, во время продолжительности столкновения счет увеличится на go примерно на 30, так как метод столкновения обнаруживает, что он сталкивается несколько раз, когда они проходят друг через друга Как бы мне остановить его увеличение более чем на один раз. Вот мой код:

void draw () {  
  if (gameMode == Active) {
    if(crash() == false) {
      drawBackground();
      textSize(32);
      fill(22,100,8);
      text("Score: " + score ,20,40); //calls the drawBackground method
      alien1.update();
      alien2.update();  //constantly calls the move and render method for the alien and defender
      alien3.update();
      user1.render();
      Burger.update();
      if(Bcrash() == true) {
        if(Bcrash() == false) {
          score = score + 1; 
        }
      }
    } else {
      gameMode = End;
      textSize(32);
      fill(22,100,8);
      text("Game Over, press 'r' to restart",150,200);
    }  
  }
}

boolean Bcrash() {
  return user1.crash(Burger));
}

// Burger.class (Editor's note: I guess it's User.class)
public class User {
  boolean crash(Burger A) {   
    return(abs(x-A.x)<=30) && abs(y-A.y)<=30;
  }
}

1 Ответ

2 голосов
/ 10 марта 2020

Проверьте, не является ли столкновение ложным, прежде чем разрешить ему добавить другое число.

что-то вроде:

Boolean collisionInProgress = false;

if(collision == true && collisionInProgress == false){
  score = score+1;
  collisionInProgess = true;
}

…loop…

if(collision == false){
  collisionInProgess = false;
}
...