public Barco(Barco.Tipo tipo) { this._tipo = tipo; switch (tipo) { case Tipo.PORTAVIONES: _espacio = 4; break; case Tipo.SUBMARINO: _espacio = 3; break; case Tipo.ACORAZADO: _espacio = 3; break; case Tipo.DESTRUCTOR: _espacio = 2; break; case Tipo.FRAGATA: _espacio = 1; break; } }
public Barco GetBarcoTablero(Barco.Tipo tipo_barco) { foreach (Barco barco in barcos) { if (barco.GetTipo().Equals(tipo_barco)) { return(barco); } } return(null); }
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); }