24.8 Juego de Tres en raya (Gato) tipo cliente/servidor, utilizando un servidor con subprocesamiento...
1031
168
}
// fin de la clase interna
169
);
// fin de la llamada a SwingUtilities.invokeLater
170
}
// fin del método mostrarMensaje
171
172
// método utilitario para establecer una marca en el tablero, en el subproceso
despachador de eventos
173
private void
establecerMarca(
final
Cuadro cuadroAMarcar,
final
String marca )
174
{
175
SwingUtilities.invokeLater(
176
new
Runnable()
177
{
178
public void
run()
179
{
180
cuadroAMarcar.establecerMarca( marca );
// establece la marca en el
cuadro
181
}
// fin del método run
182
}
// fin de la clase interna anónima
183
);
// fin de la llamada a SwingUtilities.invokeLater
184
}
// fin del método establecerMarca
185
186
// envía un mensaje al servidor, indicando el cuadro en el que se hizo clic
187
public void
enviarCuadroClic(
int
ubicacion )
188
{
189
// si es mi turno
190
if
( miTurno )
191
{
192
salida.format(
"%d\n"
, ubicacion );
// envía la ubicación al servidor
193
salida.flush();
194
miTurno =
false
;
// ya no es mi turno
195
}
// fin de if
196
}
// fin del método enviarCuadroClic
197
198
// establece el cuadro actual
199
public void
establecerCuadroActual( Cuadro cuadro )
200
{
201
cuadroActual = cuadro;
// asigna el argumento al cuadro actual
202
}
// fin del método establecerCuadroActual
203
204
// clase interna privada para los cuadros en el tablero
205
private class
Cuadro
extends
JPanel
206
{
207
private
String marca;
// marca a dibujar en este cuadro
208
private int
ubicacion;
// ubicacion del cuadro
209
210
public
Cuadro( String marcaCuadro,
int
ubicacionCuadro )
211
{
212
marca = marcaCuadro;
// establece la marca para este cuadro
213
ubicacion = ubicacionCuadro;
// establece la ubicación de este cuadro
214
215
addMouseListener(
216
new
MouseAdapter()
217
{
218
public void
mouseReleased( MouseEvent e )
219
{
220
establecerCuadroActual( Cuadro.
this
);
// establece el cuadro actual
221
222
// envía la ubicación de este cuadro
223
enviarCuadroClic( obtenerUbicacionCuadro() );
224
}
// fin del método mouseReleased
Figura 24.15
| Lado cliente del programa Tres en raya cliente/servidor. (Parte 4 de 5).
24_MAQ_CAP_24_Deiltel.indd1031
4/19/081:35:04AM