Example #1
0
        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;
            }
        }
Example #2
0
        public Barco GetBarcoTablero(Barco.Tipo tipo_barco)
        {
            foreach (Barco barco in barcos)
            {
                if (barco.GetTipo().Equals(tipo_barco))
                {
                    return(barco);
                }
            }

            return(null);
        }
Example #3
0
        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);
        }