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;
if(Servidor.addJugador(sala, this.socket)) {
bufferSalida.println("Has entrado en la sala");
if(Servidor.determinarJuego(sala) == 1) {
switch(Servidor.determinarJuego(sala)){
case Servidor.juego4:
sala -= Servidor.salas3.size();
bufferSalida.println("4");
partida4(bufferEntrada, bufferSalida, sala);
}else {
break;
case Servidor.juego3:
bufferSalida.println("3");
partida3(bufferEntrada, bufferSalida, sala);
break;
}
}else {
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());
Servidor.salas3.get(sala).tablero.colocarFicha(Integer.parseInt(bufferEntrada.readLine()),
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]) {
Servidor.salas3.get(sala).jugadores[jugador%2].notify();
}
@ -71,6 +76,8 @@ public class ComunacacionJugador extends Thread{
}
while(continuar) {
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) {
continuar = false;
if(finalJuego == jugador) {
@ -78,10 +85,11 @@ public class ComunacacionJugador extends Thread{
Servidor.salas3.remove(sala);
}else {
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 {
bufferSalida.println(Servidor.salas3.get(sala).tablero.getTablero());
Servidor.salas3.get(sala).tablero.colocarFicha(Integer.parseInt(bufferEntrada.readLine()),
@ -110,6 +118,8 @@ public class ComunacacionJugador extends Thread{
bufferSalida.println("Primero");
bufferSalida.println(Servidor.salas4.get(sala).tablero.getTablero());
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]) {
Servidor.salas4.get(sala).jugadores[jugador%2].notify();
}
@ -128,6 +138,8 @@ public class ComunacacionJugador extends Thread{
}
while(continuar) {
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) {
continuar = false;
if(finalJuego == jugador) {
@ -135,9 +147,9 @@ public class ComunacacionJugador extends Thread{
Servidor.salas4.remove(sala);
}else {
bufferSalida.println("f");
}
synchronized (Servidor.salas4.get(sala).jugadores[jugador%2]) {
Servidor.salas4.get(sala).jugadores[jugador%2].notify();
synchronized (Servidor.salas4.get(sala).jugadores[jugador%2]) {
Servidor.salas4.get(sala).jugadores[jugador%2].notify();
}
}
}else {
bufferSalida.println(Servidor.salas4.get(sala).tablero.getTablero());

View File

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

View File

@ -39,6 +39,9 @@ public class Tablero3 {
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() {
int ret=0;
for(int i=0;i<3;i++) {

View File

@ -47,19 +47,21 @@ public class Tablero4 {
public int finalJuego() {
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++) {
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(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(this.casillas[i][j] != 0) {
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(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];
}
}
}
}
@ -95,7 +97,7 @@ public class Tablero4 {
if(x == this.casillas.length-1) {
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;
}else {
return 0;
@ -109,7 +111,7 @@ public class Tablero4 {
if(x == this.casillas.length-1) {
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;
}else {
return 0;