diff --git a/src/ComunacacionJugador.java b/src/ComunacacionJugador.java
index 97112dd..63b62f3 100644
--- a/src/ComunacacionJugador.java
+++ b/src/ComunacacionJugador.java
@@ -75,6 +75,7 @@ public class ComunacacionJugador extends Thread{
 				continuar = false;
 				if(finalJuego == jugador) {
 					bufferSalida.println("v");
+					Servidor.salas3.remove(sala);
 				}else {
 					bufferSalida.println("f");
 				}
@@ -94,7 +95,7 @@ public class ComunacacionJugador extends Thread{
 			}
 			
 		}
-		Servidor.salas3.remove(sala);
+		
 	}
 	
 	private void partida4(BufferedReader bufferEntrada, PrintWriter bufferSalida, int sala) throws InterruptedException, NumberFormatException, IOException {
@@ -131,6 +132,7 @@ public class ComunacacionJugador extends Thread{
 				continuar = false;
 				if(finalJuego == jugador) {
 					bufferSalida.println("v");
+					Servidor.salas4.remove(sala);
 				}else {
 					bufferSalida.println("f");
 				}
@@ -149,6 +151,6 @@ public class ComunacacionJugador extends Thread{
 			}
 			
 		}
-		Servidor.salas4.remove(sala);
+		
 	}
 }
diff --git a/src/Servidor.java b/src/Servidor.java
index 8bec62f..24b2efc 100644
--- a/src/Servidor.java
+++ b/src/Servidor.java
@@ -50,15 +50,15 @@ public class Servidor {
 	
 	public static boolean addJugador(int sala, Socket socket) {
 		boolean ret = false;
-		if(sala == Servidor.salas3.size()-1) {
+		if(sala < Servidor.salas3.size()) {
 			ret = Servidor.salas3.get(sala).aniadirJugador(socket);
 			if(Servidor.salas3.get(sala).nJugadores==1) {
 				Servidor.salas3.add(new Sala3());
 			}
-		}else if(sala == (Servidor.salas4.size()+Servidor.salas3.size()-1)) {
+		}else if(sala < (Servidor.salas4.size()+Servidor.salas3.size())) {
 			ret = Servidor.salas4.get(sala-Servidor.salas3.size()).aniadirJugador(socket);
-			if(Servidor.salas3.get(sala).nJugadores==1) {
-				Servidor.salas3.add(new Sala3());
+			if(Servidor.salas4.get(sala-Servidor.salas3.size()).nJugadores==1) {
+				Servidor.salas4.add(new Sala4());
 			}
 		}
 		
diff --git a/src/Tablero4.java b/src/Tablero4.java
index f34e03d..3991bfd 100644
--- a/src/Tablero4.java
+++ b/src/Tablero4.java
@@ -8,7 +8,7 @@ public class Tablero4 {
 	}
 	
 	public boolean colocarFicha(int x, int jugador) {
-		if(this.casillas[x][6] == 0) {
+		if(this.casillas[x][5] == 0) {
 			for(int i = 0;i < this.casillas[x].length; i++) {
 				if(this.casillas[x][i] == 0) {
 					this.casillas[x][i] = jugador;
@@ -33,9 +33,9 @@ public class Tablero4 {
 	
 	public String getTablero() {
 		String ret = "";
-		for(int i = 0; i< this.casillas.length; i++) {
-			for(int j = 0; j < this.casillas[i].length; j++) {
-				ret += this.casillas[i][j] + " ";
+		for(int i = this.casillas[0].length-1; i >= 0; i--) {
+			for(int j = 0; j < this.casillas.length; j++) {
+				ret += this.casillas[j][i] + " ";
 			}
 			if(i != this.casillas.length-1) {
 				ret += "\n";
@@ -49,16 +49,16 @@ public class Tablero4 {
         int ret=0;
         for(int i = 0;i < this.casillas.length-1; i++) {
 			for(int j = 0;j < this.casillas[i].length; j++) {
-				if(comprobarHorizontal(i, j, this.casillas[i][j]) <= 4) {
+				if(comprobarHorizontal(i, j, this.casillas[i][j]) >= 3) {
 					return this.casillas[i][j];
 				}
-				if(comprobarVertical(i, j, this.casillas[i][j]) <= 4) {
+				if(comprobarVertical(i, j, this.casillas[i][j]) >= 3) {
 					return this.casillas[i][j];
 				}
-				if(comprobarDiagonalArriba(i, j, this.casillas[i][j]) <= 4) {
+				if(comprobarDiagonalArriba(i, j, this.casillas[i][j]) >= 3) {
 					return this.casillas[i][j];
 				}
-				if(comprobarDiagonalAbajo(i, j, this.casillas[i][j]) <= 4) {
+				if(comprobarDiagonalAbajo(i, j, this.casillas[i][j]) >= 3) {
 					return this.casillas[i][j];
 				}
 			}