miércoles, 30 de marzo de 2011
Juegos en java
class Raya3 extends JFrame implements ActionListener
{
//Atributos
JButton boton [][]=new JButton[3][3];
JLabel etiq=new JLabel("3 en Raya",JLabel.CENTER);
ImageIcon x=new ImageIcon("x.jpg");
ImageIcon o=new ImageIcon("o.jpg");
String IP="localhost";
int contador=0;
//Conexión
static Socket conexion;
static DataOutputStream salida;
static DataInputStream entrada;
Raya3()
{
IP=JOptionPane.showInputDialog("Introduce ip servidor(localhost para máquina local):");
//Conexion CON EL SERVIDOR por el puerto 5001
try
{
conexion=new Socket(IP,5001);
salida=new DataOutputStream(conexion.getOutputStream());
entrada=new DataInputStream(conexion.getInputStream());
}
catch(IOException ioe)
{
System.out.println("No es posible conetar");
}
// Añadir Panel de tablero
JPanel Centro=new JPanel();
add(etiq,"North");
Centro.setLayout(new GridLayout(3,3));
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
boton[i][j]=new JButton();
boton[i][j].addActionListener(this);
boton[i][j].setBackground(Color.WHITE);
Centro.add(boton[i][j]);
}
//Cerrar Ventana
add(Centro,"Center");
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent we)
{
System.exit(0);
}
});
setTitle("3 en Raya");
setSize(400,400);
setResizable(false);
setVisible(true);
}
public void actionPerformed(ActionEvent ae)
{
for(int i=0;i<3;i++)
for(int j=0;j<3;j++)
{
if(ae.getSource()==boton[i][j])
{
if(boton[i][j].getIcon()==null)
{
boton[i][j].setIcon(x); //pones tu ficha X
try
{
if(contador<4) //Se acabo el juego?
{
//enviar la posición en la ke pones
salida.writeUTF(i+"#"+j); //formato de la posicion x#y
String cadena=entrada.readUTF(); //Recive la posición del servidor
int a,b,pos=0;
pos=cadena.indexOf("#");
a=Integer.parseInt(cadena.substring(0,pos));
b=Integer.parseInt(cadena.substring(pos+1,cadena.length()));
boton[a][b].setIcon(o); //el servidor pune su ficha O
contador++;
}
}
catch(IOException ioe)
{
System.out.println("Error envio datos");
}
ganar ();
}
}
}
}
// Comprobación de que ficha gana!!!
void ganar ()
{
//Comprobación en horizontal
int fila=0;
int fila2=0;
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
if(boton[i][j].getIcon()==x) fila++;
else fila=0;
if(boton[i][j].getIcon()==o) fila2++;
else fila2=0;
}
if (fila==3)
{
JOptionPane.showMessageDialog(this,"Has ganado");
VolverEmpezar();
}
if (fila2==3)
{
JOptionPane.showMessageDialog(this,"Gana la maquina");
VolverEmpezar();
}
fila=0;
}
fila=0;
fila2=0;
//Comprobación en vertical
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
if(boton[j][i].getIcon()==x) fila++;
else fila=0;
if(boton[j][i].getIcon()==o) fila2++;
else fila2=0;
}
if (fila==3)
{
JOptionPane.showMessageDialog(this,"Has ganado");
VolverEmpezar();
}
if (fila2==3)
{
JOptionPane.showMessageDialog(this,"Gana la maquina");
VolverEmpezar();
}
fila=0;
}
fila=0;
// Se ha producido un empate
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
if(boton[j][i].getIcon()!=null) fila++;
}
}
if(fila==9)
{
JOptionPane.showMessageDialog(this,"Empate");
VolverEmpezar();
try
{
salida.writeUTF("Nuevo");
}
catch(IOException ioe)
{
}
}
fila=0;
fila2=0;
//Comprobación en oblicuo
for(int i=0;i<3;i++)
{
if(boton[i][i].getIcon()==x) fila++;
else fila=0;
if(boton[i][i].getIcon()==o) fila2++;
else fila2=0;
}
if (fila==3)
{
JOptionPane.showMessageDialog(this,"Has ganado");
VolverEmpezar();
}
if (fila2==3)
{
JOptionPane.showMessageDialog(this,"Gana la maquina");
VolverEmpezar();
}
fila=0;
fila2=0;
int j=3;
for(int i=0;i<3;i++)
{
j--;
if(boton[j][i].getIcon()==x) fila++;
else fila=0;
if(boton[j][i].getIcon()==o) fila2++;
else fila2=0;
}
if (fila==3)
{
JOptionPane.showMessageDialog(this,"Has ganado");
VolverEmpezar();
}
if (fila2==3)
{
JOptionPane.showMessageDialog(this,"Gana la maquina");
VolverEmpezar();
}
}
// Reiniciar el tablero a la posición inicial
void VolverEmpezar()
{
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
boton[i][j].setIcon(null);
}
}
contador=0;
// Servidor a la posición inicial
try
{
salida.writeUTF("Nuevo");
}
catch(IOException ioe)
{
}
}
public static void main(String args[])
{
// lanzar la aplicación
new Raya3();
}
} //Fin de la clase del cliente
Suscribirse a:
Enviar comentarios (Atom)
Con la tecnología de Blogger.
Busqueda
Sabias que?
chat
Popular Posts
-
// Clase Principal import java.awt.*; import java.lang.*; import javax.swing.*; import java.awt.event.*; import java.io.*; import ...
-
Nota:estas imagenes son necesarias para el achivo class Raya3 extends JFrame implements ActionListener { //Atributos JButton b...
-
import java.awt.*; import java.lang.*; import javax.swing.*; import java.awt.event.*; class Interface1 extends JFrame { String [...
No hay comentarios:
Publicar un comentario