public int colocarBarco(int tamaño, boolean esVertical, int x, int y) {
		int error = 0;
		int id;

		if (esVertical) {

			// Se comprueba que no haya ningun barco cercano
			if (validarPosicion(x,y+1) && matrizReal[x][y+1] > 0)
				error = -1;
			else
				if (validarPosicion(x,y-tamaño) && matrizReal[x][y-tamaño] > 0)
					error = -1;

			for (int i = y+1; error == 0 && i >= y-tamaño; i--)
			{
				if (validarPosicion(x+1,i) && matrizReal[x+1][i] > 0)
					error = -1;
				else
					if (validarPosicion(x-1,i) && matrizReal[x-1][i] > 0)
						error = -1;
			}

			/* Se comprueba que no hay un barco en las posiciones donde va a colocarse
			 * el nuevo barco y que estas esten dentro de la matriz. */
			for (int i = y; error == 0 && i > y-tamaño; i--) {
				if (!validarPosicion(x,i) || matrizReal[x][i] != 0) error = -1;
			}

		} else {

			// Se comprueba que no haya ningun barco cercano
			if (validarPosicion(x-1,y) && matrizReal[x-1][y] > 0)
				error = -1;
			else
				if (validarPosicion(x+tamaño,y) && matrizReal[x+tamaño][y] > 0)
					error = -1;

			for (int i = x-1; error == 0 && i <= x+tamaño; i++)
			{
				if (validarPosicion(i,y+1) && matrizReal[i][y+1] > 0)
					error = -1;
				else
					if (validarPosicion(i,y-1) && matrizReal[i][y-1] > 0)
						error = -1;
			}

			/* Se comprueba que no hay un barco en las posiciones donde va a colocarse
			 * el nuevo barco y que estas esten dentro de la matriz. */
			for (int i = x; error == 0 && i < x+tamaño; i++) {
				if (!validarPosicion(i,y) || matrizReal[i][y] != 0) error = -1;
			}

		}

		// En caso de que no haya ningun barco cerca se coloca el barco 
		if (error == 0) {
			barcos.add(new Barco(tamaño, esVertical));
			id = barcos.lastElement().getIdBarco();
			if (esVertical) {

				// Se escribe el identificador del barco en la matrizReal
				for (int i = y; i > y-tamaño; i--) {
					matrizReal[x][i] = id;
				}

				// Se escriben las marcas de proximidad de barco
				if (validarPosicion(x,y+1)) matrizReal[x][y+1] = -2;
				if (validarPosicion(x,y-tamaño)) matrizReal[x][y-tamaño] = -2;

				for (int i = y+1; i >= y-tamaño; i--) {
					if (validarPosicion(x+1,i)) matrizReal[x+1][i] = -2;
					if (validarPosicion(x-1,i)) matrizReal[x-1][i] = -2;
				}

			} else {

				// Se escribe el identificador del barco en la matrizReal
				for (int i = x; i < x+tamaño; i++) {
					matrizReal[i][y] = id;
				}

				// Se escriben las marcas de proximidad de barco
				if (validarPosicion(x-1,y)) matrizReal[x-1][y] = -2;
				if (validarPosicion(x+tamaño,y)) matrizReal[x+tamaño][y] = -2;

				for (int i = x-1; i <= x+tamaño; i++) {
					if (validarPosicion(i,y+1)) matrizReal[i][y+1] = -2;
					if (validarPosicion(i,y-1)) matrizReal[i][y-1] = -2;
				}
			}
		}

		return error;
	}