pregunta ejercicio java cartas

Iniciado por casidus, 8 Octubre 2010, 00:53 AM

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

casidus

hola, me gustaria saber si me podeis aclarar una cosa, tengo k hacer un programa en java que tiene que tener estas funcionalidades.
1. al ejecutar el programa se ve un tablero con todas las cartas repartidas ordenadas( esta parte mas o menos ya la tengo definida, es una arraid de JLabels con icono)
2. estas cartas se recojen.
3. estas cartas se barajan (esto no se tiene que ver, solo se tienen que mezclar)
4. las cartas se tienen que repartir todas a 4 jugadores.

eso es lo que no logro hacer del todo
me gustaria reutilizar la araid de labels, pero no se como, no se donde la tengo que crear para poder retornar el valor, ya que en este ejercicio no puedo usar variables globales.


alguna idea????

algun consejo????

gracias por todo

Flynker

amm  tal vez exista alguna manera de que las cartas estén almacenadas  en un arreglo y después las copies a otro pero utilizando random para que no se copien el mismo dos veces utilizar un if


casidus

me podrias decir mas o menos como estructurarlo????
es que acabo de empear con la programacion grafica, y estoy un poco perdido

gracias por todo

Flynker

#3
A no te preocupes yo tambien soy nuevo en esto... pero hice esto, talvez te sirva
lo hice en Eclipse y las imagenes tienen que estar guardadas donde se almacenan las clases.
Se que no es todo.. lo unico que hace es mostrar las cartas (6)  en cada lado de la ventada suponiendo que son 4 jugadores, es solo que cada vez que lo ejecutes mostrara cartas distintas a cada jugador, despues de todo no tienen exactamente que revolverse en el codigo fuente, solo mostrar cartas distintas al repartirlas y asi simula que se revolvieron.

Este es el link para que descarges las imagenes que utilice
 http://www.megaupload.com/?d=689WK9PD
Solo hay un pequeño detalle que me falto corregir y es que no se por que solo rara vez muestra menos cartas de las que deberia ... haber si alguien que conosca mas tiene alguna idea  :xD

Código (java) [Seleccionar]

import javax.swing.JFrame;

public class PruebaJuego
{
public static void main(String args[])
{
JuegoBarajas juego = new JuegoBarajas();
juego.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
juego.setSize(1000,775);
juego.setVisible(true);
}
}



Código (java) [Seleccionar]

import javax.swing.JFrame;
import javax.swing.Icon;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import java.awt.FlowLayout;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.JPanel;
import java.util.Random;
import java.awt.Color;

public class JuegoBarajas extends JFrame
{
private static final long serialVersionUID = 1L;
public JuegoBarajas()
{

super("Juego de Barajas");
getContentPane().setBackground(Color.WHITE);

   final String  nombres[] = {"bastos_1s.jpg","bastos_2s.jpg","bastos_3s.jpg","bastos_4s.jpg","bastos_5s.jpg","bastos_6s.jpg","bastos_7s.jpg",
               "bastos_8s.jpg","bastos_9s.jpg","bastos_10s.jpg","bastos_11s.jpg","bastos_12s.jpg",
               "copas_1s.jpg","copas_2s.jpg","copas_3s.jpg","copas_4s.jpg","copas_5s.jpg","copas_6s.jpg","copas_7s.jpg","copas_8s.jpg",
               "copas_9s.jpg","copas_10s.jpg","copas_11s.jpg","copas_12s.jpg",
               "espadas_1s.jpg","espadas_2s.jpg","espadas_3s.jpg","espadas_4s.jpg","espadas_5s.jpg","espadas_6s.jpg","espadas_7s.jpg",
               "espadas_8s.jpg","espadas_9s.jpg","espadas_10s.jpg","espadas_11s.jpg","espadas_12s.jpg",
               "oros_1s.jpg","oros_2s.jpg","oros_3s.jpg","oros_4s.jpg","oros_5s.jpg","oros_6s.jpg","oros_7s.jpg","oros_8s.jpg","oros_9s.jpg",
               "oros_10s.jpg","oros_11s.jpg","oros_12s.jpg"};
   
   Icon iconos[] =
{
new ImageIcon(getClass().getResource(nombres[0])),
new ImageIcon(getClass().getResource(nombres[1])),
new ImageIcon(getClass().getResource(nombres[2])),
new ImageIcon(getClass().getResource(nombres[3])),
new ImageIcon(getClass().getResource(nombres[4])),
new ImageIcon(getClass().getResource(nombres[5])),
new ImageIcon(getClass().getResource(nombres[7])),
new ImageIcon(getClass().getResource(nombres[8])),
new ImageIcon(getClass().getResource(nombres[9])),
new ImageIcon(getClass().getResource(nombres[10])),
new ImageIcon(getClass().getResource(nombres[11])),
new ImageIcon(getClass().getResource(nombres[12])),
new ImageIcon(getClass().getResource(nombres[13])),
new ImageIcon(getClass().getResource(nombres[14])),
new ImageIcon(getClass().getResource(nombres[15])),
new ImageIcon(getClass().getResource(nombres[16])),
new ImageIcon(getClass().getResource(nombres[17])),
new ImageIcon(getClass().getResource(nombres[18])),
new ImageIcon(getClass().getResource(nombres[19])),
new ImageIcon(getClass().getResource(nombres[20])),
new ImageIcon(getClass().getResource(nombres[21])),
new ImageIcon(getClass().getResource(nombres[22])),
new ImageIcon(getClass().getResource(nombres[23])),
new ImageIcon(getClass().getResource(nombres[24])),
new ImageIcon(getClass().getResource(nombres[25])),
new ImageIcon(getClass().getResource(nombres[26])),
new ImageIcon(getClass().getResource(nombres[27])),
new ImageIcon(getClass().getResource(nombres[28])),
new ImageIcon(getClass().getResource(nombres[29])),
new ImageIcon(getClass().getResource(nombres[30])),
new ImageIcon(getClass().getResource(nombres[31])),
new ImageIcon(getClass().getResource(nombres[32])),
new ImageIcon(getClass().getResource(nombres[33])),
new ImageIcon(getClass().getResource(nombres[34])),
new ImageIcon(getClass().getResource(nombres[35])),
new ImageIcon(getClass().getResource(nombres[36])),
new ImageIcon(getClass().getResource(nombres[37])),
new ImageIcon(getClass().getResource(nombres[38])),
new ImageIcon(getClass().getResource(nombres[39])),
new ImageIcon(getClass().getResource(nombres[40])),
new ImageIcon(getClass().getResource(nombres[41])),
new ImageIcon(getClass().getResource(nombres[42])),
new ImageIcon(getClass().getResource(nombres[43])),
new ImageIcon(getClass().getResource(nombres[44])),
new ImageIcon(getClass().getResource(nombres[45])),
new ImageIcon(getClass().getResource(nombres[46])),
new ImageIcon(getClass().getResource(nombres[47])),
};
   JLabel a[] = {
    new JLabel(iconos[0]),
    new JLabel(iconos[1]),
    new JLabel(iconos[2]),
    new JLabel(iconos[3]),
    new JLabel(iconos[4]),
    new JLabel(iconos[5]),
    new JLabel(iconos[6]),
    new JLabel(iconos[7]),
    new JLabel(iconos[8]),
    new JLabel(iconos[9]),
    new JLabel(iconos[10]),
    new JLabel(iconos[11]),
    new JLabel(iconos[12]),
    new JLabel(iconos[13]),
    new JLabel(iconos[14]),
    new JLabel(iconos[15]),
    new JLabel(iconos[16]),
    new JLabel(iconos[17]),
    new JLabel(iconos[18]),
    new JLabel(iconos[19]),
    new JLabel(iconos[20]),
    new JLabel(iconos[21]),
    new JLabel(iconos[22]),
    new JLabel(iconos[23]),
    new JLabel(iconos[24]),
    new JLabel(iconos[25]),
    new JLabel(iconos[26]),
    new JLabel(iconos[27]),
    new JLabel(iconos[28]),
    new JLabel(iconos[29]),
    new JLabel(iconos[30]),
    new JLabel(iconos[31]),
    new JLabel(iconos[32]),
    new JLabel(iconos[33]),
    new JLabel(iconos[34]),
    new JLabel(iconos[35]),
    new JLabel(iconos[36]),
    new JLabel(iconos[37]),
    new JLabel(iconos[38]),
    new JLabel(iconos[39]),
    new JLabel(iconos[40]),
    new JLabel(iconos[41]),
    new JLabel(iconos[42]),
    new JLabel(iconos[43]),
    new JLabel(iconos[44]),
    new JLabel(iconos[45]),
    new JLabel(iconos[46]),
   };
   Random random = new Random();
   int m,n[];
   n= new int[100];
   int f;
 
   for(int i=0 ; i <47; i++)
   {
    for(int h = 0;;h++)
    {
    f=h;
    m = random.nextInt(46);
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
    f +=1;
    if(m==n[f])
    {
    continue;
    }
         break;
   
    }
    n[i]= m;
   
   }
 
   JPanel z = new JPanel();
   z.setLayout(new FlowLayout());
   z.setBackground(Color.WHITE);
    z.add(a[n[0]]);
    z.add(a[n[1]]);
    z.add(a[n[2]]);
    z.add(a[n[3]]);
    z.add(a[n[4]]);
    z.add(a[n[5]]);
   
   
       JPanel y = new JPanel();
    y.setLayout(new FlowLayout());
    y.setBackground(Color.WHITE);
    y.add(a[n[6]]);
    y.add(a[n[7]]);
    y.add(a[n[8]]);
    y.add(a[n[9]]);
    y.add(a[n[10]]);
    y.add(a[n[11]]);
 

       JPanel x = new JPanel();
    x.setLayout(new GridLayout(3,2));
    x.setBackground(Color.WHITE);
    x.add(a[n[12]]);
    x.add(a[n[13]]);
    x.add(a[n[14]]);
    x.add(a[n[15]]);
    x.add(a[n[16]]);
    x.add(a[n[17]]);
     
   
       JPanel w = new JPanel();
    w.setLayout(new GridLayout(3,2));
    w.setBackground(Color.WHITE);
    w.add(a[n[18]]);
    w.add(a[n[19]]);
    w.add(a[n[20]]);
    w.add(a[n[21]]);
    w.add(a[n[22]]);
    w.add(a[n[23]]);
   
   add(z,BorderLayout.NORTH);
 add(y,BorderLayout.SOUTH);
 add(x,BorderLayout.EAST);
 add(w,BorderLayout.WEST);
   
}
}

casidus

#4
haber, una cosa, que al menos por el codigo k me enseñas no hace.
yo lo que necesito es primero mostrarr todas las cartas en el panel.
despues en ese mismo panel, sin cerrarlo, que las cartas se muevan. eso es lo que ahora mismo no se hacer.
se crear las labels, por cierto con la mitad de lineas que tu, te paso el codigo para que veas algo mas rapido.
pero no se como ponerlas en el panel, ni como hacer que se muevan.

Código (java) [Seleccionar]
public static JLabel[] creacartes(JLabel [] cartes)
   {
     String  ruta  = "/juego_de_cartas/cards/";
     String mazo="c";
     int numero=1;
     int num = 1;
        int fila = 0;
for (int i=0; i<52;i++){
    //// creamos las jlabel
    cartes [i]=new javax.swing.JLabel ();
    /// las ponemos visibles
           cartes[i].setVisible(true);
           // posicion de la carta
           if (num==14)
           {     num = 1;
              fila+=97;
              numero = 0;
           }
           cartes [i].setBounds(numero, fila,73  ,97 );            
           numero+=73;
           ///// imagen de la carta
            if ((i >=13)&&(i<26))
              mazo = "d";
           if ((i >=26)&&(i<39))
              mazo = "h";
           if ((i >=39))
              mazo = "s";
           if (num>13)
              num=1;
           ruta =ruta+num+mazo+".gif";
           cartes[i].setIcon(new ImageIcon(ruta));
           num++;
        }



 return cartes;
 }

Flynker


casidus

pero una cosa, llamame corto, pero sigo sin entender, como se añaden las imagenes.
, pon que mi main es asi:

   public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
// creo arraid de Jlabel
                JLabel[] cartas = new JLabel[52];
// añado posicio, imagen y visible
                cartas = creacartes (cartas);
//creo el tablero
                tablero tablero = new tablero();
// le añado las label, pero no me va no se por que
              tablero =   tablero.cards(cartas, tablero);
////lo muestro, pero sale vacio y con el debuger no sale que la variable tablero tengo label
                tablero.setVisible(true);
             
            }
        });
    }


aqui el codigo de añadir las cartas al tablero
    public tablero cards(JLabel[] cartas,tablero tablet)
    {

        for (int i =0;i<=51;i++ )
            tablet.add(cartas[i]);

return tablet;
    }


que hago mal??????????

gracias por todo

Flynker

 La verdad no entiendo mucho tu código, no se mucho, voy a ponerme a estudiar lo que desconozco de el y después te digo...
pero si ese es todo el código que tienes,lo que te puedo decir es que...

1.- Para poder mostrar algo en una ventana (en este caso imagenes), tienes que tener una clase donde se herede de JFrame   y es algo en tu codigo que no encuentro.

2.-Si no es que estoy mal interpretando el código estas tratando de agregar la imagen de las cartas con un for, eso yo ya lo había intentado en el mio y no se por que, pero no funciona, se tienen que agregar individualmente cada JLabel al panel para que se puedan ver.

3.-Cuando logres hacer que se muestren las imágenes en la ventada tienes que tener el setLayout(); para que ahí puedas definir que marco quieres en que se ordenen las imágenes:   FlowLayout();  GridLayout();  o BorderLayout(); por que si no todas las imágenes se va a  encimar en el centro y por ende solo se va a poder ver al ultima imagen que se agregue.

Y si lograste poder ejecutar mi código? por si se pueden ver, lo único que no le agregue es que se movieran. Así se ve
http://www.fotolog.com/flynker

Bueno voy a internar ahora hacer que se muevan también.

Saludos

casidus

ok ahora ya consigo que se muestre todo, y tengo ya puesto para que se muevan. ahora solo necesito saber una cosa. como se hace para que se haga una operacion cada x segundos?????

lo digo por que es lo que me falta para que se vea el movimiento, por que si no, va tan rapido que no se ve

gracias por todo

marcelogalarza

Disculpen se que es un tema medio viejo pero estoy iniciandome como programador nose si pudueron terminar el juego me serviria de mucho y se los agradeceria un monton!!!