Esempio n. 1
0
        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");
        }
Esempio n. 2
0
        //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);
        }
Esempio n. 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);
        }
Esempio n. 4
0
        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);
            }
        }