Dudas con un juego de Poker en java !

Iniciado por elrecar, 16 Mayo 2009, 18:15 PM

0 Miembros y 1 Visitante están viendo este tema.

elrecar

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

Amerikano|Cls

Código (java) [Seleccionar]

int carta=0;

for(int i=0; i<5; i++){
     for(int j=0; j<arrayJugadores.size(); j++){
          carta=(int)(Math.random() * arrayCartas.size());
          arrayJugadores.get(j).darCarta(arrayCartas.get(carta));
          arrayCartas.remove(carta);
     }
}


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




Mi blog:
http://amerikanocls.blogspot.com

elrecar

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?

Amerikano|Cls

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




Mi blog:
http://amerikanocls.blogspot.com

elrecar

entonces el darCarta vendria a ser el setter? setCarta? como lo implementaria?  no entiendo  :huh:

Amerikano|Cls

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 (java) [Seleccionar]
public void darCarta(Carta miCarta){

     miArrayCartas.add(miCarta);
}


salu2  ;)




Mi blog:
http://amerikanocls.blogspot.com

elrecar

Código (java) [Seleccionar]

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

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



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...

Amerikano|Cls

#7
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




Mi blog:
http://amerikanocls.blogspot.com

elrecar

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


Amerikano|Cls

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




Mi blog:
http://amerikanocls.blogspot.com