En esta entrada dejo un ejemplo formativo de Aplicación creada en JAVA-J2SE (IDE Netbeans).
Permite realizar juegos de primitiva, quiniela y loterías, aleatorios y manuales. Ideal para propósitos formativos. Aprendizaje de las técnicas de programación.
Se encuentra compuesta por 2 clases en un paquete llamado AplicaciónJuego.
Veamos cómo resolver el problema…
AplicacionJuego.java
package AplicacionJuego; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Date; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author Oscar de la Cuesta Campillo */ public class AplicacionJuego { static Date fecha; static double totalapuestas=0; public static void main(String[] args) { try { Juego mijuego = new Juego(); BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in)); String texto=""; char opcion=' '; do { fecha=new Date(); System.out.println("**********************"); System.out.println("LOTERIAS Y APUESTAS"); System.out.println("**********************"); System.out.println("1 - Primitiva."); System.out.println("2 - Quiniela."); System.out.println("3 - Loteria"); System.out.println("0 - Salir"); System.out.println("\nElige juego:"); texto=teclado.readLine(); opcion=texto.charAt(0); if (opcion=='1'){ //Llamo al método juego de la Primitiva mijuego.primitiva(); } if (opcion=='2'){ //Llamo al método juego de la Quiniela mijuego.quiniela(); } if (opcion=='3'){ //Llamo al método juego de la Lotería Nacional mijuego.loteria_nacional(); } } while ( opcion!='0' ); // Mostramos el total mediante la variable de clase tipo static (no se han instanciado objetos. System.out.println("........................"); System.out.println("Total a Pagar: " + Double.toString(mijuego.totalapuestas) + " €"); } catch (IOException ex) { Logger.getLogger(Juego.class.getName()).log(Level.SEVERE, null, ex); } } }
Juego.java
package AplicacionJuego; import com.sun.org.apache.bcel.internal.generic.InstructionConstants; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.text.SimpleDateFormat; import java.util.logging.Level; import java.util.logging.Logger; import java.util.Date; // Clases añadidas para el correcto funcionamiento del programa import java.util.Calendar; import java.util.GregorianCalendar; // Para los numeros aleatorios import java.util.Random; /** * * @author Oscar de la Cuesta - palentino.es * Creado con NetBeans */ public class Juego { //Creo una variable de clase para almacenar el total. Esta variable es visible para el resto de métodos de la clase static String fechacadena; static Date fecha; static double totalapuestas=0; private static void borrar_pantalla() { for ( int i=0;i<50;i++) System.out.println("\n"); } private static void tecla_para_continuar() throws IOException { String texto; BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in)); System.out.println("\nPulse una tecla para continuar ..."); texto=teclado.readLine(); } public static String sumar_fechas_dias(Date fch, int dias) { Calendar cal = new GregorianCalendar(); cal.setTimeInMillis(fch.getTime()); cal.add(Calendar.DATE, dias); // Direccion para ver los delimitadores http://javatechniques.com/blog/dateformat-and-simpledateformat-examples/ SimpleDateFormat formateador = new SimpleDateFormat("EEEE dd 'de' MMMM 'de' yyyy"); String formateada = formateador.format(cal.getTime()); return formateada; } // Metodo de clase que calcula el dia del sorteo. private static String dia_del_sorteo (Date dia_actual, int tipo_sorteo) { Date fecha; fecha=new Date(); int Dias_A_Anadir=0; String fechacadena,diaactual; fechacadena=fecha.toString(); fechacadena=fechacadena.substring(0,3).toLowerCase(); if (tipo_sorteo==1) // Sorteo de la primitiva { if (fechacadena.equals("thu")) { return fecha.toString(); } else { if (fechacadena.equals("mon")) Dias_A_Anadir=3; if (fechacadena.equals("tue")) Dias_A_Anadir=2; if (fechacadena.equals("wed")) Dias_A_Anadir=1; if (fechacadena.equals("fri")) Dias_A_Anadir=6; if (fechacadena.equals("sat")) Dias_A_Anadir=5; if (fechacadena.equals("sun")) Dias_A_Anadir=4; } } if (tipo_sorteo==2) // Sorteo de la Quiniela { if (fechacadena.equals("sun")) { System.out.println(fechacadena); return fecha.toString(); } else { if (fechacadena.equals("mon")) Dias_A_Anadir=6; if (fechacadena.equals("tue")) Dias_A_Anadir=5; if (fechacadena.equals("wed")) Dias_A_Anadir=4; if (fechacadena.equals("thu")) Dias_A_Anadir=3; if (fechacadena.equals("fri")) Dias_A_Anadir=2; if (fechacadena.equals("sat")) Dias_A_Anadir=1; } } if (tipo_sorteo==3) // Sorteo de la Loteria Nacional { if (fechacadena.equals("sat")) { System.out.println(fechacadena); return fecha.toString(); } else { if (fechacadena.equals("mon")) Dias_A_Anadir=5; if (fechacadena.equals("tue")) Dias_A_Anadir=4; if (fechacadena.equals("wed")) Dias_A_Anadir=3; if (fechacadena.equals("thu")) Dias_A_Anadir=2; if (fechacadena.equals("fri")) Dias_A_Anadir=1; if (fechacadena.equals("sun")) Dias_A_Anadir=6; } } return sumar_fechas_dias(fecha, Dias_A_Anadir); } public static void primitiva() throws IOException{//En este método de clase resolveremos el problema de la Primitiva borrar_pantalla(); fechacadena = dia_del_sorteo(fecha,1).toString(); // Seguimos con lo que pide el enunciado. System.out.println("Próximo Sorteo :" + fechacadena); int NumerosPrimitiva; //inicializamos los numeros del array System.out.print("Apuesta: "); for (int i=0;i<=7;i++) { NumerosPrimitiva=(int) Math.floor(Math.random()*49 +1); if (i<6) System.out.print(Integer.toString(NumerosPrimitiva)+ " "); if (i==6) // Para el complementario System.out.println("\nComplementario:" + Integer.toString(NumerosPrimitiva)+ " "); if (i==7) { NumerosPrimitiva=(int) Math.floor(Math.random()*9 ); System.out.print("Reintegro:" + Integer.toString(NumerosPrimitiva)+ " "); } } // Sumamos el coste de la apuesta totalapuestas++; tecla_para_continuar(); } //En este método de clase resolveremos el problema de la Quiniela. public static void quiniela() throws IOException { borrar_pantalla(); fechacadena = dia_del_sorteo(fecha,2).toString(); System.out.println("Próxima Jornada :" + fechacadena); System.out.print("¿Cuántas apuestas quieres (2-8)?"); BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in)); int opcion=0; String texto=""; char caracter; do { texto=teclado.readLine(); caracter= texto.charAt(0); opcion=caracter-48; // 48 es el valor ASCII de 0 if (opcion<=1 || opcion>=8) System.out.println("Número de apuestas incorrecto"); System.out.println(caracter); } while (opcion<=1 || opcion>=8); int ApuestasX12; //ApuestasX12 = new int [15]; for(int i=0;i<opcion;i++) { System.out.print("Apuesta " + Integer.toString(i+1) + ":"); for (int j=0;j<=14;j++) { ApuestasX12=(int) Math.floor(Math.random()*3+1 ); if (ApuestasX12==1) System.out.print("1 "); if (ApuestasX12==2) System.out.print("X "); if (ApuestasX12==3) System.out.print("3 "); } System.out.println(""); } //Calculamos las apuestas en función del numero de opciones introducido tecla_para_continuar(); totalapuestas=totalapuestas + (0.5)*opcion; } //En este método de clase resolveremos el problema de la Loteria Nacional public static void loteria_nacional() throws IOException { borrar_pantalla(); fechacadena = dia_del_sorteo(fecha,3).toString(); System.out.println("Próximo Sorteo :" + fechacadena); System.out.println("Elige la terminación hasta 3 cifras: (ENTER si te da igual):"); BufferedReader teclado = new BufferedReader(new InputStreamReader(System.in)); String texto=""; texto=teclado.readLine(); int numero; // En caso de ser ENTER, todos los numeros, controlo si ya ha aparecido, numeros hasta el 70000 if (texto.isEmpty()) { numero=(int) Math.floor(Math.random()*70000+1); } else { // Comprobamos cuantos digitos ha metido if (texto.length()== 3) { String numeroconstruido; int numero1,numero2; numero1=(int)(Math.floor(Math.random()*9)); numero2=(int)(Math.floor(Math.random()*9)); numeroconstruido= Integer.toString(numero1)+ Integer.toString(numero2)+ texto; System.out.println("Numero con el que juegas: " + numeroconstruido); } if (texto.length()== 2) { String numeroconstruido; int numero1,numero2,numero3; numero1=(int)(Math.floor(Math.random()*9)); numero2=(int)(Math.floor(Math.random()*9)); numero3=(int)(Math.floor(Math.random()*9)); numeroconstruido= Integer.toString(numero1)+ Integer.toString(numero2)+ Integer.toString(numero3)+ texto; System.out.println("Numero con el que juegas: " + numeroconstruido); } if (texto.length()== 1) { String numeroconstruido; int numero1,numero2,numero3, numero4; numero1=(int)(Math.floor(Math.random()*9)); numero2=(int)(Math.floor(Math.random()*9)); numero3=(int)(Math.floor(Math.random()*9)); numero4=(int)(Math.floor(Math.random()*9)); numeroconstruido= Integer.toString(numero1)+ Integer.toString(numero2)+ Integer.toString(numero3)+ Integer.toString(numero4)+texto; System.out.println("Numero con el que juegas: " + numeroconstruido); } } tecla_para_continuar(); totalapuestas=totalapuestas + 12; } }
Espero que os sirva.