Título: Código para barajar cartas en Java. Publicado por: JesusIII en 16 Noviembre 2015, 23:32 pm Hola, estoy aprendiendo java y es la primera vez que escribo en el foro, espero que me podáis ayudar. La cosa es que tengo que hacer un juego llamado "7 y medio". Lo que me preocupa es el barajado.
Tengo un error (que marcaré con rojo). Según el profesor tengo que crear una clase Carta con dos atributos (cara y palo). No lo acabo de entender bien. Aquí dejo mi código. Gracias y si se puede mejorar decidmelo. package juego_7ymedio; import java.util.Random; import java.util.Scanner; import java.util.ArrayList; import java.util.Collections; public class baraja { private final int ncartas=52; public void barajar_cartas(){ //Elegimos el tipo de mazo String paquete="0"; Scanner teclado2 = new Scanner(System.in); System.out.println("Elige el tipo de baraja"); paquete=teclado2.nextLine(); String cara[]; String palo[]; switch(paquete){ case "E": //elegimos la baraja española cara=new String[]{"Uno", "Dos", "Tres", "Cuatro","Cinco","Seis","Siete","Ocho","Nueve","Diez","Once","Doce"}; palo=new String[] {"Oros","Espadas","Copas","Bastos"}; break; case "F": //elegimos la baraja francesa cara=new String[] {"As", "Dos", "Tres", "Cuatro","Cinco","Seis","Siete","Ocho","Nueve","Jota","Caballo","Rey"}; palo=new String[] {"Picas","Rombos","Treboles","Corazones"}; break; default: System.out.println("No has elegido la correcta, vuelve a elegir"); break; } //creamos el arraylist donde irán las cartas y las meteremos ArrayList<baraja> arraycartas= new ArrayList<baraja>(); for(int i=0;i<=cara.length;i++){ for(int j=0;j<=palo.length;j++){ arraycartas.add(new Carta(cara,palo[j])); } } //Ahora barajamos Collections.shuffle(arraycartas); //sacamos por pantalla a modo de prueba for(int k=0;k<=ncartas;k++){ arraycartas.get(k); System.out.println("la carta que ha salido es:" +arraycartas.get(k)); } } } Título: Re: Código para barajar cartas en Java. Publicado por: DarK_FirefoX en 17 Noviembre 2015, 20:37 pm Pues como te dice tu profesor, deberías orientar a objetos la solución de tu problema (Programación Orientada a Objetos (POO/OOP)).
En tal caso debes crear una clase Carta, que tenga dos propiedades, una que identifique el Palo y otra el Número (o cara, como sea que le llames). La manera de identificarla será escogida por ti, puedes hacerlo con Strings o utilizando Enum (investiga sobre este último). Luego te será más facil crear la clase Baraja, a la cual creo que deberías cambiarle la lógica. Primero, deberías tener un constructor, dentro del cual es donde escoges que tipo de baraja utilizar y utilizar campos para asignarle y guardar los valores de las cartas. Para guardar estos paquetes puedes crear clases separadas también, una clase que se llame BarajaFrancesa y otra BarajaEspañola, que ya tenga definido los valores de las caras y los palos. Ahora, como tal, el método barajar_cartas(); solo se ocupara de hacer el ArrayList que sea aleatorio, de la manera que lo hagas. Otra cosa, siempre trata de mantener la lógica, separada de la interfaz gráfica o de la consola (entrada de datos), esto hará que tu diseño de clases pueda ser rehusable y/o extendible. Cualquier duda pregunta. Ahh, y utiliza las etiquetas GeSHi para publicar código. Salu2s |