Arreglos menores y legibilidad

This commit is contained in:
Guillermo Roche 2019-12-16 23:38:24 +01:00
parent ebd75911fc
commit faddc1fcb8
6 changed files with 50 additions and 30 deletions

View File

@ -20,13 +20,16 @@ public class ComunacacionJugador extends Thread{
int sala = Integer.parseInt(bufferEntrada.readLine())-1; int sala = Integer.parseInt(bufferEntrada.readLine())-1;
if(Servidor.addJugador(sala, this.socket)) { if(Servidor.addJugador(sala, this.socket)) {
bufferSalida.println("Has entrado en la sala"); bufferSalida.println("Has entrado en la sala");
if(Servidor.determinarJuego(sala) == 1) { switch(Servidor.determinarJuego(sala)){
case Servidor.juego4:
sala -= Servidor.salas3.size(); sala -= Servidor.salas3.size();
bufferSalida.println("4"); bufferSalida.println("4");
partida4(bufferEntrada, bufferSalida, sala); partida4(bufferEntrada, bufferSalida, sala);
}else { break;
case Servidor.juego3:
bufferSalida.println("3"); bufferSalida.println("3");
partida3(bufferEntrada, bufferSalida, sala); partida3(bufferEntrada, bufferSalida, sala);
break;
} }
}else { }else {
bufferSalida.println("Error al entrar en la sala"); bufferSalida.println("Error al entrar en la sala");
@ -53,6 +56,8 @@ public class ComunacacionJugador extends Thread{
bufferSalida.println(Servidor.salas3.get(sala).tablero.getTablero()); bufferSalida.println(Servidor.salas3.get(sala).tablero.getTablero());
Servidor.salas3.get(sala).tablero.colocarFicha(Integer.parseInt(bufferEntrada.readLine()), Servidor.salas3.get(sala).tablero.colocarFicha(Integer.parseInt(bufferEntrada.readLine()),
Integer.parseInt(bufferEntrada.readLine()),jugador); Integer.parseInt(bufferEntrada.readLine()),jugador);
/*Calculamos el modulo 2 de jugador para que cuando este sea 2 se acceda al socket del primero,
y viceversa, ya que usamos los sockets como mutex*/
synchronized (Servidor.salas3.get(sala).jugadores[jugador%2]) { synchronized (Servidor.salas3.get(sala).jugadores[jugador%2]) {
Servidor.salas3.get(sala).jugadores[jugador%2].notify(); Servidor.salas3.get(sala).jugadores[jugador%2].notify();
} }
@ -71,6 +76,8 @@ public class ComunacacionJugador extends Thread{
} }
while(continuar) { while(continuar) {
int finalJuego = Servidor.salas3.get(sala).tablero.finalJuego(); int finalJuego = Servidor.salas3.get(sala).tablero.finalJuego();
/*funalJuego determinara quien ha ganado, mientras sea 0 nadie habra ganado,
y cuando alguien gane contendra el numero del jugador que ha ganado*/
if(finalJuego != 0) { if(finalJuego != 0) {
continuar = false; continuar = false;
if(finalJuego == jugador) { if(finalJuego == jugador) {
@ -78,10 +85,11 @@ public class ComunacacionJugador extends Thread{
Servidor.salas3.remove(sala); Servidor.salas3.remove(sala);
}else { }else {
bufferSalida.println("f"); bufferSalida.println("f");
synchronized (Servidor.salas3.get(sala).jugadores[jugador%2]) {
Servidor.salas3.get(sala).jugadores[jugador%2].notify();
}
} }
synchronized (Servidor.salas3.get(sala).jugadores[jugador%2]) {
Servidor.salas3.get(sala).jugadores[jugador%2].notify();
}
}else { }else {
bufferSalida.println(Servidor.salas3.get(sala).tablero.getTablero()); bufferSalida.println(Servidor.salas3.get(sala).tablero.getTablero());
Servidor.salas3.get(sala).tablero.colocarFicha(Integer.parseInt(bufferEntrada.readLine()), Servidor.salas3.get(sala).tablero.colocarFicha(Integer.parseInt(bufferEntrada.readLine()),
@ -110,6 +118,8 @@ public class ComunacacionJugador extends Thread{
bufferSalida.println("Primero"); bufferSalida.println("Primero");
bufferSalida.println(Servidor.salas4.get(sala).tablero.getTablero()); bufferSalida.println(Servidor.salas4.get(sala).tablero.getTablero());
Servidor.salas4.get(sala).tablero.colocarFicha(Integer.parseInt(bufferEntrada.readLine()),jugador); Servidor.salas4.get(sala).tablero.colocarFicha(Integer.parseInt(bufferEntrada.readLine()),jugador);
/*Calculamos el modulo 2 de jugador para que cuando este sea 2 se acceda al socket del primero,
y viceversa, ya que usamos los sockets como mutex*/
synchronized (Servidor.salas4.get(sala).jugadores[jugador%2]) { synchronized (Servidor.salas4.get(sala).jugadores[jugador%2]) {
Servidor.salas4.get(sala).jugadores[jugador%2].notify(); Servidor.salas4.get(sala).jugadores[jugador%2].notify();
} }
@ -128,6 +138,8 @@ public class ComunacacionJugador extends Thread{
} }
while(continuar) { while(continuar) {
int finalJuego = Servidor.salas4.get(sala).tablero.finalJuego(); int finalJuego = Servidor.salas4.get(sala).tablero.finalJuego();
/*funalJuego determinara quien ha ganado, mientras sea 0 nadie habra ganado,
y cuando alguien gane contendra el numero del jugador que ha ganado*/
if(finalJuego != 0) { if(finalJuego != 0) {
continuar = false; continuar = false;
if(finalJuego == jugador) { if(finalJuego == jugador) {
@ -135,9 +147,9 @@ public class ComunacacionJugador extends Thread{
Servidor.salas4.remove(sala); Servidor.salas4.remove(sala);
}else { }else {
bufferSalida.println("f"); bufferSalida.println("f");
} synchronized (Servidor.salas4.get(sala).jugadores[jugador%2]) {
synchronized (Servidor.salas4.get(sala).jugadores[jugador%2]) { Servidor.salas4.get(sala).jugadores[jugador%2].notify();
Servidor.salas4.get(sala).jugadores[jugador%2].notify(); }
} }
}else { }else {
bufferSalida.println(Servidor.salas4.get(sala).tablero.getTablero()); bufferSalida.println(Servidor.salas4.get(sala).tablero.getTablero());

View File

@ -30,7 +30,7 @@ public class Sala3 {
} }
public String toString() { public String toString() {
return String.valueOf(this.nJugadores) + "Tres en raya"; return String.valueOf(this.nJugadores) + " Tres en raya";
} }
} }

View File

@ -30,7 +30,7 @@ public class Sala4 {
} }
public String toString() { public String toString() {
return String.valueOf(this.nJugadores) + "Cuatro en raya"; return String.valueOf(this.nJugadores) + " Cuatro en raya";
} }
} }

View File

@ -7,6 +7,8 @@ public class Servidor {
static Servidor instancia; static Servidor instancia;
static ArrayList<Sala3> salas3; static ArrayList<Sala3> salas3;
static ArrayList<Sala4> salas4; static ArrayList<Sala4> salas4;
static final int juego3 = 0;
static final int juego4 = 1;
private Servidor() { private Servidor() {
ServerSocket server; ServerSocket server;
@ -52,12 +54,12 @@ public class Servidor {
boolean ret = false; boolean ret = false;
if(sala < Servidor.salas3.size()) { if(sala < Servidor.salas3.size()) {
ret = Servidor.salas3.get(sala).aniadirJugador(socket); ret = Servidor.salas3.get(sala).aniadirJugador(socket);
if(Servidor.salas3.get(sala).nJugadores==1) { if(Servidor.salas3.get(sala).nJugadores == 1) {
Servidor.salas3.add(new Sala3()); Servidor.salas3.add(new Sala3());
} }
}else if(sala < (Servidor.salas4.size()+Servidor.salas3.size())) { }else if(sala < (Servidor.salas4.size() + Servidor.salas3.size())) {
ret = Servidor.salas4.get(sala-Servidor.salas3.size()).aniadirJugador(socket); ret = Servidor.salas4.get(sala - Servidor.salas3.size()).aniadirJugador(socket);
if(Servidor.salas4.get(sala-Servidor.salas3.size()).nJugadores==1) { if(Servidor.salas4.get(sala - Servidor.salas3.size()).nJugadores == 1) {
Servidor.salas4.add(new Sala4()); Servidor.salas4.add(new Sala4());
} }
} }
@ -65,11 +67,12 @@ public class Servidor {
return ret; return ret;
} }
public static int determinarJuego(int sala) { public static int determinarJuego(int sala) {
if(Servidor.salas3.size() > sala) { if(Servidor.salas3.size() > sala) {
return 0; return Servidor.juego3;
}else { }else {
return 1; return Servidor.juego4;
} }
} }
} }

View File

@ -39,6 +39,9 @@ public class Tablero3 {
return ret; return ret;
} }
/*Lo hice hace un anio y ni idea de como va pero va, es muy feo
el de el 4 en raya es mas bonito y deberia ir en un tablero 3x3
pero no me apetecia probarlo*/
public int finalJuego() { public int finalJuego() {
int ret=0; int ret=0;
for(int i=0;i<3;i++) { for(int i=0;i<3;i++) {

View File

@ -47,19 +47,21 @@ public class Tablero4 {
public int finalJuego() { public int finalJuego() {
int ret=0; int ret=0;
for(int i = 0;i < this.casillas.length-1; i++) { for(int i = 0;i < this.casillas.length; i++) {
for(int j = 0;j < this.casillas[i].length; j++) { for(int j = 0;j < this.casillas[i].length; j++) {
if(comprobarHorizontal(i, j, this.casillas[i][j]) >= 3) { if(this.casillas[i][j] != 0) {
return this.casillas[i][j]; if(comprobarHorizontal(i, j, this.casillas[i][j]) >= 3) {
} return this.casillas[i][j];
if(comprobarVertical(i, j, this.casillas[i][j]) >= 3) { }
return this.casillas[i][j]; if(comprobarVertical(i, j, this.casillas[i][j]) >= 3) {
} return this.casillas[i][j];
if(comprobarDiagonalArriba(i, j, this.casillas[i][j]) >= 3) { }
return this.casillas[i][j]; if(comprobarDiagonalArriba(i, j, this.casillas[i][j]) >= 3) {
} return this.casillas[i][j];
if(comprobarDiagonalAbajo(i, j, this.casillas[i][j]) >= 3) { }
return this.casillas[i][j]; if(comprobarDiagonalAbajo(i, j, this.casillas[i][j]) >= 3) {
return this.casillas[i][j];
}
} }
} }
} }
@ -95,7 +97,7 @@ public class Tablero4 {
if(x == this.casillas.length-1) { if(x == this.casillas.length-1) {
return 0; return 0;
} }
if(this.casillas[x][y+1] == jugador) { if(this.casillas[x+1][y+1] == jugador) {
return comprobarDiagonalArriba(x+1, y+1, jugador)+1; return comprobarDiagonalArriba(x+1, y+1, jugador)+1;
}else { }else {
return 0; return 0;
@ -109,7 +111,7 @@ public class Tablero4 {
if(x == this.casillas.length-1) { if(x == this.casillas.length-1) {
return 0; return 0;
} }
if(this.casillas[x][y+1] == jugador) { if(this.casillas[x+1][y-1] == jugador) {
return comprobarDiagonalAbajo(x+1, y-1, jugador)+1; return comprobarDiagonalAbajo(x+1, y-1, jugador)+1;
}else { }else {
return 0; return 0;