Java - Juego Solitario Java en Applet con Forms(awt)

   
Vista:

Juego Solitario Java en Applet con Forms(awt)

Publicado por Andrés (4 intervenciones) el 18/04/2014 00:00:07
Buenas,
Tengo que hacer un solitario en java utilizando Forms (awt). Hasta el momento he creado la clase carta, he logrado hacer los arrays para cada mazo, añadí las cartas al mazoprincipal y de este repartí las cartas a los demás mazos, a nivel de código. Sin embargo, a la hora de repartirlas a nivel gráfico me está dando problemas, ya que cada carta me sale una debajo de otra.
Adjunto el código de ambas clases y una imagen del frame.

Clase Applet.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
package solitario;
 
import java.util.ArrayList;
import java.util.Collections;
import java.awt.*;
 
/**
 *
 * @author Andres
 */
public class Applet extends javax.swing.JApplet {
//Creo el ArrayList del mazo principal
 
    private ArrayList<Carta> mazoPrincipal;
    private ArrayList<Carta> mazoUno;
    private ArrayList<Carta> mazoDos;
    private ArrayList<Carta> mazoTres;
    private ArrayList<Carta> mazoCuatro;
    private ArrayList<Carta> mazoCinco;
    private ArrayList<Carta> mazoSeis;
    private ArrayList<Carta> mazoSiete;
 
    /**
     * Initializes the applet Applet
     */
    @Override
    public void init() {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Applet.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Applet.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Applet.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Applet.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>
 
        /* Create and display the applet */
        try {
            java.awt.EventQueue.invokeAndWait(new Runnable() {
                public void run() {
                    initComponents();
                    mazoPrincipal = new ArrayList<Carta>();
                    //Agrego Tréboles
                    mazoPrincipal.add(new Carta("Negro", false, "Trebol", 1, "/imagenes/treboles/1.png"));
                    mazoPrincipal.add(new Carta("Negro", false, "Trebol", 2, "/imagenes/treboles/49.png"));
                    mazoPrincipal.add(new Carta("Negro", false, "Trebol", 3, "/imagenes/treboles/45.png"));
                    mazoPrincipal.add(new Carta("Negro", false, "Trebol", 4, "/imagenes/treboles/41.png"));
                    mazoPrincipal.add(new Carta("Negro", false, "Trebol", 5, "/imagenes/treboles/37.png"));
                    mazoPrincipal.add(new Carta("Negro", false, "Trebol", 6, "/imagenes/treboles/33.png"));
                    mazoPrincipal.add(new Carta("Negro", false, "Trebol", 7, "/imagenes/treboles/29.png"));
                    mazoPrincipal.add(new Carta("Negro", false, "Trebol", 8, "/imagenes/treboles/25.png"));
                    mazoPrincipal.add(new Carta("Negro", false, "Trebol", 9, "/imagenes/treboles/21.png"));
                    mazoPrincipal.add(new Carta("Negro", false, "Trebol", 10, "/imagenes/treboles/17.png"));
                    mazoPrincipal.add(new Carta("Negro", false, "Trebol", 11, "/imagenes/treboles/13.png"));
                    mazoPrincipal.add(new Carta("Negro", false, "Trebol", 12, "/imagenes/treboles/9.png"));
                    mazoPrincipal.add(new Carta("Negro", false, "Trebol", 13, "/imagenes/treboles/5.png"));
 
                    //Agrego Picas
                    mazoPrincipal.add(new Carta("Negro", false, "Picas", 1, "/imagenes/picas/2.png"));
                    mazoPrincipal.add(new Carta("Negro", false, "Picas", 2, "/imagenes/picas/50.png"));
                    mazoPrincipal.add(new Carta("Negro", false, "Picas", 3, "/imagenes/picas/46.png"));
                    mazoPrincipal.add(new Carta("Negro", false, "Picas", 4, "/imagenes/picas/42.png"));
                    mazoPrincipal.add(new Carta("Negro", false, "Picas", 5, "/imagenes/picas/38.png"));
                    mazoPrincipal.add(new Carta("Negro", false, "Picas", 6, "/imagenes/picas/34.png"));
                    mazoPrincipal.add(new Carta("Negro", false, "Picas", 7, "/imagenes/picas/30.png"));
                    mazoPrincipal.add(new Carta("Negro", false, "Picas", 8, "/imagenes/picas/26.png"));
                    mazoPrincipal.add(new Carta("Negro", false, "Picas", 9, "/imagenes/picas/22.png"));
                    mazoPrincipal.add(new Carta("Negro", false, "Picas", 10, "/imagenes/picas/18.png"));
                    mazoPrincipal.add(new Carta("Negro", false, "Picas", 11, "/imagenes/picas/14.png"));
                    mazoPrincipal.add(new Carta("Negro", false, "Picas", 12, "/imagenes/picas/10.png"));
                    mazoPrincipal.add(new Carta("Negro", false, "Picas", 13, "/imagenes/picas/6.png"));
 
                    //Agrego Corazones
                    mazoPrincipal.add(new Carta("Rojo", false, "Corazones", 1, "/imagenes/corazones/3.png"));
                    mazoPrincipal.add(new Carta("Rojo", false, "Corazones", 2, "/imagenes/corazones/51.png"));
                    mazoPrincipal.add(new Carta("Rojo", false, "Corazones", 3, "/imagenes/corazones/47.png"));
                    mazoPrincipal.add(new Carta("Rojo", false, "Corazones", 4, "/imagenes/corazones/43.png"));
                    mazoPrincipal.add(new Carta("Rojo", false, "Corazones", 5, "/imagenes/corazones/39.png"));
                    mazoPrincipal.add(new Carta("Rojo", false, "Corazones", 6, "/imagenes/corazones/35.png"));
                    mazoPrincipal.add(new Carta("Rojo", false, "Corazones", 7, "/imagenes/corazones/31.png"));
                    mazoPrincipal.add(new Carta("Rojo", false, "Corazones", 8, "/imagenes/corazones/27.png"));
                    mazoPrincipal.add(new Carta("Rojo", false, "Corazones", 9, "/imagenes/corazones/23.png"));
                    mazoPrincipal.add(new Carta("Rojo", false, "Corazones", 10, "/imagenes/corazones/19.png"));
                    mazoPrincipal.add(new Carta("Rojo", false, "Corazones", 11, "/imagenes/corazones/15.png"));
                    mazoPrincipal.add(new Carta("Rojo", false, "Corazones", 12, "/imagenes/corazones/11.png"));
                    mazoPrincipal.add(new Carta("Rojo", false, "Corazones", 13, "/imagenes/corazones/7.png"));
 
                    //Agrego Diamantes
                    mazoPrincipal.add(new Carta("Rojo", false, "Diamantes", 1, "/imagenes/diamantes/4.png"));
                    mazoPrincipal.add(new Carta("Rojo", false, "Diamantes", 2, "/imagenes/diamantes/52.png"));
                    mazoPrincipal.add(new Carta("Rojo", false, "Diamantes", 3, "/imagenes/diamantes/48.png"));
                    mazoPrincipal.add(new Carta("Rojo", false, "Diamantes", 4, "/imagenes/diamantes/44.png"));
                    mazoPrincipal.add(new Carta("Rojo", false, "Diamantes", 5, "/imagenes/diamantes/40.png"));
                    mazoPrincipal.add(new Carta("Rojo", false, "Diamantes", 6, "/imagenes/diamantes/36.png"));
                    mazoPrincipal.add(new Carta("Rojo", false, "Diamantes", 7, "/imagenes/diamantes/32.png"));
                    mazoPrincipal.add(new Carta("Rojo", false, "Diamantes", 8, "/imagenes/diamantes/28.png"));
                    mazoPrincipal.add(new Carta("Rojo", false, "Diamantes", 9, "/imagenes/diamantes/24.png"));
                    mazoPrincipal.add(new Carta("Rojo", false, "Diamantes", 10, "/imagenes/diamantes/20.png"));
                    mazoPrincipal.add(new Carta("Rojo", false, "Diamantes", 11, "/imagenes/diamantes/16.png"));
                    mazoPrincipal.add(new Carta("Rojo", false, "Diamantes", 12, "/imagenes/diamantes/12.png"));
                    mazoPrincipal.add(new Carta("Rojo", false, "Diamantes", 13, "/imagenes/diamantes/8.png"));
 
                    //Inicializa mazos
                    mazoUno = new ArrayList<Carta>();
                    mazoDos = new ArrayList<Carta>();
                    mazoTres = new ArrayList<Carta>();
                    mazoCuatro = new ArrayList<Carta>();
                    mazoCinco = new ArrayList<Carta>();
                    mazoSeis = new ArrayList<Carta>();
                    mazoSiete = new ArrayList<Carta>();
                    //Desordena mazo
                    Collections.shuffle(mazoPrincipal);
                    repartir();
 
//                    pinta();
 
 
                }
            });
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
 
    /**
     * This method is called from within the init() method to initialize the
     * form. WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {
 
        jPanel1 = new javax.swing.JPanel();
        labelMazo = new javax.swing.JLabel();
        panelMazoDos = new javax.swing.JPanel();
        panelMazoUno = new javax.swing.JPanel();
 
        getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
 
        jPanel1.setBackground(new java.awt.Color(0, 153, 0));
        jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
 
        labelMazo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Imagenes/b1fv.png"))); // NOI18N
        labelMazo.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                labelMazoMouseClicked(evt);
            }
        });
        jPanel1.add(labelMazo, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 20, 71, 96));
 
        panelMazoDos.setBackground(new java.awt.Color(0, 153, 0));
        panelMazoDos.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        jPanel1.add(panelMazoDos, new org.netbeans.lib.awtextra.AbsoluteConstraints(150, 190, 80, 230));
 
        panelMazoUno.setBackground(new java.awt.Color(0, 153, 0));
        panelMazoUno.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        jPanel1.add(panelMazoUno, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 190, 80, 110));
 
        getContentPane().add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 680, 480));
    }// </editor-fold>                        
 
    private void labelMazoMouseClicked(java.awt.event.MouseEvent evt) {
        // TODO add your handling code here:
 
 
    }
 
    // Variables declaration - do not modify                     
    private javax.swing.JPanel jPanel1;
    private javax.swing.JLabel labelMazo;
    private javax.swing.JPanel panelMazoDos;
    private javax.swing.JPanel panelMazoUno;
    // End of variables declaration                   
 
    public void repartir() {
        //Agrega cartas a los demás mazos
        for (int i = 0; i < mazoPrincipal.size(); i++) {
            if (i == 0) {
                mazoUno.add(mazoPrincipal.get(i));
            }
            if (i >= 1 && i < 3) {
                mazoDos.add(mazoPrincipal.get(i));
            }
 
            if (i >= 3 && i < 6) {
                mazoTres.add(mazoPrincipal.get(i));
            }
 
            if (i >= 6 && i < 10) {
                mazoCuatro.add(mazoPrincipal.get(i));
            }
 
            if (i >= 10 && i < 15) {
                mazoCinco.add(mazoPrincipal.get(i));
            }
 
            if (i >= 15 && i < 21) {
                mazoSeis.add(mazoPrincipal.get(i));
            }
 
            if(i >= 21 && i < 28){
                mazoSiete.add(mazoPrincipal.get(i));
            }
        }//Fin For
        //Pinta la carta en el mazo correspondiente. 
        int contador = 0;
        for(Carta c: mazoUno){
            panelMazoUno.add(c, new org.netbeans.lib.awtextra.AbsoluteConstraints(-1, -1, -1, -1));
        }
 
        for(Carta c: mazoDos){
            panelMazoDos.add(c, new org.netbeans.lib.awtextra.AbsoluteConstraints(-1, -1, -1, -1));
            contador++;
        }
 
    }//Fin método repartir
 
 
    }

Clase Carta

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
 
package solitario;
import javax.swing.JLabel;
/**
 *
 * @author $Andrés Avila Wille
 */
public class Carta extends JLabel{
    private String color;
    private boolean con;
    private String escudo;
    private int num;
 
    public Carta(){
    }
 
    public Carta(String color, boolean con, String escudo, int num, String URL) {
        this.color = color;
        this.con = con;
        this.escudo = escudo;
        this.num = num;
        this.setIcon(new javax.swing.ImageIcon(getClass().getResource(URL)));
    }
 
    public String getColor() {
        return color;
    }
 
    public void setColor(String color) {
        this.color = color;
    }
 
    public boolean isCon() {
        return con;
    }
 
    public void setCon(boolean con) {
        this.con = con;
    }
 
    public String getEscudo() {
        return escudo;
    }
 
    public void setEscudo(String escudo) {
        this.escudo = escudo;
    }
 
    public int getNum() {
        return num;
    }
 
    public void setNum(int num) {
        this.num = num;
    }
 
    public void vuelta(boolean con){
        if(con == true){
            this.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagenes/b1fv.png")));
        }
    }
 
 
 
}




Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Juego Solitario Java en Applet con Forms(awt)

Publicado por Carlos Mario Toro Loaiza (26 intervenciones) el 21/04/2014 17:00:34
Es por el uso que le estás dando a los layouts de los contenedores de las cartas como panelMazoDos, ya que el layout que estás utilizando deja los elementos uno debajo de otro

debes utilizar un layout null y luego ubicar cada carta a través de la ubicación de cada elemento

panelMazoDos.setLayout(null);

int i = 0;
for(Carta c: mazoDos){

c.setBounds(0, i, 50, 100);
panelMazoDos.add(c, new org.netbeans.lib.awtextra.AbsoluteConstraints(-1, -1, -1, -1));
i += 15;
contador++;

}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Juego Solitario Java en Applet con Forms(awt)

Publicado por Andrés (4 intervenciones) el 22/04/2014 03:26:44
¡Muchas gracias por el aporte! Si era el layout, aunque se lo cambié a Absolute, por que con null no me sirvió bien. Voy a aplicarlo a los demás.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar