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
   

No hay comentarios:

Publicar un comentario

Con la tecnología de Blogger.

Busqueda

Sabias que?

chat

Popular Posts