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
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
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
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
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);
}
}
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);
}
}
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.
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;
}
http://foro.elhacker.net/java/imagenes_java-t306059.0.html entonces esto te va a servir
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
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
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
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!!!
Hola marcelogalarza!
Pues veras, con respecto al juego no se termino.
Senti que le estaba haciendo el juego a el y en vez de ayudarle lo cual es diferente cada uno... Creo si hubiera estudiado un poco mas los temas de java sabria como hacerlo.
Y bueno me da gusto que tengas el interes por la programacion
En lo personal te puedo decir poquitas cosas espero que te sirva
En distitos lugares puedes encontrar que los mejores lenguajes de programacion para iniciarse son el PASCAL (este lo enseñan en las escuelas como primer lenguaje) o el PHYTON ... En lo personal no conozco ninguno de los dos puesto que yo no eh tenido maestro, inicie leyendo un libro de C espeficiamente el se llama "Aprende C en 21 Dias" este lenguaje es muy bueno y flexible pero tengo entendido que para los principiantes es algo abstracto, para en lo personal no tube muchos problemas. Aparte note despues que saber C es muy util para los demas lenguajes que son igualmente de importantes puestos de son derivados o parecidos.. JAVA,C++, PHP,javascript etc..
En esta pagina puedes encontrar varios manuales de utilidad y asi como apoyo en tus dudas, quiero aclarar se ayuda en algun programa mas no se hace, puesto que es para tu propio aprendizaje,asi como primero investiga en tu buscador preferido antes de preguntar aqui. En http://www.elhacker.net/Textos1.html hay varios documentos utiles para ir viendo poco a poco
Tienes que ser muy paciente, cuanto quieras hacer un programa seguramente no te saldra bien a la primera asi que tienes que corregir y volver a intentar.
Lee mucho, practica, practica y practica :D
Gracias entiendo la idea espero encontrar los manuales corectos ;D
saludos!!!
oye algun otro lugar donde pueda bajar esas imagenes, si puedes subirlas a otro blog no se, el internet dice que el fbi lo confiscó y ya no está la página disponible espero me responda, mi correo es zorronegro1939@hotmail.com, por si le interesa mandarme esas imagenes si usted las tiene porque si me urgen, de hecho el mensaje es para flynker, gracias