From b067f6034fed14e98c2eae50e575a4ad510b9110 Mon Sep 17 00:00:00 2001 From: groche97 Date: Wed, 11 Dec 2019 10:56:04 +0100 Subject: [PATCH] Inicial --- .classpath | 6 +++ .gitignore | 1 + .project | 17 +++++++ .settings/org.eclipse.jdt.core.prefs | 11 +++++ src/ComunacacionJugador.java | 43 ++++++++++++++++ src/Main.java | 9 ++++ src/Sala.java | 36 ++++++++++++++ src/Servidor.java | 48 ++++++++++++++++++ src/Tablero.java | 73 ++++++++++++++++++++++++++++ 9 files changed, 244 insertions(+) create mode 100644 .classpath create mode 100644 .gitignore create mode 100644 .project create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 src/ComunacacionJugador.java create mode 100644 src/Main.java create mode 100644 src/Sala.java create mode 100644 src/Servidor.java create mode 100644 src/Tablero.java diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..51a8bba --- /dev/null +++ b/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ae3c172 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/bin/ diff --git a/.project b/.project new file mode 100644 index 0000000..47f6448 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + Servidor2 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..3a21537 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,11 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/src/ComunacacionJugador.java b/src/ComunacacionJugador.java new file mode 100644 index 0000000..b7ba4a3 --- /dev/null +++ b/src/ComunacacionJugador.java @@ -0,0 +1,43 @@ +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.io.PrintWriter; +import java.net.Socket; + +public class ComunacacionJugador extends Thread{ + Socket socket; + public ComunacacionJugador(Socket socket) { + this.socket = socket; + this.start(); + } + + public void run() { + boolean continuar = true; + int turno = 2; + try { + BufferedReader bufferEntrada = new BufferedReader(new InputStreamReader(this.socket.getInputStream())); + PrintWriter bufferSalida = new PrintWriter(new OutputStreamWriter(this.socket.getOutputStream()),true); + bufferSalida.println(Servidor.mostrarSalas()+"fin"); + int sala = Integer.getInteger(bufferEntrada.readLine()); + Servidor.addJugador(sala, this.socket); + if(Servidor.salas.get(sala).getJugador1().equals(this.socket)) { + turno = 1; + bufferSalida.println("Primero"); + Servidor.salas.get(sala).tablero.colocarFicha(Integer.parseInt(bufferEntrada.readLine()), + Integer.parseInt(bufferEntrada.readLine()),turno); + synchronized (getClass()) { + this.getClass().wait(); + } + } + while(continuar) { + Servidor.salas.get(sala).tablero.colocarFicha(Integer.parseInt(bufferEntrada.readLine()), + Integer.parseInt(bufferEntrada.readLine()),turno); + synchronized (getClass()) { + this.getClass().wait(); + } + } + }catch (Exception e) { + // TODO: handle exception + } + } +} diff --git a/src/Main.java b/src/Main.java new file mode 100644 index 0000000..671bb51 --- /dev/null +++ b/src/Main.java @@ -0,0 +1,9 @@ + +public class Main { + + public static void main(String[] args) { + // TODO Auto-generated method stub + + } + +} diff --git a/src/Sala.java b/src/Sala.java new file mode 100644 index 0000000..d4fbf16 --- /dev/null +++ b/src/Sala.java @@ -0,0 +1,36 @@ +import java.net.Socket; + +public class Sala { + int nJugadores; + Socket[] jugadores; + Tablero tablero; + + public Sala() { + this.nJugadores = 0; + this.jugadores = new Socket[2]; + this.tablero = new Tablero(); + } + + public boolean aniadirJugador(Socket jugador) { + if(this.nJugadores >=1 ) { + this.jugadores[this.nJugadores] = jugador; + this.nJugadores++; + return true; + }else { + return false; + } + } + + public Socket getJugador1() { + return this.jugadores[0]; + } + + public Socket getJugador2() { + return this.jugadores[1]; + } + + public String toString() { + return String.valueOf(this.nJugadores); + } + +} diff --git a/src/Servidor.java b/src/Servidor.java new file mode 100644 index 0000000..6a6eaf4 --- /dev/null +++ b/src/Servidor.java @@ -0,0 +1,48 @@ +import java.io.IOException; +import java.net.ServerSocket; +import java.net.Socket; +import java.util.ArrayList; + +public class Servidor { + static Servidor instancia; + static ArrayList salas; + + private Servidor() { + ServerSocket server; + Servidor.salas = new ArrayList(); + Servidor.salas.add(new Sala()); + try { + server = new ServerSocket(8080); + while(true) { + Socket socket = server.accept(); + ComunacacionJugador cliente = new ComunacacionJugador(socket); + } + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + public Servidor getInstance() { + if(Servidor.instancia == null) { + Servidor.instancia = new Servidor(); + } + + return Servidor.instancia; + } + + public static String mostrarSalas() { + String ret = ""; + int cont = 1; + for(Sala sala:Servidor.salas) { + ret += cont + "Jugadores: " + sala.toString() + "\n"; + cont++; + } + return ret; + } + + public static Sala addJugador(int sala, Socket socket) { + Servidor.salas.get(sala).aniadirJugador(socket); + return Servidor.salas.get(sala); + } +} diff --git a/src/Tablero.java b/src/Tablero.java new file mode 100644 index 0000000..59fbe23 --- /dev/null +++ b/src/Tablero.java @@ -0,0 +1,73 @@ + +public class Tablero { + int[][] casillas; + int[] ultimasCoordenadas; + public Tablero() { + this.casillas = new int[3][3]; + this.ultimasCoordenadas = new int[2]; + } + + public boolean colocarFicha(int x, int y, int jugador) { + if(this.casillas[x][y] != 0) { + this.casillas[x][y]=jugador; + this.ultimasCoordenadas[0]=x; + this.ultimasCoordenadas[1]=y; + return true; + } + return false; + + } + + public int getLastX() { + return this.ultimasCoordenadas[0]; + } + + public int getLastY() { + return this.ultimasCoordenadas[1]; + } + + + + public int finalJuego() { + int ret=0; + for(int i=0;i<3;i++) { + if(this.casillas[i][0]>0) { + for(int j=0;j<3;j++) { + if(this.casillas[j][1]==this.casillas[i][0]) { + if(Math.abs(i-j)<2) { + if(ij&&i<2) { + if(this.casillas[i+1][2]==this.casillas[i][0]) { + ret=this.casillas[i][0]; + } + } + + } + } + } + } + } + if(ret==0) { + for(int i=0;i<3;i++) { + ret=this.casillas[0][i]; + for(int j=1;j<3;j++) { + if(ret!=this.casillas[j][i]) { + ret=0; + break; + } + } + if(ret>0) { + break; + } + } + } + return ret; + } +}