Funciona una sala

This commit is contained in:
Guillermo Roche 2019-12-12 20:43:16 +01:00
parent b067f6034f
commit b0db99d83a
5 changed files with 66 additions and 16 deletions

View File

@ -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();
}
}
}

View File

@ -2,7 +2,7 @@
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Servidor servidor = Servidor.getInstance();
}

View File

@ -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;

View File

@ -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;
}
}

View File

@ -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;