Java 如何为两名玩家设置掷骰程序

Java 如何为两名玩家设置掷骰程序,java,processing,dice,Java,Processing,Dice,(正在处理)代码没有返回我想要的内容。基本上,有两个玩家,每个玩家轮流掷骰子。这些值应分别存储在变量“p1diceroll”和“p2diceroll”中。它将比较这两个值,并根据谁的得分更高来公布谁将首先得分 void setup(){ size (100,100); background(200,200,200); println("press l to roll the die!"); } void draw() { if(keyPressed)

(正在处理)代码没有返回我想要的内容。基本上,有两个玩家,每个玩家轮流掷骰子。这些值应分别存储在变量“p1diceroll”和“p2diceroll”中。它将比较这两个值,并根据谁的得分更高来公布谁将首先得分

void setup(){
    size (100,100);
    background(200,200,200); 
    println("press l to roll the die!");
}

void draw() {
      if(keyPressed)
          keyPressed();
      noLoop();
}

void keyPressed(){
    int p1diceroll=0;
    int p2diceroll=0;

    if (key == 'l') {
        double rand1 = Math.random();
        double rand2 = rand1*6;
        double rand3 = rand2 +1;
        p1diceroll = (int)rand3;

        println("You rolled a " + p1diceroll + "!"); 
        println("player 1! press 'a' to roll");
    }

    if (key == 'a') {
        double rand11 = Math.random();
        double rand22 = rand11*6;
        double rand33 = rand22 +1;
        p2diceroll = (int)rand33;

        println("You rolled a " + p2diceroll + "!");


        if (p2diceroll>p1diceroll) {
            System.out.println("player 2  rolled higher!. They go first. "); 
        } else if (p2diceroll==p1diceroll) {
            System.out.println("It's a tie! player 1 goes first by default." ); 
        } else {
          println("player 1 rolled higher! They go first.");
        }
    }
}

我希望输出是“玩家2滚得更高!他们先走”,“这是平局!默认情况下,玩家1先走”或“玩家1滚得更高。他们先走”。最简单的方法是:

import java.util.Random;

Random rand = new Random();


if (key == 'l'){
    // Obtain a number between [0 - 5].
    int p1diceroll = rand.nextInt(6) + 1;
    println("You rolled a " + p1diceroll + "!"); 
    println("player 2! press 'a' to roll");
  }
 if (key == 'a'){

   // Obtain a number between [0 - 5].
   int p2diceroll = rand.nextInt(6) + 1;
然后你就可以像之前那样比较了

请注意,括号中的数字是[0-6]之间的一个区间,包括0和不包括6,我们在后面加上+1得到1-6


即使轮到玩家2,你也会说“玩家1按a滚动”。我在上面给出的代码中对其进行了调整。

除了a.a的回答之外,这里还有一些处理选项:

  • (例如,
    println((int)random(1,7));
    (强制转换为
    int
    相当于
    println(floor(random(1,7));
    将浮点数降到floored的1-6之间
  • 和他一起玩可能会很有趣
  • 将为您提供许多选择,尤其是与
  • 我还注意到,每次按键时,每个玩家的掷骰值都会被重置。 我不是100%确定这是你想要的,因为两个值中的一个总是0

    下面是使用
    random()
    和调试文本调整后的代码版本:

    int p1diceroll=0;
    int p2diceroll=0;
    
    String result = "";
    
    void setup(){
        size (120,120);
        background(200,200,200); 
        println("press l to roll the die!");
    }
    
    void draw() {
      background(0);
      text("press 'l' for p1"
          +"\npress 'a' for p2"
          +"\n\np1diceroll: " + p1diceroll
          +"\np2diceroll: " + p2diceroll
          +"\n\n"+result,5,15);
    }
    
    void keyPressed(){
        if (key == 'l') {
            p1diceroll = (int)random(1,7);
    
            println("You(p1) rolled a " + p1diceroll + "!"); 
            println("player 2! press 'a' to roll");
        }
    
        if (key == 'a') {
            p2diceroll = (int)random(1,7);
    
            println("You(p2) rolled a " + p2diceroll + "!");
    
            if (p2diceroll > p1diceroll) {
              println("player 2  rolled higher(" + p2diceroll + " > " + p1diceroll + ")!. They go first. ");
              result = "player 2\ngoes first";
            } else if (p2diceroll == p1diceroll) {
              println("It's a tie! player 1 goes first by default." );
              result = "tie! player 1\ngoes first";
            } else {
              println("player 1 rolled higher(" + p1diceroll + " > " + p2diceroll + ")! They go first.");
              result = "player 1\ngoes first";
            }
        }
    }
    

    我会回答,给我一秒钟,我们需要查看您的其余代码。从这一点上,我无法判断您是否犯了小错误,或者您是否完全不了解编程的工作原理。@JasmineLiao如果这对您有效,请将答案标记为已解决,以便其他人也能看到解决方案。谢谢:)