Foro de elhacker.net

Programación => Java => Mensaje iniciado por: elrecar en 16 Mayo 2009, 18:15 pm



Título: Dudas con un juego de Poker en java !
Publicado por: elrecar en 16 Mayo 2009, 18:15 pm
Hola buenas, hace unos dias q llevo programando un juego de Poker en consola con arraylists,  me he creado tres clases Carta, Juego y Jugador.
Pues en juego tengo una coleccion/arraylist de jugadores .
En juego he generado el mazo de cartas, o sea he guardado en un arraylist el mazo de 52 cartas de tipo carta, ahora lo que me resta hacer es repartir a cada Jugador del arraylist de jugadores 5 cartas del mazo de cartas.. o sea del arraylist q contiene objetos de tipo carta (52) y bueno no se como hacer eso ... o sea como hago para repartilas a cada jugador, en donde las guardo o que, como accedo ??? quizas no este siendo muy explicito xD :-X


Título: Re: Dudas con un juego de Poker en java !
Publicado por: Amerikano|Cls en 16 Mayo 2009, 18:28 pm
Código
  1. int carta=0;
  2.  
  3. for(int i=0; i<5; i++){
  4.     for(int j=0; j<arrayJugadores.size(); j++){
  5.          carta=(int)(Math.random() * arrayCartas.size());
  6.          arrayJugadores.get(j).darCarta(arrayCartas.get(carta));
  7.          arrayCartas.remove(carta);
  8.     }
  9. }

Mira lo que debes hacer es un ciclo que realice 5 veces la tarea de repartir carta a cada uno de los jugadores. En este caso arrayCartas seria el array donde almacenas las cartas, te recomiendo uses un arrayList o linkedList, arrayJugadores seria el array donde estan los jugadores que van a jugar, y la variable carta es un entero que almacena la posicion generada aleatoriamente para escoger una carta de la baraja y darsela a un jugador a traves del metodo darCarta() o como quieras llamarlo y enseguida de esto quitamos esta carta de la baraja ;).

salu2


Título: Re: Dudas con un juego de Poker en java !
Publicado por: elrecar en 16 Mayo 2009, 19:40 pm
Mmm el for anidado lo entiendo y la idea en general, lo que no me cierra es :

arrayJugadores.get(j).darCarta(arrayCartas.get(carta));

el darCarta que tendria? justo ese era el problem .. al guardarselas al jugador y despues como acceder/obtener las cartas de cada jugador, tendria q recorrerlas no?


Título: Re: Dudas con un juego de Poker en java !
Publicado por: Amerikano|Cls en 16 Mayo 2009, 20:58 pm
lo que quiere decir es que obtienes primero el jugador con arrayJugadores.get(j) y luego suponiendo que cada jugador tiene implementado un metodo llamado darCarta donde se le asignaria una carta al jugador pues basicamente el parametro que lleva es la carta obtenida del array de cartas por medio del numero generado aleatoriamente. Espero me me entiendas sino pregunta  ;D

saludin


Título: Re: Dudas con un juego de Poker en java !
Publicado por: elrecar en 16 Mayo 2009, 21:17 pm
entonces el darCarta vendria a ser el setter? setCarta? como lo implementaria?  no entiendo  :huh:


Título: Re: Dudas con un juego de Poker en java !
Publicado por: Amerikano|Cls en 16 Mayo 2009, 23:33 pm
Exactamente  :), pero ten en cuenta que la agregarias a la mano del jugador, es decir puedes poner en la clase jugador un arrayList que seria algo como las cartas que tiene en mano, el metodo darCarta() entonces seria algo como esto:

Código
  1. public void darCarta(Carta miCarta){
  2.  
  3.     miArrayCartas.add(miCarta);
  4. }

salu2  ;)


Título: Re: Dudas con un juego de Poker en java !
Publicado por: elrecar en 17 Mayo 2009, 21:11 pm
Código
  1. public void repartirCartas() {
  2. int carta = 0;
  3. for(int i=0; i<5; i++){
  4. for(int j=0; j<listaJugadoresJuego.size(); j++){
  5. carta=(int)(Math.random() * mazoBarajas.size());
  6. listaJugadoresJuego.get(j).darCarta(mazoBarajas.get(carta));
  7. mazoBarajas.remove(carta);
  8. }
  9. }
  10. }
  11.  
  12. public void darCarta(Carta miCarta){
  13. mazoBarajasMano.add(miCarta);
  14. }
  15.  


Ahora me marca el darCarta en repartirCartas
"The method darCarta(Object) is undefined for the type Object"e
Me sugirio hacerle un casting, lo hice pero siguio marcando error   :huh:

Y me cree un arraylist nuevo mazoBarajasMano para guardar las barajas ... ahora lo que me falta entender/saber es como acceder a las barajas de un jugador, o sea dado un jugador listar las 5 barajas que tiene ese jugador y ya entendiendo eso me solucionaria bastante el problema  para seguir adelante...


Título: Re: Dudas con un juego de Poker en java !
Publicado por: Amerikano|Cls en 18 Mayo 2009, 00:32 am
Pero tienes bien definidas las clases?, es decir tienes la clase Carta, la clase Jugador, tienes dentro de Jugador el arrayList mazoBarajasMano ?.

El metodo darCarta va dentro de la clase Jugador obviamnete. Ah y otra cosa el arrayList mazoBaraja son las cartas del diler es decir diferente a las que el jugador tiene en mano, por eso cuando repartimos una carta a un jugador del arrayList Jugador se remuve inmediatamente

salu2


Título: Re: Dudas con un juego de Poker en java !
Publicado por: elrecar en 18 Mayo 2009, 03:22 am
Si tengo la clase Carta, mazoBarajasMano lo tengo en la clase Jugador.
El metodo darCarta lo tengo en la clase Juego al igual que el arraylist mazoBaraja.

Juego:
http://pastebin.com/m1585f907

Jugador:
http://pastebin.com/m40a75a01

Carta:
http://pastebin.com/m7b88e7d3



Título: Re: Dudas con un juego de Poker en java !
Publicado por: Amerikano|Cls en 18 Mayo 2009, 08:16 am
Mira creo que el error esta en la inicializacion de los arrayList. Tu lo tienes de esta forma:

private ArrayList xxxx;

y lo inicializas así:

this.xxxx = new ArrayList();

El problema es que no le estas indicando el tipo de objeto que tendra el arrayList, mirá seria algo así:

private ArrayList<Nombre_del_Objeto> lista; y lo inicializas así:

lista = new ArrayList<Nombre_del_Objeto>(); Donde Nombre_del_Objeto es el la coleccion que quieres formar, es decir Jugador, Carta etc  ;D

salu2


Título: Re: Dudas con un juego de Poker en java !
Publicado por: elrecar en 18 Mayo 2009, 19:27 pm
Ahh yaa .. claro con razon ... seria lo mismo haciendole un casting de esta forma:

Código
  1. public void repartirCartas() {
  2. int carta = 0;
  3. for(int i=0; i<5; i++){
  4. for(int j=0; j<listaJugadoresJuego.size(); j++){
  5. carta=(int)(Math.random() * mazoBarajas.size());
  6. (Jugador) listaJugadoresJuego.get(j)).darCarta((Carta)mazoBarajas.get(carta));
  7. mazoBarajas.remove(carta);
  8. }
  9. }
  10. }
  11.  

Listo, aunque es mas comodo definirlo como tu dices en el array para no tener q castear despues xD
Ahora lo ultimo que falta es saber como obtener las 5 cartas de un jugador dado para poder detectar los juegos, o sea si es poker, pierna, par, escalera etc, tengo q hacer un for anidado recorriendo los dos arraylist de listaJugadoresJuego y mazoBarajasMano ?


Título: Re: Dudas con un juego de Poker en java !
Publicado por: Amerikano|Cls en 19 Mayo 2009, 00:53 am
Exactamente  ;)


Título: Re: Dudas con un juego de Poker en java !
Publicado por: elrecar en 19 Mayo 2009, 02:51 am
Oks bueno, muchas gracias por tu ayuda, se agradece jeje  ;-) ::)


Título: Re: Dudas con un juego de Poker en java !
Publicado por: Amerikano|Cls en 19 Mayo 2009, 04:08 am
Ya lo solucionaste?  ;)


Título: Re: Dudas con un juego de Poker en java !
Publicado por: Java_Novato en 19 Agosto 2010, 17:49 pm
Hola:

Me he leido toda vuestra charla. Tengo similar problema y no logro solucionarlo,
me refiero a que me sale un error:
"The method darCarta(Carta) is undefined for the type Jugador"

Mi código es:

public void darCarta(Carta miCarta) {      
mazo.add(miCarta);   
}

public void repartirCartas(){      
int carta = 0;      
for (int i=0; i<7;i++){         
for (int j=0; j<lista.size(); j++){      
carta=(int) (Math.random()*mazo.size());            lista.get(j).darCarta(mazo.get(carta));            lista.remove(carta);         
}