Integrantes del Grupo del proyecto:
Esta entrada a blog fue creada con el proposito de dar a conocer el avance q se va dando con el pasar de los dias en la implementacion y diseño del proyecto de la materia de POO consistente a la adaptacion en sistema del juego muy famoso y clasico Battleship.
INTERFAZ GRAFICA:
Codigo para cambiar el dibujo de logo de la taza de cafe de la ventana principal de una aplicacion java:
setIconImage (new ImageIcon(«images/ship.png»).getImage());
INTERFAZ GRAFICA:
Codigo para poner una imagen como puntero dentro de un panel en una aplicacion java:
Toolkit mouse = Toolkit.getDefaultToolkit();
Image image = mouse.getImage(«images/Bala.png»);
Point hotSpot = new Point(0, 0);
Cursor cursor = mouse.createCustomCursor(image, hotSpot, «cursor juego»);
setCursor(cursor);
En el proyecto nos será muy útil la combinacion de los colores en los paneles para diferenciarlos y ademas que sea mas cómodo para el usuario asi que investigué los metodos para cambiar de color el fondo del panel y del texto ademas de poder escoger el tipo de letra
*Cambiemos el font de caracteres a Times Roman de 12
setFont( new Font( «TimesRoman»,Font.PLAIN,12 ) );
* Fijemos los colores de la ventana para que el fondo sea Blanco y el texto resalte en Negro
setBackground( Color.white );
setForeground( Color.black );
Tambien podemos cambiar la fuente de una caja de texto de la siguiente manera:
TextArea caja_texto = new TextArea();
Font fuente = new Font( «Helvetica»,Font.ITALIC,12 );
caja_texto.setFont( fuente );
Este codigo q voy a mostrar me parecio muy interesante para la presentacion del proyecto. Se trata de insertar el llamado «Splash Screen» que consiste de una ventana de presentacion(en el centro de la pantalla) antes de comenzar a correr la ventana principal de la aplicacion.
Me parecio muy util porque sirve para darle tiempo a que la aplicacion se cargue como se debe y no esperar sin ver algo.
Nota: Para la utilizacion de este metodo tuve que investigar la utilizacion de hilos, aunque creo que en clases posteriores la ingeniera mostrara la debida utilizacion de este.
Codigo:
//Se crea una clase que extienda de JFrame e implemente Runnable(para poder ejecutar el hilo)
public class SplashScreen extends JFrame implements Runnable{
Thread t; //Se declara el hilo
Ventana inicial;
JLabel fondo;
public SplashScreen(){
//Se inicializa el hilo
initComponents();
}
// metodo run() que dice que se va a ejecutar en el hilo y por cuanto tiempo
public void run(){
try {
setSize(600,230);
setLocationRelativeTo(null);//centrar la pantalla
setVisible(true);
t.sleep(4000);//cuanto tiempo dura la ejecucion en milisegundos
dispose();
inicial=new Ventana();
} catch (InterruptedException ex) {
System.out.println(«Ejecucion erronea»);
}
}
private void initComponents() {
fondo =new JLabel();
fondo.setIcon(new ImageIcon(getClass().getResource(«/images/splashscreen.png»)));
add(fondo);
setUndecorated(true);// quitarle los botones a la ventana, dejando solo la imagen de fondo
}
}
*******************************************************************************************
public static void main(String[] args) {
//Esta linea en el Main comenzara la ejecucion del Splash Screen
new Thread(new SplashScreen()).start();
}
Para mas detalles les dejo el link:
http://richieblog.wordpress.com/2008/10/14/la-manera-mas-facil-de-crear-un-splash-en-java/
Para la parte grafica del juego en la ventana principal podriamos usar llos metodos de JFrame:
this.setLocationRelativeTo(null);//Para centrar correctamente el JFrame
this.setResizable(false);// Determina si el usuario puede o no cambiar el tamaño del marco, en este caso no puedepor la palabra false.
this.setTitle(«Ventana Inicial»);//Para cambiar el texto que aparece en la barra de titulo
Cada jugador osea el PC y el usuario tienen un tablero 10×10 en donde podran poner sus barcos, para evitar que el jugador ponga sus barcos en terreno enemigo podemos mostrar un menu que tenga tres botones entre ellos uno que sea para ubicar en el tablero los del usuario y otro para colocarlos aleatoriamente los del PC, al hacer click en uno de ellos el otro boton se deshabilitaria…
en la clase menu podriamos tener algo como :
la accion generada por el boton para el usuario
boton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
botondeljugador1Click(evt);//funcion que ejecuta el evento del click
}
});
private void botondeljugador1Click(java.awt.event.ActionEvent evt) {
this.setVisible(false);
new VentanaInicial(«INGRESE BARCOS EL USUARIO»,»PC»).setVisible(true);//para el pc se deshabilita
}
//Y otra clase que una vez que escogi el boton para el usuario nos sirva para mostrar la parte del tablero del jugador que seleccione…
private void Ingreso1Click(java.awt.event.ActionEvent evt) {
botondeljugador1Click.setEnabled(false);//se deshabilita el boton Ingresar1, para que no pueda ingresar a esa opcion nuevamente
botondeljugador2Click.setEnabled(true);//se habilita el boton Ingresar2
new VentanaJugador(this, 1,this.botondeljugador1.getText()).setVisible(true);//se hace visible el tablero de jugador1
this.setVisible(false);
}
Creo que nos serviria dividir esta parte , porque si no se la sabe manejar nos complicaria a modo que avance el proyecto…..
Mas adelante podriamos poner un linite de tiempo que esperariamos a que se efectue el disparo del usuario, se puede usar este metodo que halle para ayudar en eso:
long milisegundosAhora = System.currentTimeMillis();
pasado el tiempo limite que pusieramos saldria un mensaje indicandolo y cambiando el turno al PC….
JOptionPane.showMessageDialog(«Su turno termino»);
siguienteTurno();//Funcion que cambiaria el turno actual al otro jugador
Esto podriamos usarlo mas adelante si asi lo deseeamos…..
para reproducir musica en java
con formato .wav
import java.io.File;
import javax.sound.sampled.AudioFileFormat;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
public class ReproduceAudio {
public static void main(String[] args) {
try {
// Se obtiene un Clip de sonido
Clip sonido = AudioSystem.getClip();
// Se carga con un fichero wav
sonido.open(AudioSystem.getAudioInputStream(new File(«Sinfonía nº 9 de Beethoven (Scherzo).wav»)));
// Comienza la reproducción
sonido.start();
// Espera mientras se esté reproduciendo.
while (sonido.isRunning())
Thread.sleep(1000);
// Se cierra el clip.
sonido.close();
} catch (Exception e) {
System.out.println(«» + e);
}
}
}
Para colocor una imgen en el JFrame existen varias maneras encontre una informacion muy util, podemos crear un paquete en donde ubicaremos las imagenes, ésto nos ayuda a no utilizar rutas absolutas; Luego debemos crear un JPanel que contendrá la imagen, una caja de texto, un boton etc. Dentro del JPanel debemos re-escribir el método paintComponent en donde utilizando el método g.drawImage se dibuja la imagen. Para hacer referencia a la imagen que se encuentra dentro de un paquete lo hacemos con el método getResource, éste mismo método es utilizado para agregar una imagen al botón . Una vez hecho los trabajos con el JPanel, debemos empezar a trabajar con el JFrame, únicamente lo que corresponde hacer es crear un objeto del tipo JPanel y agregarlo al JFrame dentro del cual se ha definido con Layout el BorderLayout.
aqui le envio otro codigo para el sonido ya lo prove si funciona tan solo tienen que escojer una musica con extension .wav en
final JTextField textField =
new JTextField(«te prefiero.wav»);
package hola;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.sound.sampled.*;
public class AudioPlayer02 extends JFrame{
AudioFormat audioFormat;
AudioInputStream audioInputStream;
SourceDataLine sourceDataLine;
boolean stopPlayback = false;
final JButton stopBtn = new JButton(«Stop»);
final JButton playBtn = new JButton(«Play»);
final JTextField textField =
new JTextField(«te prefiero.wav»);
public static void main(String args[]){
new AudioPlayer02();
}//end main
//——————————————-//
public AudioPlayer02(){//constructor
stopBtn.setEnabled(false);
playBtn.setEnabled(true);
//Instantiate and register action listeners
// on the Play and Stop buttons.
playBtn.addActionListener(
new ActionListener(){
public void actionPerformed(
ActionEvent e){
stopBtn.setEnabled(true);
playBtn.setEnabled(false);
playAudio();//Play the file
}//end actionPerformed
}//end ActionListener
);//end addActionListener()
stopBtn.addActionListener(
new ActionListener(){
public void actionPerformed(
ActionEvent e){
//Terminate playback before EOF
stopPlayback = true;
}//end actionPerformed
}//end ActionListener
);//end addActionListener()
getContentPane().add(playBtn,»West»);
getContentPane().add(stopBtn,»East»);
getContentPane().add(textField,»North»);
setTitle(«Copyright 2003, R.G.Baldwin»);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(250,100);
setVisible(true);
}//end constructor
//——————————————-//
//This method plays back audio data from an
// audio file whose name is specified in the
// text field.
private void playAudio() {
try{
File soundFile =
new File(textField.getText());
audioInputStream = AudioSystem.
getAudioInputStream(soundFile);
audioFormat = audioInputStream.getFormat();
System.out.println(audioFormat);
DataLine.Info dataLineInfo =
new DataLine.Info(
SourceDataLine.class,
audioFormat);
sourceDataLine =
(SourceDataLine)AudioSystem.getLine(
dataLineInfo);
//Create a thread to play back the data and
// start it running. It will run until the
// end of file, or the Stop button is
// clicked, whichever occurs first.
// Because of the data buffers involved,
// there will normally be a delay between
// the click on the Stop button and the
// actual termination of playback.
new PlayThread().start();
}catch (Exception e) {
e.printStackTrace();
System.exit(0);
}//end catch
}//end playAudio
class PlayThread extends Thread{
byte tempBuffer[] = new byte[10000];
public void run(){
try{
sourceDataLine.open(audioFormat);
sourceDataLine.start();
int cnt;
//Keep looping until the input read method
// returns -1 for empty stream or the
// user clicks the Stop button causing
// stopPlayback to switch from false to
// true.
while((cnt = audioInputStream.read(
tempBuffer,0,tempBuffer.length)) != -1
&& stopPlayback == false){
if(cnt > 0){
//Write data to the internal buffer of
// the data line where it will be
// delivered to the speaker.
sourceDataLine.write(
tempBuffer, 0, cnt);
}//end if
}//end while
//Block and wait for internal buffer of the
// data line to empty.
sourceDataLine.drain();
sourceDataLine.close();
//Prepare to playback another file
stopBtn.setEnabled(false);
playBtn.setEnabled(true);
stopPlayback = false;
}catch (Exception e) {
e.printStackTrace();
System.exit(0);
}//end catch
}//end run
}//end inner class PlayThread
//===================================//
}
Con esta parte de código podemos validar si el usuario ingresa o no su nombre, mostrándole un cuadro de diálogo para que lo inserte previamente.
String respuesta= JOptionPane.showInputDialog(«Escriba su nombre»);
if (respuesta==null)
JOptionPane.showMessageDialog(this,»Noescribió”);
else
nombre=respuesta;
Este procedimiento distorsiona la figura(shear), según los ejes dados, con esto podemos dar la impresión que el tablero está inclinado .
void shear(double x, double y)
Aqui encontre un componente que me parece interesante llamado \Dialog\ en awt o \JDialog\ en la version de swing, lo que hace este componente es crear un ventana dentro de un frame sin abrir otra aplicacion. Tambien es muy util porque se puede modificar de tal forma que al cerrar el jframe el jdialog tambien se cierre y no quede como independiente detras de la ventana.
Codigo de una muestra de ejecucion de los que les digo:
import java.awt.*;
public class DialogWindow extends Frame {
private boolean inAnApplet = true;
private SimpleDialog dialog;
private TextArea textArea;
public DialogWindow() {
textArea = new TextArea(5, 40);
textArea.setEditable(false);
add(\Center\, textArea);
Button button = new Button(\Click to bring up dialog\);
Panel panel = new Panel();
panel.add(button);
add(\South\, panel);
}
public boolean handleEvent(Event event) {
if (event.id == Event.WINDOW_DESTROY) {
if (inAnApplet) {
dispose();
} else {
System.exit(0);
}
}
return super.handleEvent(event);
}
public boolean action(Event event, Object arg) {
if (dialog == null) {
dialog = new SimpleDialog(this, \A Simple Dialog\);
}
dialog.show();
return true;
}
public void setText(String text) {
textArea.appendText(text + \
\);
}
public static void main(String args[]) {
DialogWindow window = new DialogWindow();
window.inAnApplet = false;
window.setTitle(\DialogWindow Application\);
window.pack();
window.show();
}
}
class SimpleDialog extends Dialog {
TextField field;
DialogWindow parent;
Button setButton;
SimpleDialog(Frame dw, String title) {
super(dw, title, false);
parent = (DialogWindow)dw;
//Create middle section.
Panel p1 = new Panel();
Label label = new Label(\Enter random text here:\);
p1.add(label);
field = new TextField(40);
p1.add(field);
add(\Center\, p1);
//Create bottom row.
Panel p2 = new Panel();
p2.setLayout(new FlowLayout(FlowLayout.RIGHT));
Button b = new Button(\Cancel\);
setButton = new Button(\Set\);
p2.add(b);
p2.add(setButton);
add(\South\, p2);
//Initialize this dialog to its preferred size.
pack();
}
public boolean action(Event event, Object arg) {
if ( (event.target == setButton)
| (event.target == field)) {
parent.setText(field.getText());
}
field.selectAll();
hide();
return true;
}
}
aqui tengo un ejemplo similar al proyecto pero estos son aviones
ynos puede ser paar encontar lapossicion de los barcos espero que le sirvan
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import javax.sound.sampled.*;
public class Nave extends JDialog implements MouseListener, MouseMotionListener, ActionListener{
ImageIcon nave = new ImageIcon(«na.png»);
ImageIcon nave2 = new ImageIcon(«nave2.gif»);
ImageIcon nave3 = new ImageIcon(«tab.gif»);
ImageIcon ex = new ImageIcon(«exp1.gif»);
ImageIcon str = new ImageIcon(«st.gif»);
JLabel navee = new JLabel(nave);
JLabel img = new JLabel(nave3);
JLabel naveee = new JLabel(nave2);
JLabel naveeee = new JLabel(nave2);
JLabel naveeeee = new JLabel(nave2);
JLabel e1 = new JLabel(str);
JLabel e2 = new JLabel(str);
JLabel e3 = new JLabel(str);
JLabel e4 = new JLabel(str);
JLabel e5 = new JLabel(str);
JLabel e6 = new JLabel(str);
JLabel e7 = new JLabel(str);
JLabel e8 = new JLabel(str);
JLabel e9 = new JLabel(str);
JLabel e0 = new JLabel(str);
JLabel exp = new JLabel(ex);
JLabel exp1 = new JLabel(ex);
JLabel exp2 = new JLabel(ex);
JLabel naves = new JLabel(«Naves derribadas: «);
JLabel pun = new JLabel(«Puntuacion: «);
JButton n1 = new JButton(«COMENZAR»);
JButton n2 = new JButton(«PAUSAR»);
JButton n3 = new JButton(«REANUDAR»);
JButton vn = new JButton(«NORMAL»);
JButton v1 = new JButton(«RAPIDO»);
JButton v2 = new JButton(«VELOZ»);
JButton re = new JButton(«SALIR»);
Relog time = new Relog();
Ene obj1 = new Ene();
Estrellas obj2 = new Estrellas();
int z=0, nd=0, punt=0;
int t1=300,t2=500,t3=1000,posini=640;
int pox =posini;
int poy =posini;
int y1 = 400, y2=350;
Clip disparo;
Clip explocion;
public Nave(Frame parent, boolean modal){
super(parent, modal);
Container c=getContentPane();;
c=getContentPane();
setTitle(«UNIVERSE PLAY»);
setLayout(null);
setSize(800,500);
setLocationRelativeTo(null);
setResizable(false);
setIconImage(Toolkit.getDefaultToolkit().getImage(«strella.png»));
c.setBackground(Color.BLACK);
c.add(navee);
navee.setLocation(309,370);
navee.setSize(80,100);
navee.setVisible(true);
c.add(e1);
e1.setSize(30,30);
e1.setVisible(false);
c.add(e2);
e2.setSize(30,30);
e2.setVisible(false);
c.add(e3);
e3.setSize(30,30);
e3.setVisible(false);
c.add(e4);
e4.setSize(30,30);
e4.setVisible(false);
c.add(e5);
e5.setSize(30,30);
e5.setVisible(false);
c.add(e6);
e6.setSize(30,30);
e6.setVisible(false);
c.add(e7);
e7.setSize(30,30);
e7.setVisible(false);
c.add(e8);
e8.setSize(30,30);
e8.setVisible(false);
c.add(e9);
e9.setSize(30,30);
e9.setVisible(false);
c.add(e0);
e0.setSize(30,30);
e0.setVisible(false);
c.add(naveee);
naveee.setSize(100,80);
naveee.setVisible(false);
c.add(naveeee);
naveeee.setSize(100,80);
naveeee.setVisible(false);
c.add(naveeeee);
naveeeee.setSize(100,80);
naveeeee.setVisible(false);
c.add(exp);
exp.setSize(100,80);
exp.setVisible(false);
c.add(naves);
naves.setSize(150,20);
naves.setLocation(640,5);
naves.setFont(new Font(«Arial»,Font.BOLD,11));
naves.setForeground(Color.GREEN);
naves.setVisible(true);
c.add(pun);
pun.setSize(150,20);
pun.setLocation(640,40);
pun.setFont(new Font(«Arial»,Font.BOLD,11));
pun.setForeground(Color.GREEN);
pun.setVisible(true);
c.add(n1);
n1.setSize(150,20);
n1.setLocation(640,80);
n1.setVisible(true);
n1.addActionListener(this);
c.add(n2);
n2.setSize(150,20);
n2.setLocation(640,120);
n2.setVisible(true);
n2.addActionListener(this);
c.add(n3);
n3.setSize(150,20);
n3.setLocation(640,160);
n3.setVisible(true);
n3.addActionListener(this);
c.add(vn);
vn.setSize(150,20);
vn.setLocation(640,200);
vn.setVisible(true);
vn.addActionListener(this);
c.add(v1);
v1.setSize(150,20);
v1.setLocation(640,240);
v1.setVisible(true);
v1.addActionListener(this);
c.add(v2);
v2.setSize(150,20);
v2.setLocation(640,280);
v2.setVisible(true);
v2.addActionListener(this);
c.add(re);
re.setSize(150,20);
re.setLocation(640,320);
re.setVisible(true);
re.addActionListener(this);
c.add(img);
img.setLocation(640,350);
img.setSize(150,100);
img.setVisible(true);
addMouseListener(this);
addMouseMotionListener(this);
obj2.start();
}
//Metodo para que se mueva la nave al arrastrar el mouse
public void mouseMoved(MouseEvent ev) {
if(ev.getX()>50 && ev.getX()400){
int posx = (ev.getX() – 35);
navee.setLocation(posx,370);
}
}
//Metodo que ocupo para el disparo de la nave
public void mousePressed(MouseEvent ev) {
if(ev.getY()>400 && ev.getX()>31 && ev.getX()0;y1–,y2–){
Graphics g=getGraphics();
time.relog(1);
g.setColor(Color.YELLOW);
g.drawLine(x,y1,x,y2);
g.setColor(Color.YELLOW);
g.drawLine(x+3,y1,x+3,y2);
g.setColor(Color.YELLOW);
g.drawLine(x-3,y1,x-3,y2);
time.relog(1);
g.setColor(Color.BLACK);
g.drawLine(x,y1,x,y2);
g.setColor(Color.BLACK);
g.drawLine(x+3,y1,x+3,y2);
g.setColor(Color.BLACK);
g.drawLine(x-3,y1,x-3,y2);
z=x;
}
atina();
}
}
public void mouseExited(MouseEvent ev) {}
public void mouseReleased(MouseEvent ev) {}
public void mouseClicked(MouseEvent ev) {}
public void mouseEntered(MouseEvent ev) {}
public void mouseDragged(MouseEvent ev) {}
//Escuchador de aventos de los botones
public void actionPerformed(ActionEvent evt){
if(evt.getSource()==n1){
obj1.start();
}
if(evt.getSource()==re){
setVisible(false);
exp.setVisible(false);
nd=0;
naves.setText(«Naves derribadas: «+nd);
pun.setText(«Puntuacion: » +(nd*0));
}
if(evt.getSource()==n2){
exp.setVisible(false);
obj1.suspend();
}
if(evt.getSource()==n3){
exp.setVisible(false);
obj1.resume();
}
if(evt.getSource()==vn){
t2 = 500;
t3 = 1000;
exp.setVisible(false);
obj1.resume();
}
if(evt.getSource()==v1){
t2 = 400;
t3 = 800;
exp.setVisible(false);
obj1.resume();
}
if(evt.getSource()==v2){
t2 = 200;
t3 = 400;
exp.setVisible(false);
obj1.resume();
}
}
//Metodo para colocar en las etiquetas el numero de naves atinadas y puntuaciov
public void posicionnave (){
naves.setText(«Naves derribadas: » +» «+ nd);
pun.setText(«Puntuacion: » +» «+ (nd*100));
}
//Metodos de accion cuando se le da a una nave enemiga
public void atina(){
if(z>pox && z<pox+100){
naveee.setVisible(false);
exp.setVisible(true);
exp.setLocation(pox,poy);
nd= nd+1;
posicionnave();
rep2();
}
}
//Metodo para la reproduccion de sonidos
public void sounddis(){
try {
disparo = AudioSystem.getClip();
disparo.open(AudioSystem.getAudioInputStream(new File("disparo.wav")));
explocion = AudioSystem.getClip();
explocion.open(AudioSystem.getAudioInputStream(new File("explo.wav")));
}
catch (Exception evn) { }
}
public void rep1(){
disparo.start();
}
public void rep2(){
explocion.start();
}
//Clase con hilos para que las naves enemigas siempre esten apareciendo
public class Ene extends Thread {
public void run(){
while(true){
pox = (int) Math.round(Math.random()*550);
poy = (int) Math.round(Math.random()*300);
naveee.setVisible(true);
naveee.setLocation(pox,poy);
time.relog(t2);
naveee.setVisible(false);
try {
Thread.sleep(t3);
}
catch( InterruptedException e ) { }
}
}
}
//Clase ke se ocupa para ke las estrellas de fondo siempre se esten ejecutando "ayuda de hilos en java"
public class Estrellas extends Thread {
public void run(){
while(true){
int p = (int) Math.round(Math.random()*550);
int py = (int) Math.round(Math.random()*300);
int p1 = (int) Math.round(Math.random()*550);
int py1 = (int) Math.round(Math.random()*300);
int p2 = (int) Math.round(Math.random()*550);
int py2 = (int) Math.round(Math.random()*300);
int p3 = (int) Math.round(Math.random()*550);
int py3 = (int) Math.round(Math.random()*300);
int p4 = (int) Math.round(Math.random()*550);
int py4 = (int) Math.round(Math.random()*300);
int p5 = (int) Math.round(Math.random()*550);
int py5 = (int) Math.round(Math.random()*300);
int p6 = (int) Math.round(Math.random()*550);
int py6 = (int) Math.round(Math.random()*300);
int p7 = (int) Math.round(Math.random()*550);
int py7 = (int) Math.round(Math.random()*300);
int p8 = (int) Math.round(Math.random()*550);
int py8 = (int) Math.round(Math.random()*300);
int p9 = (int) Math.round(Math.random()*550);
int py9 = (int) Math.round(Math.random()*300);
time.relog(1000);
e1.setVisible(true);
e1.setLocation(p,py);
e2.setVisible(true);
e2.setLocation(p1,py1);
e3.setVisible(true);
e3.setLocation(p2,py2);
e4.setVisible(true);
e4.setLocation(p3,py3);
e5.setVisible(true);
e5.setLocation(p4,py4);
e6.setVisible(true);
e6.setLocation(p5,py5);
e7.setVisible(true);
e7.setLocation(p6,py6);
e8.setVisible(true);
e8.setLocation(p7,py7);
e9.setVisible(true);
e9.setLocation(p8,py8);
e0.setVisible(true);
e0.setLocation(p9,py9);
time.relog(1000);
e1.setVisible(false);
e2.setVisible(false);
e3.setVisible(false);
e4.setVisible(false);
e5.setVisible(false);
e6.setVisible(false);
e7.setVisible(false);
e8.setVisible(false);
e9.setVisible(false);
e0.setVisible(false);
try {
Thread.sleep(500);
}
catch( InterruptedException e ) { }
}
}
}
}