我是Processing programming language的新手,目前正在尝试与我的大学团队一起制作基于回合制的游戏。但是我在处理函数中遇到了一个名为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();
答案 0 :(得分: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;
}
}