From b0db99d83a403f4b350406062f6bf63a4e2cf7c8 Mon Sep 17 00:00:00 2001 From: Guillermo Date: Thu, 12 Dec 2019 20:43:16 +0100 Subject: [PATCH] Funciona una sala --- src/ComunacacionJugador.java | 50 +++++++++++++++++++++++++++++++----- src/Main.java | 2 +- src/Sala.java | 2 +- src/Servidor.java | 13 ++++++---- src/Tablero.java | 15 +++++++++-- 5 files changed, 66 insertions(+), 16 deletions(-) diff --git a/src/ComunacacionJugador.java b/src/ComunacacionJugador.java index b7ba4a3..d96643a 100644 --- a/src/ComunacacionJugador.java +++ b/src/ComunacacionJugador.java @@ -18,26 +18,62 @@ public class ComunacacionJugador extends Thread{ 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); + int sala = Integer.parseInt(bufferEntrada.readLine())-1; + if(Servidor.addJugador(sala, this.socket)) { + bufferSalida.println("Has entrado en la sala"); + }else { + bufferSalida.println("Error al entrar en la sala"); + socket.close(); + return; + } + if(Servidor.salas.get(sala).getJugador1().equals(this.socket)) { + bufferSalida.println("Esperando al segundo jugador"); + synchronized (getClass()) { + this.getClass().wait(); + } turno = 1; bufferSalida.println("Primero"); + bufferSalida.println(Servidor.salas.get(sala).tablero.getTablero()); Servidor.salas.get(sala).tablero.colocarFicha(Integer.parseInt(bufferEntrada.readLine()), Integer.parseInt(bufferEntrada.readLine()),turno); synchronized (getClass()) { + this.getClass().notifyAll(); + this.getClass().wait(); + } + }else { + bufferSalida.println("Iniciando partida"); + bufferSalida.println("Segundo"); + synchronized (getClass()) { + this.getClass().notifyAll(); 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(); + int finalJuego = Servidor.salas.get(sala).tablero.finalJuego(); + if(finalJuego != 0) { + continuar = false; + if(finalJuego == turno) { + bufferSalida.println("v"); + }else { + bufferSalida.println("f"); + } + synchronized (getClass()) { + this.getClass().notifyAll(); + } + }else { + bufferSalida.println(Servidor.salas.get(sala).tablero.getTablero()); + Servidor.salas.get(sala).tablero.colocarFicha(Integer.parseInt(bufferEntrada.readLine()), + Integer.parseInt(bufferEntrada.readLine()),turno); + synchronized (getClass()) { + this.getClass().notifyAll(); + this.getClass().wait(); + } } + } }catch (Exception e) { - // TODO: handle exception + e.printStackTrace(); } } } diff --git a/src/Main.java b/src/Main.java index 671bb51..39088ee 100644 --- a/src/Main.java +++ b/src/Main.java @@ -2,7 +2,7 @@ public class Main { public static void main(String[] args) { - // TODO Auto-generated method stub + Servidor servidor = Servidor.getInstance(); } diff --git a/src/Sala.java b/src/Sala.java index d4fbf16..3e12558 100644 --- a/src/Sala.java +++ b/src/Sala.java @@ -12,7 +12,7 @@ public class Sala { } public boolean aniadirJugador(Socket jugador) { - if(this.nJugadores >=1 ) { + if(this.nJugadores <= 1 ) { this.jugadores[this.nJugadores] = jugador; this.nJugadores++; return true; diff --git a/src/Servidor.java b/src/Servidor.java index 6a6eaf4..9955129 100644 --- a/src/Servidor.java +++ b/src/Servidor.java @@ -23,7 +23,7 @@ public class Servidor { } } - public Servidor getInstance() { + public static Servidor getInstance() { if(Servidor.instancia == null) { Servidor.instancia = new Servidor(); } @@ -35,14 +35,17 @@ public class Servidor { String ret = ""; int cont = 1; for(Sala sala:Servidor.salas) { - ret += cont + "Jugadores: " + sala.toString() + "\n"; + 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); + public static boolean addJugador(int sala, Socket socket) { + boolean ret = Servidor.salas.get(sala).aniadirJugador(socket); + if(Servidor.salas.get(sala).nJugadores==1) { + Servidor.salas.add(new Sala()); + } + return ret; } } diff --git a/src/Tablero.java b/src/Tablero.java index 59fbe23..dd24fca 100644 --- a/src/Tablero.java +++ b/src/Tablero.java @@ -8,7 +8,7 @@ public class Tablero { } public boolean colocarFicha(int x, int y, int jugador) { - if(this.casillas[x][y] != 0) { + if(this.casillas[x][y] == 0) { this.casillas[x][y]=jugador; this.ultimasCoordenadas[0]=x; this.ultimasCoordenadas[1]=y; @@ -26,7 +26,18 @@ public class Tablero { return this.ultimasCoordenadas[1]; } - + public String getTablero() { + String ret = ""; + for(int i = 0; i< 3; i++) { + if(i != 2) { + ret += this.casillas[0][i] + " " + this.casillas[1][i] + " " + this.casillas[2][i] + "\n"; + }else { + ret += this.casillas[0][i] + " " + this.casillas[1][i] + " " + this.casillas[2][i]; + } + + } + return ret; + } public int finalJuego() { int ret=0;