Java - No puedo terminar mi juego :"(

 
Vista:
sin imagen de perfil
Val: 6
Ha disminuido 1 puesto en Java (en relación al último mes)
Gráfica de Java

No puedo terminar mi juego :"(

Publicado por Yael (3 intervenciones) el 13/11/2019 17:56:54
Busco ayuda para mi juego, me dejaron hacer un serpientes y escaleras en el que para que la persona pueda avanzar a la casilla correspondiente debe responder primero una pregunta si contesta la pregunta correctamente avanzara y si la respuesta es incorrecta se quedara en su casilla actual, ya tengo toda la estructura de lo que es el juego solo me falta agregar esto de las preguntas aparte pues las preguntas deben ser aleatorias para que cada partida no sea igual a la anterior para esto estoy utilizando un Jframe en java netbeans, agradecería mucho si alguien pudiese ayudarme.

AQUIE ESTA EL CODIGO POR SI ALGUIEN PUEDE CHECARLO Y DECIRME QUE PUEDO HACER.

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
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
import java.util.Random;
import java.util.Scanner;
import javax.swing.JOptionPane;
 
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
 
/**
 *
 * @author AMD
 */
 
 
public class SS extends javax.swing.JFrame {
 
    /**
     * Creates new form SS
     */
    public SS() {
        initComponents();
    }
 
    /**
     * This method is called from within the constructor 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() {
 
        jScrollPane1 = new javax.swing.JScrollPane();
        tablero = new javax.swing.JTextArea();
        jButton1 = new javax.swing.JButton();
 
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
 
        tablero.setColumns(20);
        tablero.setRows(5);
        tablero.setText("   16.__ 17.__ 18.__ 19.__ 20.__\n   11.__ 12.__ 13.__ 14.__ 15.__\n    6.__  7.__  8.__  9.__ 10.__\n    1.XO  2.__  3.__  4.__  5.__");
        jScrollPane1.setViewportView(tablero);
 
        jButton1.setText("Tirar Dado");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
 
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(jButton1)
                .addGap(63, 63, 63))
            .addGroup(layout.createSequentialGroup()
                .addGap(127, 127, 127)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 310, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(191, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 206, Short.MAX_VALUE)
                .addComponent(jButton1)
                .addGap(35, 35, 35))
        );
 
        pack();
    }// </editor-fold>
    private final String[] J1= new String[20];
    private final String[] J2= new String[20];
 
    private int posj1 = 0;
    private int posj2 = 0;
    private int turno = 0;
 
 
    char resp;
 
    private final Random ran = new Random();
 
 
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
 
       if(turno==0){
           JOptionPane.showMessageDialog(null, "Es el turno del jugador 1");
           int espacios=ran.nextInt(6)+1;
           posj1+=espacios;
 
 
           int postablero= posj1+1;
           JOptionPane.showMessageDialog(null, "Haz sacado un "+espacios+" te mueves a la posicion "+postablero);
 
           for(int i=0; i<J1.length; i++){
               switch (posj1) {
 
                   case 2:
                       JOptionPane.showMessageDialog(null, "Pisas una escalera, subes a la posicion 8");
                       posj1=7;
                       break;
                   case 6:
                       JOptionPane.showMessageDialog(null, "Pisas una escalera, subes a la posicion 14");
                       posj1=13;
                       break;
                   case 16:
                       JOptionPane.showMessageDialog(null, "Pisas una serpiente, bajas a la posicion 11");
                       posj1=10;
                       break;
                   case 18:
                       JOptionPane.showMessageDialog(null, "Pisas una serpiente, bajas a la posicion 4");
                       posj1=3;
                       break;
 
                   default:
                       break;
               }
 
 
 
 
 
               if(i==posj1){
                   J1[i]="X";
               }else{
                   J1[i]="_";
               }
 
               //////////////////////////////////////////////////////////////////////////////////////////
               switch (posj2) {
 
                   case 2:
                       JOptionPane.showMessageDialog(null, "Pisas una escalera, subes a la posicion 8");
                       posj2=7;
                       break;
                   case 6:
                       JOptionPane.showMessageDialog(null, "Pisas una escalera, subes a la posicion 14");
                       posj2=13;
                       break;
                   case 16:
                       JOptionPane.showMessageDialog(null, "Pisas una serpiente, bajas a la posicion 11");
                       posj2=10;
                       break;
                   case 18:
                       JOptionPane.showMessageDialog(null, "Pisas una serpiente, bajas a la posicion 4");
                       posj2=3;
                       break;
 
                   default:
                       break;
               }
 
               if(i==posj2){
                   J2[i]="O";
               }else{
                   J2[i]="_";
               }
           }
 
           tablero.setText("16." + J1[15]+J2[15]+ "17." + J1[16]+J2[16]+ "18." + J1[17]+J2[17]+ "19." + J1[18]+J2[18]+ "20." + J1[19]+J2[19]+ "\n" +
                           "11." + J1[10]+J2[10]+ "12." + J1[11]+J2[11]+ "13." + J1[12]+J2[12]+ "14." + J1[13]+J2[13]+ "15." + J1[14]+J2[14]+ "\n" +
                           " 6." + J1[5]+J2[5]+ "7." + J1[6]+J2[6]+ "8." + J1[7]+J2[7]+ "9." + J1[8]+J2[8]+ "10." + J1[9]+J2[9]+ "\n" +
                           " 1." + J1[0]+J2[0]+ "2." + J1[1]+J2[1]+ "3." + J1[2]+J2[2]+ "4." + J1[3]+J2[3]+ "5." + J1[4]+J2[4]);
           turno=1;
           if(posj1>=19){
               JOptionPane.showMessageDialog(null, "El jugador 1 ha ganado");
           }
 
       }else if(turno==1)///Codigo jugador 2
       {
           JOptionPane.showMessageDialog(null, "Es el turno del jugador 2");
           int espacios=ran.nextInt(6)+1;
           posj2+=espacios;
 
           int postablero= posj2+1;
           JOptionPane.showMessageDialog(null, "Haz sacado un "+espacios+" te mueves a la posicion "+postablero);
 
           for(int i=0; i<J2.length; i++){
               switch (posj2) {
 
                   case 2:
                       JOptionPane.showMessageDialog(null, "Pisas una escalera, subes a la posicion 8");
                       posj2=7;
                       break;
                   case 6:
                       JOptionPane.showMessageDialog(null, "Pisas una escalera, subes a la posicion 14");
                       posj2=13;
                       break;
                   case 16:
                       JOptionPane.showMessageDialog(null, "Pisas una serpiente, bajas a la posicion 11");
                       posj2=10;
                       break;
                   case 18:
                       JOptionPane.showMessageDialog(null, "Pisas una serpiente, bajas a la posicion 4");
                       posj2=3;
                       break;
 
                   default:
                       break;
               }
 
 
               if(i==posj2){
                   J2[i]="O";
               }else{
                   J2[i]="_";
               }
 
               //////////////////////////////////////////////////////////////////////////////////////////
               switch (posj1) {
 
                   case 2:
                       JOptionPane.showMessageDialog(null, "Pisas una escalera, subes a la posicion 8");
                       posj1=7;
                       break;
                   case 6:
                       JOptionPane.showMessageDialog(null, "Pisas una escalera, subes a la posicion 14");
                       posj1=13;
                       break;
                   case 16:
                       JOptionPane.showMessageDialog(null, "Pisas una serpiente, bajas a la posicion 11");
                       posj1=10;
                       break;
                   case 18:
                       JOptionPane.showMessageDialog(null, "Pisas una serpiente, bajas a la posicion 4");
                       posj1=3;
                       break;
 
                   default:
                       break;
               }
               if(i==posj1){
                   J1[i]="X";
               }else{
                   J1[i]="_";
               }
           }
 
           tablero.setText("16." + J1[15]+J2[15]+ "17." + J1[16]+J2[16]+ "18." + J1[17]+J2[17]+ "19." + J1[18]+J2[18]+ "20." + J1[19]+J2[19]+ "\n" +
                           "11." + J1[10]+J2[10]+ "12." + J1[11]+J2[11]+ "13." + J1[12]+J2[12]+ "14." + J1[13]+J2[13]+ "15." + J1[14]+J2[14]+ "\n" +
                           " 6." + J1[5]+J2[5]+ "7." + J1[6]+J2[6]+ "8." + J1[7]+J2[7]+ "9." + J1[8]+J2[8]+ "10." + J1[9]+J2[9]+ "\n" +
                           " 1." + J1[0]+J2[0]+ "2." + J1[1]+J2[1]+ "3." + J1[2]+J2[2]+ "4." + J1[3]+J2[3]+ "5." + J1[4]+J2[4]);
           turno=0;
           if(posj2>=19){
               JOptionPane.showMessageDialog(null, "El jugador 2 ha ganado");
           }
 
       }
 
 
 
    }
 
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* 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(SS.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(SS.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(SS.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(SS.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>
 
        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new SS().setVisible(true);
            }
        });
    }
 
    // Variables declaration - do not modify
    private javax.swing.JButton jButton1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextArea tablero;
    // End of variables declaration
}
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
Imágen de perfil de Kabuto
Val: 1.784
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

No puedo terminar mi juego :"(

Publicado por Kabuto (445 intervenciones) el 13/11/2019 21:39:01
Hola.
Lo ideal es usar una segunda clase que solo se encargue de preguntar y comprobar si la respuesta es correcta.
Esta clase tendría como atributo una matriz de P x 2, donde P es la cantidad de preguntas que quieras poner.
Así en las posición [P][0] de la matriz tendrías el texto de las preguntas. Este texto mostraría la pregunta y las posibles respuestas.

En la posición [P][1] tendrías la respuesta correcta.

Para simplificarlo puedes mostrar por ejemplo tres respuestas a elegir, y que el usuario responda con A, B o C. o con 1, 2, 3

Esta clase tendría un método que mostraría el texto de la pregunta con las posibles respuestas y recoge la respuesta del usuario.
Si la respuesta es correcta, retorna true.

Si la respuesta es incorrecta o si el usuario ha pulsado el botón cancelar, entonces retorna false.

Así, en cada turno de juego invocas este método y si devuelve true, el usuario puede jugar, y si responde false, el usuario pierde el turno.

Mira, te muestro una clase que he hecho con solo 5 preguntas. Tu luego puedes ampliarlas a tu gusto.

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
public class Quiz {
 
	private String[][] preguntas;
 
	public Quiz() {
		preguntas = new String[5][2];
		//Mensajes para preguntas
		preguntas[0][0] = "¿Cuánto es 10 / 2?\nA -- 4\nB -- 5\nC -- 20";
		preguntas[1][0] = "¿Quién fundó Microsoft?\nA -- Bill Gates y Paul Allen\n"
				+ "B -- Steve Jobs y Steve Wozniak\nC -- Yu Suzuki y Shigeru Miyamoto";
		preguntas[2][0] = "¿Cuál es la distancia media entre la Tierra y la Luna?\n"
				+ "A -- 300.000 km\nB -- 70.000 km\nC -- 384.400 km";
		preguntas[3][0] = "¿Cuánto pesa un litro de agua?\nA -- 2 kilos\nB -- 1 kilo\nC -- 0.975 kilos";
		preguntas[4][0] = "¿Cuál es la capital de Suecia?\nA -- Estocolmo\nB -- Rivendel\nC -- Uppsala";
		//Respuestas correctas
		preguntas[0][1] = "B";
		preguntas[1][1] = "A";
		preguntas[2][1] = "C";
		preguntas[3][1] = "B";
		preguntas[4][1] = "A";
 
	}
 
	public boolean preguntar() {
		//Elegimos una pregunta al azar
		int i = (int)(Math.random() * preguntas.length);
		//Hacemos la pregunta y recogemos respuesta
		String respuesta = JOptionPane.showInputDialog(null, preguntas[i][0],
				"Acierta la respuesta", JOptionPane.QUESTION_MESSAGE);
		if (respuesta == null) { //Usuario ha cancelado
			JOptionPane.showMessageDialog(null, "Si no respondes, pierdes turno",
					"Respuesta cancelada", JOptionPane.WARNING_MESSAGE);
			return false;
		}
		else if (respuesta.toUpperCase().equals(preguntas[i][1])) {
			//Respuesta ACERTADA
			JOptionPane.showMessageDialog(null, "¡¡Respuesta correcta!!",
					"Respuesta acertada", JOptionPane.INFORMATION_MESSAGE);
			return true;
		}
		else {
			//REspuesta equivocada
			JOptionPane.showMessageDialog(null, "Respuesta incorrecta.\nPierdes turno",
					"Respuesta fallada", JOptionPane.ERROR_MESSAGE);
			return false;
		}
	}
 
}

Una vez has creado esta clase, en tu clase principal declaras este clase como atributo de clase y la inicializas en el constructor:

1
2
3
4
5
6
7
8
9
10
11
public class SS extends javax.swing.JFrame {
 
    /**
     * Creates new form SS
     */
	Quiz quiz; //Clase para las preguntas
 
    public SS() {
        initComponents();
        quiz = new Quiz(); //Inicializamos
    }

Y luego, en la clase ActionListener, para ambos jugadores, invocas el método y solo permites que juegue si el método retorna true.

Marco en negrita los cambios. Fíjate donde se abren y cierran los dos IF que preguntan al usuario.

Si te es más fácil, en el mensaje incluyo un zip con los dos archivos Java para descargarlos. Al final del mensaje verás enlace de descarga

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
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
 
       if(turno==0){
           JOptionPane.showMessageDialog(null, "Es el turno del jugador 1");
           //Solo si acierta la respuesta podrá jugar
           if (quiz.preguntar()) {
	           int espacios=ran.nextInt(6)+1;
	           posj1+=espacios;
 
 
	           int postablero= posj1+1;
	           JOptionPane.showMessageDialog(null, "Haz sacado un "+espacios+" te mueves a la posicion "+postablero);
 
	           for(int i=0; i<J1.length; i++){
	               switch (posj1) {
 
	                   case 2:
	                       JOptionPane.showMessageDialog(null, "Pisas una escalera, subes a la posicion 8");
	                       posj1=7;
	                       break;
	                   case 6:
	                       JOptionPane.showMessageDialog(null, "Pisas una escalera, subes a la posicion 14");
	                       posj1=13;
	                       break;
	                   case 16:
	                       JOptionPane.showMessageDialog(null, "Pisas una serpiente, bajas a la posicion 11");
	                       posj1=10;
	                       break;
	                   case 18:
	                       JOptionPane.showMessageDialog(null, "Pisas una serpiente, bajas a la posicion 4");
	                       posj1=3;
	                       break;
 
	                   default:
	                       break;
	               }
 
	               if(i==posj1){
	                   J1[i]="X";
	               }else{
	                   J1[i]="_";
	               }
 
	               //////////////////////////////////////////////////////////////////////////////////////////
	               switch (posj2) {
 
	                   case 2:
	                       JOptionPane.showMessageDialog(null, "Pisas una escalera, subes a la posicion 8");
	                       posj2=7;
	                       break;
	                   case 6:
	                       JOptionPane.showMessageDialog(null, "Pisas una escalera, subes a la posicion 14");
	                       posj2=13;
	                       break;
	                   case 16:
	                       JOptionPane.showMessageDialog(null, "Pisas una serpiente, bajas a la posicion 11");
	                       posj2=10;
	                       break;
	                   case 18:
	                       JOptionPane.showMessageDialog(null, "Pisas una serpiente, bajas a la posicion 4");
	                       posj2=3;
	                       break;
 
	                   default:
	                       break;
	               }
 
	               if(i==posj2){
	                   J2[i]="O";
	               }else{
	                   J2[i]="_";
	               }
	           }
 
	           tablero.setText("16." + J1[15]+J2[15]+ "17." + J1[16]+J2[16]+ "18." + J1[17]+J2[17]+ "19." + J1[18]+J2[18]+ "20." + J1[19]+J2[19]+ "\n" +
	                           "11." + J1[10]+J2[10]+ "12." + J1[11]+J2[11]+ "13." + J1[12]+J2[12]+ "14." + J1[13]+J2[13]+ "15." + J1[14]+J2[14]+ "\n" +
	                           " 6." + J1[5]+J2[5]+ "7." + J1[6]+J2[6]+ "8." + J1[7]+J2[7]+ "9." + J1[8]+J2[8]+ "10." + J1[9]+J2[9]+ "\n" +
	                           " 1." + J1[0]+J2[0]+ "2." + J1[1]+J2[1]+ "3." + J1[2]+J2[2]+ "4." + J1[3]+J2[3]+ "5." + J1[4]+J2[4]);
 
	           if(posj1>=19){
	               JOptionPane.showMessageDialog(null, "El jugador 1 ha ganado");
	           }
           }//Llave que cierra el if de la pregunta
           turno=1; //Turno cambia haya acertado o no la pregunta
 
       }else if(turno==1)///Codigo jugador 2
       {
           JOptionPane.showMessageDialog(null, "Es el turno del jugador 2");
         //Solo si acierta la respuesta podrá jugar
           if (quiz.preguntar()) {
	           int espacios=ran.nextInt(6)+1;
	           posj2+=espacios;
 
	           int postablero= posj2+1;
	           JOptionPane.showMessageDialog(null, "Haz sacado un "+espacios+" te mueves a la posicion "+postablero);
 
	           for(int i=0; i<J2.length; i++){
	               switch (posj2) {
 
	                   case 2:
	                       JOptionPane.showMessageDialog(null, "Pisas una escalera, subes a la posicion 8");
	                       posj2=7;
	                       break;
	                   case 6:
	                       JOptionPane.showMessageDialog(null, "Pisas una escalera, subes a la posicion 14");
	                       posj2=13;
	                       break;
	                   case 16:
	                       JOptionPane.showMessageDialog(null, "Pisas una serpiente, bajas a la posicion 11");
	                       posj2=10;
	                       break;
	                   case 18:
	                       JOptionPane.showMessageDialog(null, "Pisas una serpiente, bajas a la posicion 4");
	                       posj2=3;
	                       break;
 
	                   default:
	                       break;
	               }
 
 
	               if(i==posj2){
	                   J2[i]="O";
	               }else{
	                   J2[i]="_";
	               }
 
	               //////////////////////////////////////////////////////////////////////////////////////////
	               switch (posj1) {
 
	                   case 2:
	                       JOptionPane.showMessageDialog(null, "Pisas una escalera, subes a la posicion 8");
	                       posj1=7;
	                       break;
	                   case 6:
	                       JOptionPane.showMessageDialog(null, "Pisas una escalera, subes a la posicion 14");
	                       posj1=13;
	                       break;
	                   case 16:
	                       JOptionPane.showMessageDialog(null, "Pisas una serpiente, bajas a la posicion 11");
	                       posj1=10;
	                       break;
	                   case 18:
	                       JOptionPane.showMessageDialog(null, "Pisas una serpiente, bajas a la posicion 4");
	                       posj1=3;
	                       break;
 
	                   default:
	                       break;
	               }
	               if(i==posj1){
	                   J1[i]="X";
	               }else{
	                   J1[i]="_";
	               }
	           }
 
	           tablero.setText("16." + J1[15]+J2[15]+ "17." + J1[16]+J2[16]+ "18." + J1[17]+J2[17]+ "19." + J1[18]+J2[18]+ "20." + J1[19]+J2[19]+ "\n" +
	                           "11." + J1[10]+J2[10]+ "12." + J1[11]+J2[11]+ "13." + J1[12]+J2[12]+ "14." + J1[13]+J2[13]+ "15." + J1[14]+J2[14]+ "\n" +
	                           " 6." + J1[5]+J2[5]+ "7." + J1[6]+J2[6]+ "8." + J1[7]+J2[7]+ "9." + J1[8]+J2[8]+ "10." + J1[9]+J2[9]+ "\n" +
	                           " 1." + J1[0]+J2[0]+ "2." + J1[1]+J2[1]+ "3." + J1[2]+J2[2]+ "4." + J1[3]+J2[3]+ "5." + J1[4]+J2[4]);
 
	           if(posj2>=19){
	               JOptionPane.showMessageDialog(null, "El jugador 2 ha ganado");
	           }
 
	       }//LLave que cierra el IF de la pregunta
           turno=0; //Turno cambia
       }
    }
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
sin imagen de perfil
Val: 6
Ha disminuido 1 puesto en Java (en relación al último mes)
Gráfica de Java

No puedo terminar mi juego :"(

Publicado por Yael (3 intervenciones) el 14/11/2019 17:40:09
Muchas muchas gracias amigo en verdad me fue de mucha ayuda y ya casi termino mi juego en verdad muchas gracias, una ultima pregunta como puedo hacer que se ilumine de algún color las partes donde hay serpientes y escaleras????
En verdad muchas gracias!!!!!!!!
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
Imágen de perfil de Kabuto
Val: 1.784
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

No puedo terminar mi juego :"(

Publicado por Kabuto (445 intervenciones) el 14/11/2019 20:52:51
En el JTextArea no puedes hacer tal cosa, no puede mostrar texto "enriquecido", tan solo texto plano y punto.

Hay una alternativa, aunque es algo laboriosa. Puedes sustituir el JtextArea por un JEditorPane.
Este elemento es similar al anterior, solo que permite cosas más avanzadas, entre ellas, mostrar código HTML.

De este modo, puedes utilizar HTML para "enriquecer" el texto que estás mostrando. Basta con usar etiquetas HTML básicas y atributos de estilo simples (en desuso realmente) para aplicar color al texto, fondo que le rodea, texto en negrita,...

Este código HTML lo escribes directamente en el String que estás mostrando. El problema, el String va a quedar muy embarullado y muy difícil de leer.

Mira, lo primero, cambiar el JTextArea por un JEditorPane.
1
2
3
4
5
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JEditorPane tablero; //Sustituye al JTextArea
// End of variables declaration

Ahora, en el método initComponentes, lo instanciamos y le hacemos saber que va a tener que mostrar texto HTML.
Y en la instrucción setText() ya le pasamos un String con HTML. Dejo comentado el texto anterior y a continuación puedes ver el nuevo String.

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
private void initComponents() {
 
    jScrollPane1 = new javax.swing.JScrollPane();
    tablero = new javax.swing.JEditorPane(); //Instanciamos el tablero Editor
    tablero.setContentType("text/html;charset=UTF-8"); //Indicamos que mostrará HTML
    tablero.setEditable(false); //Evitamos que el usuario pueda escribir en el editor
    jButton1 = new javax.swing.JButton();
 
    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
 
    //tablero.setText("   16.__ 17.__ 18.__ 19.__ 20.__\n   11.__ 12.__ 13.__ 14.__ 15.__\n    6.__  7.__  8.__  9.__ 10.__\n    1.XO  2.__  3.__  4.__  5.__");
    tablero.setText("<html>&nbsp;&nbsp;&nbsp;16.__&nbsp;<span text=\"white\" bgcolor=\"red\"><strong>17.__</strong></span>&nbsp;18.__&nbsp;<span text=\"white\" bgcolor=\"red\"><strong>19.__</strong></span>&nbsp;20.__<br>&nbsp;&nbsp;&nbsp;11.__&nbsp;12.__&nbsp;13.__&nbsp;14.__&nbsp;15.__<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;6.__&nbsp;&nbsp;&nbsp;<span text=\"white\" bgcolor=\"green\"><strong>7.__</strong></span>&nbsp;&nbsp;&nbsp;8.__&nbsp;&nbsp;&nbsp;9.__&nbsp;&nbsp;10.__<br>&nbsp;&nbsp;&nbsp;&nbsp;1.XO&nbsp;&nbsp;&nbsp;2.__&nbsp;&nbsp;&nbsp;<span text=\"white\" bgcolor=\"green\"><strong>3.__</strong></span>&nbsp;&nbsp;&nbsp;4.__&nbsp;&nbsp;&nbsp;5.__</html>");
    jScrollPane1.setViewportView(tablero);
 
    jButton1.setText("Tirar Dado");
    jButton1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButton1ActionPerformed(evt);
        }
    });
 
    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(jButton1)
            .addGap(63, 63, 63))
        .addGroup(layout.createSequentialGroup()
            .addGap(127, 127, 127)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 310, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addContainerGap(191, Short.MAX_VALUE))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 206, Short.MAX_VALUE)
            .addComponent(jButton1)
            .addGap(35, 35, 35))
    );
 
    pack();
}

Ese código HTML lo que hace es resaltar en verde las ESCALERAS (fondo verde, texto blanco, fuente en negrita) y en rojo las SERPIENTES.

Como puedes ver, es lioso. Incluso conociendo el lenguaje HTML, uno se vuelve tarumba intentando leerlo..

Pues la cosa no acaba ahí, je je, hay que aplicar el mismo código dos veces más, en las líneas donde reescribimos el texto cada vez que tiramos el dado.
Este es aún más divertido de leer...

1
2
3
4
tablero.setText("<html>&nbsp;&nbsp;&nbsp;16." + J1[15]+J2[15]+ "&nbsp;<span text=\"white\" bgcolor=\"red\"><strong>17." + J1[16]+J2[16]+ "</strong></span>&nbsp;18." + J1[17]+J2[17]+ "&nbsp;<span text=\"white\" bgcolor=\"red\"><strong>19." + J1[18]+J2[18]+ "</strong></span>&nbsp;20." + J1[19]+J2[19]+ "<br>&nbsp;&nbsp;&nbsp;" +
                       "11." + J1[10]+J2[10]+ "&nbsp;12." + J1[11]+J2[11]+ "&nbsp;13." + J1[12]+J2[12]+ "&nbsp;14." + J1[13]+J2[13]+ "&nbsp;15." + J1[14]+J2[14]+ "<br>&nbsp;&nbsp;" +
                       "&nbsp;&nbsp;&nbsp;&nbsp;6." + J1[5]+J2[5]+ "&nbsp;&nbsp;<span text=\"white\" bgcolor=\"green\"><strong>7." + J1[6]+J2[6]+ "</strong></span>&nbsp;&nbsp;&nbsp;8." + J1[7]+J2[7]+ "&nbsp;&nbsp;&nbsp;9." + J1[8]+J2[8]+ "&nbsp;&nbsp;10." + J1[9]+J2[9]+ "<br>&nbsp;&nbsp;" +
                       "&nbsp;&nbsp;&nbsp;&nbsp;1." + J1[0]+J2[0]+ "&nbsp;&nbsp;2." + J1[1]+J2[1]+ "&nbsp;&nbsp;&nbsp;<span text=\"white\" bgcolor=\"green\"><strong>3." + J1[2]+J2[2]+ "</strong></span>&nbsp;&nbsp;&nbsp;4." + J1[3]+J2[3]+ "&nbsp;&nbsp;&nbsp;5." + J1[4]+J2[4] + "</html>");


A ver, quizás planificando de manera inteligente un par de métodos que reciba partes del String que construimos para que le aplique las etiquetas HTML para cambiar el color y los retorne, podría quedar más elegante.
Pero en cualquier caso, trabajando con texto plano poco más se puede hacer.

De nuevo te adjunto un archivo zip con los cambios ya realizados. Cualquier cosa que no entiendas solo tienes que preguntar.
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 6
Ha disminuido 1 puesto en Java (en relación al último mes)
Gráfica de Java

No puedo terminar mi juego :"(

Publicado por Yael (3 intervenciones) el 14/11/2019 22:57:14
Muy buen muchas gracias intentaré hacerlo
Una última consulta amigo perdón por ser tan insistente pero como podría crear un programa que me genere contraaeñas pidiendo al usuario el número de dígitos que quiere en ella, y después pedir si quiere letras mayúsculas, minúsculas y números en ella?
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
Imágen de perfil de Kabuto
Val: 1.784
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

No puedo terminar mi juego :"(

Publicado por Kabuto (445 intervenciones) el 15/11/2019 20:43:23
Si te refieres a generar contraseñas al azar, puedes crear un array, por ejemplo de tipo String, con letras y números.
Luego generas números al azar entre 0 y la longitud del array para seleccionar letras o números de ese array.

Según las opciones que elija el usuario, pues modificas el valor recibido.

Por ejemplo, si te dice que no quieres números, pues cuando obtengas un valor al azar compruebas si es un carácter entre 0 y 9 , o sea, un número, y en caso afirmativo lo rechazas y solicitas otro.
Si te dice que solo quiere letras mayúsculas, pues cuando tengas una letra la imprimes en pantalla usando el método .toUpperCase()

Si solo quiere minúsculas, pues lo mismo pero con .toLowerCase()

Este proceso lo repites hasta que tengas la cantidad de caracteres que haya indicado el usuario.
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