mousePressed函数似乎不止一次按下

Rim*_*ssa 0 java mouse processing

我是Processing编程语言的新手,目前正在尝试与我的大学团队一起制作一个基于回合制的游戏.但是我在处理函数中遇到了一个名为mousePressed的问题.问题似乎是mousePressed函数不止一次完成,即使我只按鼠标一次.我可能错了,但任何帮助都会很好.

我有5个按钮,如果我点击其中一个按钮,它会在我的ArrayList中添加X个玩家,之后它应该继续第一个玩家转向骰子,可以通过点击屏幕滚动.然而,当我点击我的添加播放器按钮时,它也会掷骰子,但我希望玩家选择数量的玩家,然后再次点击屏幕滚动骰子.

代码:

  //this is my "if" the player choose to have two players, the first player turns begin

  if(player.get(0) == 1){
        fill(255);
        text("First player turn", width/2, height/5);
        noLoop();

        dice.display();
        dice.mouseRoll();


 // here you have my dice roll function
  void mouseRoll(){                    
    if(mousePressed==true){
      dice.roll(1,4);  // just a random between the two number
        noLoop();
Run Code Online (Sandbox Code Playgroud)

Pet*_*ros 7

显然你在这里的代码是在你的draw()循环中.每秒循环超过25次(或更多次),每次检查鼠标是否被按下.当然,除非你真的很快,否则它会不止一次触发.

执行此操作的正确方法不是使用if语句,而是使用void mousePressed(),每次单击时都会触发一次!

编辑:根据您的评论样本:

有没有可能按下第一个按钮来获得玩家然后掷骰子,所以它不会在一次点击完成所有事情

为此,您需要添加一个布尔值,表示是否已选择播放器.如果已经选择了玩家,则掷骰子,否则选择一个玩家!(或开关转?)

boolean playerSelected = false;
void mousePressed() {
  if(!playerSelected) {
    // select a player here or switch turns
    fill(255);
    text("First player turn", width/2, height/5);
    playerSelected = true;
  }
  else { 
    dice.display();
    dice.roll(1,4);
    playerSelected = false;
  }
}
Run Code Online (Sandbox Code Playgroud)