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)
显然你在这里的代码是在你的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)
| 归档时间: |
|
| 查看次数: |
1418 次 |
| 最近记录: |