Cómo programar tiradas de dados para dos jugadores

(Procesando) El código no devuelve lo que quiero. Básicamente, hay dos jugadores, y cada jugador se turna para lanzar un dado. Los valores deben almacenarse en la variable "p1diceroll" y "p2diceroll" respectivamente. Comparará los dos valores y liberará quién irá primero según quién haya subido más.

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.");
        }
    }
}

Espero que el resultado sea: "¡el jugador 2 salió más alto! Ellos van primero", "¡Es un empate! El jugador 1 va primero por defecto" o "el jugador 1 sale más alto. Van primero".

Respuesta 1

Además de la respuesta de AA, aquí hay algunas opciones de procesamiento:

  1. random()(p. ej. println((int)random(1,7));(lanzar a intes equivalente a lo println(floor(random(1,7)));que dejaría caer el número de coma flotante a un piso entre 1-6.
  2. randomGaussian()podría ser divertido jugar con la distribución más cercana a un lanzamiento de dados
  3. noise()le dará muchas opciones, especialmente en combinación con noiseSeed()ynoiseDetail()

También he notado que los valores de diceroll por jugador se restablecen cada vez que se presiona la tecla. No estoy 100% seguro de que sea lo que pretendía que uno de los dos valores siempre sea 0.

Aquí hay una versión modificada de su código usando random()y depurando texto:

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";
        }
    }
}
Respuesta: 2

En mi colección, los documentos se ven así: logré obtener el último documento insertado haciendo esto: collection.find (). Sort (new Document ("date", - 1)). First (). GetDate () Pero ahora necesito ...

Deseo obtener el nombre del servidor y el puerto de la aplicación actual al iniciar el servidor. Logré obtener el nombre de host y la dirección con: hostName = InetAddress.getLocalHost (). GetHostName (); hostAddress = ...

Estoy usando Eclipse para ejecutar mis aplicaciones. => Todo este tiempo he estado corriendo como una aplicación Java (usando la opción Ejecutar como aplicación Java) y funciona. Mi programa se ejecuta durante 20 minutos y ...

Mapstruct genera una clase después de realizar una instalación limpia de mvn, pero si no se hace, y ejecuto mi aplicación de arranque de primavera, obtengo una excepción de clase no encontrada. Me preguntaba si había algo que pudiera hacer ...