Categorías
Programación

Código Java que simula tirada de dados

Para un pequeño proyecto que tengo entre manos ahora mismo tuve que hacer una clase Java que simulara tiradas de dados de distinto rango (no es lo mismo un dado de seis caras que uno de cien). El código que he elaborado simula la tirada de un dado del rango que quieras o de un conjunto de dados iguales.

Os dejo el código para que lo utilicéis si queréis. Véis que es extremadamente simple, nada que nadie con una mínima idea de programación no hubiera podido hacer incluso mejor. Soy consciente de que no será el más eficiente pero me vale; no obstante si tenéis propuestas de mejora no lo dudéis y usad los comentarios, que para eso están.

package Random;

import java.util.ArrayList;

public class Dados {
    public static int tirarDado(int rango) {
        double resultado;
        resultado=Math.random()*rango; // Se le suma 1 si el valor del 0 es 10. 
        return (int)resultado;
    }
    
    public static ArrayList tirarDados(int numero, int rango) {
        ArrayList resultados=new ArrayList();
        for (int i=0; i<numero; i++) {
            resultados.add(tirarDado(rango));
        }
        return resultados;
    }
}

Si lo preferís, acabo de inaugurar mi primer repositorio público propio, dedicado al proyecto que estoy haciendo a ratos muertos. Está alojado en Github. Sabréis lo que hacer con él.

9 respuestas a «Código Java que simula tirada de dados»

Buenas Manu. La verdad es que no entiendo el comentario que pones, pero creo que siempre tendrías que sumar 1. Cuenta que el random es de 0.0 <= x < 1.0, por lo que si quieres de 1 a Rango, o sumas o no llegarías a Rango y te podría salir un cero.

Tendría que ser:

return 1 + (int) resultado;

Un saludo

Buenas. Te explico la razón de ese comentario :)

¿Alguna vez viste dados de rol? Un D10 normal tiene en cada una de sus caras un dígito entre el 0 y el 9. En tanto que este código se elaboró, básicamente, para rellenar fichas de un juego de rol de manera automática, no puse ese +1. El comentario, sobre todo, es para recordar que si quieres una tirada entre 1 y 6 debes sumar un 1 a ese resultado.

Hola, quisiera preguntarle como hacer para que el programa cuando salga un número determinado por ejemplo pusiese una frase, he intentado hacerlo por mi cuenta pero me da error, no me he instruido mucho en el lenguaje java así que no sé que podría estar fallando.

console.log(‘Preparado’);
const Discord = require(‘Discord.js’);
const bot = new Discord.Client();

bot.on(‘message’, (message) => {
if (message.content == ‘d!Tirar los dados’) {
var rand1 = Math.round(Math.random()*6);
var x = + rand1 {
if (x = 1) {
message.channel.sendMessage(‘:dados1:’);
}
if (x = 2) {
message.channel.sendMessage(‘:dados2:’);
}
if (x = 3) {
message.channel.sendMessage(‘:dados3:’);
}
if (x = 4) {
message.channel.sendMessage(‘:dados4:’);
}
if (x = 5) {
message.channel.sendMessage(‘:dados5:’);
}
if (x = 6) {
message.channel.sendMessage(‘:dados6:’);
}

}
});

Si pudieses ayudarme te lo agradecería mucho por favor.

Codigo Java Juego de dados Chicago:

/*
4. Realizar un programa que simule el juego de dados conocido como “Chicago” para dos jugadores.
Dicho juego tiene el siguiente desarrollo:

a. Tiene 11 vueltas y cada una de ellas posee un número «clave»; para la primera es el 2.
El número clave aumenta de 1 en 1 en cada vuelta, por lo tanto, en la última será 12.

b. Cada jugador tira una vez por turno. El puntaje de cada vuelta es igual al número clave.
Por lo tanto, en la primera, el jugador que saca un 2, tiene dos puntos y el que no saca 2, no
tiene puntaje. En la segunda vuelta, el jugador que saca 3, tendrá tres tantos y así sucesivamente.

c. El número clave se puede formar con uno o con dos dados. Por lo tanto, si éste es 5, el jugador
que saque la combinación 3-2 hace cinco puntos al igual que el que saca 5 y otro número. Si un
participante saca un par del número clave, se anotará puntaje por un número solo. Después de las 11
vueltas, se computan los totales y ganará la partida el jugador de mayor puntaje. Es bueno aclarar
que si ambos jugadores tienen el mismo puntaje, la partida quedará empate.

*/
package prochicago;

import java.util.Random;
import java.util.Scanner;

/*@author Eugenio F. Martinez Mora
* P. A. A.
*/
public class ProChicago {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {

Scanner entrada= new Scanner(System.in);//instanciacion de la clase Scanner para capturar las entradas.

Random dado1=new Random();//instanciacion de la clase random para el objeto dado1.
Random dado2=new Random();//instanciacion de la clase random para el objeto dado2.
int puntos_jugador1=0;//variable de tipo entero para acumular los puntos jugador1
int puntos_jugador2=0;//variable de tipo entero para acumular los puntos jugador2
int vuelta=1;//variable de tipo entero para acumular el numero de vueltas.
int numero_dado1; //variable de tipo entero para guardar temporalmente el valor del dado1 en cada tirada.
int numero_dado2; //variable de tipo entero para guardar temporalmente el valor del dado1 en cada tirada.
int turnos1=0;//variable de tipo entero para contar los turnos del jugador1.
int turnos2=0;//variable de tipo entero para contar los turnos del jugador2.

while(vueltapuntos_jugador2){//codicional para determinar quien es el ganador al final de las 11 vueltas.
System.out.println(«El jugador 1 es el ganador con «+puntos_jugador1);

}else if(puntos_jugador1<puntos_jugador2){
System.out.println("El jugador 2 es el ganador con "+puntos_jugador2);
}
else
{
System.out.println("El jugador 1 y el jugador 2 quedaron empate con: "+puntos_jugador1);
}

}

}//Fin.

In Bolivia there is a very popular game called “Cacho”. The game consists rolling five dices (a1, a2, a3,
a4, a5) and then annotate the result according to certain rules. This time we will focus on one case in
particular: “escala”. A “escala” is the scene in which the dices form a sequence of consecutive numbers.
More formally a “escala” meets the property:
ai + 1 = ai+1, 1 ? i ? 4
There are two types of “escala”: a ordinary “escala” (it satisfy the property described above), and a “Escala
Real” (when the scenery is 1, 3, 4, 5, 6. In the game this case is also a valid “scala”).
Cael is a boy who is learning to play and wants you to help develop a program to check when five dices
are forming a “escala”. Note that the “Escala Real” is not a valid “escala” for Cael

Escribir un programa que lea 10 numeros enteros entre el 1 y el 100 de la entrada estandar
y genere un histograma con las frecuencia de cada entero en la secuencia.
para representar las barras del histograma utilizar secuencias del caracter ‘*’
Secuencia 1,1,20,1,2,20,3,3,1
1:***
2:*
3:****
4:***
20:**
33:*
me podriais ayudar en este ejercicio java muchas gracias

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.