Está en la página 1de 11

VentanaCarreteraServidor

package SERVIDOR; import java.awt.Dimension; import java.awt.Toolkit; import java.awt.image.BufferedImage; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import javax.imageio.ImageIO; import javax.swing.JLabel; public class VentanaCarreteraServidor extends javax.swing.JFrame{ int pos=1; JLabel lab = null; ArrayList tabla=new ArrayList(); //int coordenadax, coordenaday; String nombreRec; boolean ganado=false; VentanaCarreteraServidor() {

// initComponents(); MiPanel contenedor=new MiPanel(); setContentPane(contenedor); this.setExtendedState(MAXIMIZED_BOTH); this.setVisible(true); //codigo para centrar la ventana Dimension pantalla = Toolkit.getDefaultToolkit().getScreenSize(); this.setLocationRelativeTo(null); this.setResizable(false); this.setVisible(true); //----------------------------------------------------------------------------------try { ServerSocket conexion = new ServerSocket(2000); Socket conexCliente;

while (pos<=8) { System.out.println("\nEl servidor est esperando a que un cliente se conecte..."); conexCliente = conexion.accept(); PrintWriter out = new PrintWriter(conexCliente.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(conexCliente.getInputStream())); //enviamos la posicin al jugador out.println(pos); tabla.add(conexCliente); HiloServidor hil=new HiloServidor(conexCliente, pos, this,tabla); hil.start(); pos++; //------------------------------------------------------------------------------------} while(pos>8) { System.out.println("\nEl servidor est esperando a que un cliente se conecte el cliente que ya no juega..."); conexCliente = conexion.accept(); PrintWriter out = new PrintWriter(conexCliente.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(conexCliente.getInputStream())); //enviamos la posicin al jugador out.println(pos); } } catch (IOException ex) { System.exit(0); } } void aadirCoche(int pos) { /*pos va de 1 a 8*/ pos--; try { BufferedImage coche = ImageIO.read(new File("hilo" + pos + ".png")); MiPanel.imagen[pos] = coche; double Altura = Toolkit.getDefaultToolkit().getScreenSize().getHeight(); System.out.println(Altura); switch (pos) { case 0: MiPanel.CoordY[pos]= (int)(Altura-((Altura/8)*(pos+1))); break; case 1: MiPanel.CoordY[pos] = (int)(Altura-((Altura/8)*(pos+1))); break; case 2:

MiPanel.CoordY[pos] = (int)(Altura-((Altura/8)*(pos+1))); break; case 3: MiPanel.CoordY[pos] = (int)(Altura-((Altura/8)*(pos+1))); break; case 4: MiPanel.CoordY[pos] = (int)(Altura-((Altura/8)*(pos+1))); break; case 5: MiPanel.CoordY[pos] = (int)(Altura-((Altura/8)*(pos+1))); break; case 6: MiPanel.CoordY[pos] = (int)(Altura-((Altura/8)*(pos+1))); break; case 7: MiPanel.CoordY[pos] = (int)(Altura-((Altura/8)*(pos+1))); break; } } catch (IOException e) { System.out.println("IO: " + e.toString()); } }

void HanGanado(ArrayList tablaRec,String nombre) { new VentanaAvisos(tablaRec,nombre); this.dispose(); } @SuppressWarnings("unchecked") public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new VentanaCarreteraServidor().setVisible(true); } }); }

VentanaAvisos
package SERVIDOR; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;

import java.io.PrintWriter; import java.net.Socket; import java.util.ArrayList; import java.util.Iterator; public class VentanaAvisos extends javax.swing.JFrame { /** Creates new form VentanaAvisos */ public VentanaAvisos() { initComponents(); this.setVisible(true); } Boolean encontrado=false; ArrayList tabla; public VentanaAvisos(ArrayList tablaRec,String nombre) { tabla=tablaRec; initComponents(); this.setVisible(true); this.jLabel1.setText("Ha ganado "+nombre+" el juego ha terminado" ); } @SuppressWarnings("unchecked") private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { Iterator i=tabla.iterator(); Socket conexion2; while(i.hasNext()) { try { conexion2=(Socket)i.next(); PrintWriter out = new PrintWriter(conexion2.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(conexion2.getInputStream())); out.println("CERRAR"); } catch (IOException ex) { } } System.exit(0); this.dispose(); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() {

public void run() { new VentanaAvisos().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JLabel jLabel1; // End of variables declaration }

PrincipalVentanaServidor package SERVIDOR; public class PrincipalServidor { public static void main(String[] args) { VentanaCarreteraServidor vent=new VentanaCarreteraServidor(); } }

HiloServidor
package SERVIDOR; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.util.ArrayList; import java.util.Iterator; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JLabel; public class HiloServidor extends Thread { Socket conexion; int pos; VentanaCarreteraServidor ventServ; ArrayList tabla; JLabel lab; boolean ganado=false; HiloServidor(Socket conexionRec, int posRec, VentanaCarreteraServidor vent,ArrayList tablaRec) { ventServ=vent; conexion=conexionRec; pos=posRec; tabla=tablaRec; } public void run()

{ String nombreRec = ""; int vecesParaGanar=0; try { PrintWriter out = new PrintWriter(conexion.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(conexion.getInputStream())); nombreRec=in.readLine(); nombreRec=in.readLine(); ventServ.aadirCoche(pos); while(vecesParaGanar<40) { try { nombreRec=in.readLine(); MiPanel.CoordX[pos-1]+=30; vecesParaGanar++; } catch (IOException ex) { } //AVANZAR LABEL lab } Iterator i=ventServ.tabla.iterator(); Socket conexion2; while(i.hasNext()) { conexion2=(Socket)i.next(); out = new PrintWriter(conexion2.getOutputStream(), true); in = new BufferedReader(new InputStreamReader(conexion2.getInputStream())); out.println(nombreRec); } ventServ.HanGanado(tabla, nombreRec); } catch (IOException ex) { Logger.getLogger(HiloServidor.class.getName()).log(Level.SEVERE, null, ex); } } }

LanzarCliente

package CLIENTE;

public class LanzarCliente { public static void main(String[] args) { new Jugador(); } }

Jugador
package CLIENTE; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.net.SocketException; import java.util.Scanner;

public class Jugador extends javax.swing.JFrame { Scanner pedirTeclado=new Scanner(System.in); String mensaje,mensajeR,nomCli, nombre; Socket conex; boolean ganado=false; BufferedReader in; PrintWriter out; int aceptar=1; boolean recibido=false; String posRe; int pos; String nomRec; /** Creates new form Jugador */

public Jugador() {

//---------------------------------------------------------------------------------------initComponents(); this.setVisible(true);

this.LabelEmpiezaAJugar.setVisible(false); //---------------------------------------------------------------------------------------try { conex=new Socket("localhost", 2000); System.out.println("\nComunicacin establecida.");

out = new PrintWriter(conex.getOutputStream(), true); in = new BufferedReader(new InputStreamReader(conex.getInputStream())); posRe=in.readLine(); pos=Integer.valueOf(posRe); } catch(SocketException e) { System.exit(0); } catch (IOException ex) { System.exit(0); } //---------------------------------------------------------------------------------------} private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { String avance;

System.out.println(aceptar); if(aceptar==-2) { System.exit(0); } if(aceptar==3) { //aceptar al avance AVANZAR out.println(nombre); } if(aceptar==2) { out.println(nombre); //preparar la ventana para que el jugador avance this.LabelEmpiezaAJugar.setText(nombre); this.jButton1.setText("AVANZAR"); aceptar=3; }

if(aceptar==1)//SI es true esq la ventana esta en nombre del jugador { nombre= this.jTextField1.getText(); this.Labelintroducir.setVisible(false); if(pos>8) { //devolver salir al hilo servidor //recoger nombre y poner en ese label, lo sentimos nombre, pero no ya hay demasiados jugadores this.Labelintroducir.setText(""+nombre+" LO SENTIMOS, PERO HAY DEMASIADOS JUGADORES."); aceptar=-2; }else { out.println(nombre); HiloJugador hilo=new HiloJugador(conex,nombre,this); hilo.start(); this.LabelEmpiezaAJugar.setVisible(true);//mostrar titulo de quien juega this.LabelEmpiezaAJugar.setText(""+nombre+" OCUPAS LA POSICIN: "+pos); this.jTextField1.setVisible(false); aceptar=2; } } if(aceptar==-1) { this.Labelintroducir.setText(""+nombre+" LO SENTIMOS, PERO HAY DEMASIADOS JUGADORES."); aceptar=-2; } if(recibido==true) { System.exit(0);//acepta que el u otro jugador ha ganado } } void recargarVentanaGanador() { this.jButton1.setText("ACEPTAR"); this.LabelEmpiezaAJugar.setText("HAS GANADO EL JUEGO!!!!!!"); aceptar=-2; }void recargarVentanaPerdedor(String ganador) { this.jButton1.setText("ACEPTAR"); this.LabelEmpiezaAJugar.setText("HA GANADO " +ganador+ " EL JUEGO HA TERMINADO");

aceptar=-2; } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Jugador().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JLabel LabelEmpiezaAJugar; private javax.swing.JLabel Labelintroducir; private javax.swing.JButton jButton1; private javax.swing.JTextField jTextField1; // End of variables declaration }

HiloJugador
package CLIENTE; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.net.SocketException; public class HiloJugador extends Thread{ Socket conexion; String nombre; Jugador jugador; HiloJugador(Socket conexionRec,String nombreRec,Jugador jugRec) { conexion=conexionRec; nombre=nombreRec; jugador=jugRec; } public void run() { String ganador = ""; PrintWriter out ; BufferedReader in = null ; boolean recibido=false; try { while(recibido==false)

{ out = new PrintWriter(conexion.getOutputStream(), true); in = new BufferedReader(new InputStreamReader(conexion.getInputStream())); ganador=in.readLine(); recibido=true; } if(nombre.equals(ganador)) { jugador.recargarVentanaGanador(); } else { jugador.recargarVentanaPerdedor(ganador); } String recogeCerrar=in.readLine(); jugador.dispose(); } catch(SocketException e){ System.exit(0); } catch (IOException ex) { System.exit(0); } }}