PROGRAMAS EN JAVA DE NUMEROS ALEATORIOS
1.- Numero aleatorio de dado gráfico.
Este programa en Java crea una interfaz gráfica que permite al usuario lanzar una cantidad
de dados a su elección, mostrando visualmente el resultado de cada dado mediante imágenes.
Se utiliza la clase JFrame de Swing para diseñar la ventana principal, donde se incluyen
botones estilizados para lanzar los dados y finalizar el juego. El programa también calcula y
muestra la suma total de los dados lanzados, almacenando los resultados de cada ronda. Al
finalizar, se presenta una lista de todas las sumas obtenidas en cada lanzamiento antes de
cerrar la aplicación.
/*
* To change this license header, choose License Headers in Project
Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package dadograficoestetico;
import [Link].*;
import [Link].*;
import [Link].*;
import [Link];
import [Link];
public class DadoGraficoEstetico extends JFrame {
private JLabel resultadoLabel;
private Random random;
private JButton botonLanzar;
private JButton botonFinalizar;
private JPanel panelBoton;
private int numDados;
private ArrayList<Integer> sumatorias; // Lista para guardar las sumas
de cada lanzamiento
private JPanel panelImagenes;
// Constructor
public DadoGraficoEstetico() {
random = new Random();
sumatorias = new ArrayList<>(); // Inicializa la lista para
almacenar las sumatorias de los lanzamientos
setTitle("Lanzamiento de Dados");
setSize(600, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setLayout(new BorderLayout());
// Preguntar cuántos dados lanzar
String input = [Link](this, "¿Cuántos dados
deseas lanzar?");
try {
numDados = [Link](input); // Convertir la entrada a
un número entero
} catch (NumberFormatException e) {
numDados = 1; // Si la entrada no es válida, lanzar un dado por
defecto
}
// Panel de imágenes de los dados
panelImagenes = new JPanel();
[Link](new Color(255, 182, 193)); // Fondo rosa
claro
[Link](new FlowLayout());
// Panel para el resultado de la suma
resultadoLabel = new JLabel("Resultado total: ");
[Link](new Color(255, 105, 180)); // Texto
rosa fuerte
[Link](new Font("SansSerif", [Link], 18));
[Link]([Link]);
// Crear un botón estilizado para lanzar los dados
botonLanzar = new JButton("Lanzar Dados");
[Link](new Color(255, 105, 180)); // Botón rosa
fuerte
[Link]([Link]);
[Link](new Font("SansSerif", [Link], 16));
[Link](false);
[Link]([Link](10, 20, 10,
20));
// Botón para finalizar y mostrar sumatorias
botonFinalizar = new JButton("Finalizar y Ver Resultados");
[Link](new Color(255, 105, 180)); // Botón
rosa fuerte
[Link]([Link]);
[Link](new Font("SansSerif", [Link], 16));
[Link](false);
[Link]([Link](10, 20, 10,
20));
[Link](false);
// Panel para contener los botones
panelBoton = new JPanel();
[Link](new Color(255, 182, 193)); // Fondo rosa
claro
[Link](botonLanzar);
[Link](botonFinalizar);
// Añadir un ActionListener para el botón de lanzar
[Link](new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
lanzarDados(); // Lanza los dados y muestra los resultados
[Link](true); // Habilitar el botón de
finalizar después del primer lanzamiento
}
});
// Añadir un ActionListener para el botón de finalizar
[Link](new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
mostrarSumatorias(); // Muestra la lista de sumatorias
}
});
// Añadir componentes a la ventana
add(resultadoLabel, [Link]);
add(panelImagenes, [Link]);
add(panelBoton, [Link]);
}
// Método para lanzar los dados y actualizar la imagen
private void lanzarDados() {
[Link](); // Limpia las imágenes previas de los dados
int resultadoTotal = 0;
for (int i = 1; i <= numDados; i++) {
int resultado = [Link](6) + 1; // Genera un número
aleatorio entre 1 y 6
resultadoTotal += resultado;
// Cargar la imagen del dado correspondiente
String rutaImagen = "C:\\Users\\ALONDRA
IBARRADELUNA\\Documents\\Semestre 9\\Tello\\Tarea3_Programas/dado" +
resultado + ".jpg"; // Asegúrate de que las imágenes estén en la misma
carpeta
ImageIcon icono = new ImageIcon(rutaImagen);
// Verificar si la imagen se carga correctamente
if ([Link]() == -1) {
[Link](this, "No se pudo cargar la
imagen: " + rutaImagen, "Error de Carga", JOptionPane.ERROR_MESSAGE);
continue; // Si no se carga, continúa con el siguiente dado
}
Image img = [Link]().getScaledInstance(100, 100,
Image.SCALE_SMOOTH); // Escalar la imagen
// Crear una etiqueta para la imagen y añadirla al panel
JLabel dadoLabel = new JLabel(new ImageIcon(img));
[Link](dadoLabel);
}
[Link]("Resultado total: " + resultadoTotal); // Mostrar
el resultado total
[Link](resultadoTotal); // Guardar la suma en la lista
[Link](); // Actualizar el panel de imágenes
[Link]();
}
// Método para mostrar la lista de sumatorias
private void mostrarSumatorias() {
StringBuilder mensaje = new StringBuilder();
int contador = 1;
for (int suma : sumatorias) {
[Link]("Lanzamiento ").append(contador).append(":
").append(suma).append("\n");
contador++;
}
[Link]("¡Gracias por jugar!");
// Mostrar la lista de sumatorias en un JOptionPane
[Link](this, [Link](), "Resultados
de los lanzamientos", JOptionPane.INFORMATION_MESSAGE);
[Link](0); // Cerrar el programa al hacer clic en "Aceptar"
}
// Método principal para ejecutar el programa
public static void main(String[] args) {
[Link](new Runnable() {
@Override
public void run() {
DadoGraficoEstetico frame = new DadoGraficoEstetico();
[Link](true);
}
});
}
}
Corrida 1
Corrida 2
2.- Numero aleatorio entre un rango de números.
Este programa en Java genera 10 números aleatorios dentro de un rango definido por el
usuario. Al ejecutarlo, el usuario ingresa un valor mínimo y máximo a través de una interfaz
gráfica. Luego, al presionar un botón, el programa crea los números aleatorios dentro de ese
rango y los muestra en una lista en pantalla. Si los valores ingresados no son válidos, como
cuando el mínimo es mayor o igual que el máximo, se muestra un mensaje de error. Todo se
presenta en una interfaz gráfica estilizada con colores rosados para hacerla más atractiva.
/*
* To change this license header, choose License Headers in Project
Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package numalerangonumero;
import [Link].*;
import [Link].*;
import [Link].*;
import [Link];
import [Link];
public class NumAleRangoNumero extends JFrame {
private JTextField minField;
private JTextField maxField;
private JButton generarButton;
private JTextArea listaNumerosArea;
private ArrayList<Integer> numerosGenerados;
private Random random;
public NumAleRangoNumero() {
setTitle("Generador de Números Aleatorios en Rango");
setSize(500, 500);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setLayout(new BorderLayout());
random = new Random();
numerosGenerados = new ArrayList<>();
Color fondoRosaClaro = new Color(255, 182, 193);
Color rosaFuerte = new Color(255, 105, 180);
JPanel panelRango = new JPanel();
[Link](new FlowLayout());
[Link](fondoRosaClaro);
JLabel minLabel = new JLabel("Mínimo:");
minField = new JTextField(5);
JLabel maxLabel = new JLabel("Máximo:");
maxField = new JTextField(5);
generarButton = new JButton("Generar Números");
[Link](rosaFuerte);
[Link]([Link]);
[Link](new Font("SansSerif", [Link], 14));
[Link](new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
generarNumerosAleatorios();
}
});
[Link](minLabel);
[Link](minField);
[Link](maxLabel);
[Link](maxField);
[Link](generarButton);
listaNumerosArea = new JTextArea();
[Link](false);
[Link](new Font("SansSerif", [Link], 16));
[Link](fondoRosaClaro);
[Link]([Link]);
JScrollPane scrollPane = new JScrollPane(listaNumerosArea);
add(panelRango, [Link]);
add(scrollPane, [Link]);
}
private void generarNumerosAleatorios() {
[Link]();
[Link]("");
try {
int min = [Link]([Link]());
int max = [Link]([Link]());
if (min >= max) {
[Link](this, "El valor mínimo debe
ser menor que el máximo", "Error", JOptionPane.ERROR_MESSAGE);
return;
}
for (int i = 0; i < 10; i++) {
int numAleatorio = [Link](max - min + 1) + min;
[Link](numAleatorio);
}
for (int numero : numerosGenerados) {
[Link](numero + "\n");
}
} catch (NumberFormatException e) {
[Link](this, "Por favor, ingresa números
válidos.", "Error", JOptionPane.ERROR_MESSAGE);
}
}
public static void main(String[] args) {
[Link](new Runnable() {
@Override
public void run() {
NumAleRangoNumero frame = new NumAleRangoNumero();
[Link](true);
}
});
}
}
Corrida 1