public void Generar() { bool establecido; Random rnd = new Random(); Console.WriteLine("GENERANDO BARCOS DEL..."); foreach (Barco.Tipo tipo in Enum.GetValues(typeof(Barco.Tipo))) { establecido = false; do { Array values = Enum.GetValues(typeof(Barco.Orientacion)); Barco.Orientacion orientacion = (Barco.Orientacion)values.GetValue(rnd.Next(0, 2)); if (PonerBarco(tipo, orientacion, rnd.Next(0, width), rnd.Next(0, height))) { establecido = true; Console.WriteLine("BARCO ESTABLECIDO CORRECTAMENTE\n"); } else { Console.WriteLine("NO CABE {0}\n", orientacion); } } while (!establecido); } Console.WriteLine("BARCOS DEL ORDENADOR ESTABLECIDOS CORRECTAMENTE\n"); }
//Crear nuevo barco //Devuelve el barco creado static Barco CrearBarco(int tamaño, int fila, int columna, Barco.Orientacion orientacion) { Barco barco = new Barco(); barco.tamaño = tamaño; barco.fila = fila; barco.columna = columna; barco.impactos = 0; barco.orientacion = orientacion; return(barco); }
private bool PonerBarco(Barco.Tipo tipo_barco, Barco.Orientacion orientacion, int x, int y) { bool puesto = false; // Console.WriteLine("Tipo: {0} | Orientación: {1} | x: {2} | y: {3}", tipo_barco, orientacion, x, y); // Comprobamos que no excede los límites if ((orientacion.Equals(Barco.Orientacion.HORIZONTAL) && x + GetBarcoTablero(tipo_barco).GetTamano() <= tablero.GetLength(0)) || (orientacion.Equals(Barco.Orientacion.VERTICAL) && y + GetBarcoTablero(tipo_barco).GetTamano() <= tablero.GetLength(1))) { int p = orientacion.Equals(Barco.Orientacion.HORIZONTAL) ? x : y; // Comprobamos que todas las posiciones para el nuevo barco son de tipo agua puesto = true; for (int i = p; i < GetBarcoTablero(tipo_barco).GetTamano() + p; i++) { if ((orientacion.Equals(Barco.Orientacion.HORIZONTAL) && !tablero[i, y].GetEstado().Equals(Casilla.Estados.AGUA)) || orientacion.Equals(Barco.Orientacion.VERTICAL) && !tablero[x, i].GetEstado().Equals(Casilla.Estados.AGUA)) { puesto = false; break; } } // Si no excede límites y todas son de tipo agua, establecemos el tipo de barco en el tablero if (puesto) { int array_pos = 0; Casilla casilla = null; for (int i = p; i < GetBarcoTablero(tipo_barco).GetTamano() + p; i++) { if (orientacion.Equals(Barco.Orientacion.HORIZONTAL)) { casilla = tablero[i, y]; } else if (orientacion.Equals(Barco.Orientacion.VERTICAL)) { casilla = tablero[x, i]; } casilla.SetEstado(Casilla.Estados.BARCO); GetBarcoTablero(tipo_barco).SetCasillas(array_pos, casilla); array_pos++; } } } return(puesto); }
static int ColocarBarco(Partida partida, int n, int fila, int columna, int orientacionInt) { try { //Crear barco Barco.Orientacion orientacion = (Barco.Orientacion)orientacionInt; Barco barco = CrearBarco(n, fila, columna, orientacion); //Añadir barco a la lista partida.jugador.listaBarcos = new Barco[partida.numeroBarcos]; partida.jugador.listaBarcos[partida.jugador.barcosCreados] = barco; partida.jugador.barcosCreados = partida.jugador.barcosCreados + 1; //Marcar casillas del tablero "Mostrar Barcos" partida.jugador.tableroBarcos[fila, columna] = n; if (orientacionInt == 1) { //HORIZONTAL if (n == 2) { partida.jugador.tableroBarcos[fila, columna + 1] = n; } } if (orientacionInt == 2) { //VERTICAL if (n == 2) { partida.jugador.tableroBarcos[fila + 1, columna] = n; } } return(0); } catch (Exception e) { return(-1); } }