Example #1
0
        private static Point MostrarComida(Size screenSize, BiCola culebra)
        {
            var lugarComida   = Point.Empty;
            var cabezaCulebra = (Point)culebra.finalBicola();
            var rnd           = new Random();
            var coordenada    = cabezaCulebra.X;

            do
            {
                var x = rnd.Next(0, screenSize.Width - 1);
                var y = rnd.Next(0, screenSize.Height - 1);
                if (culebra.ToString().All(x => coordenada != x || coordenada != y) &&
                    Math.Abs(x - cabezaCulebra.X) + Math.Abs(y - cabezaCulebra.Y) > 8)
                {
                    lugarComida = new Point(x, y);
                    Console.Beep(659, 125); Console.Beep(659, 125);
                }
            } while (lugarComida == Point.Empty);

            Console.BackgroundColor = ConsoleColor.Blue;
            Console.SetCursorPosition(lugarComida.X + 1, lugarComida.Y + 1);
            Console.Write(" ");

            return(lugarComida);
        }
        private static Point MostrarComida(Size screenSize, BiCola culebra)
        {
            var lugarComida = Point.Empty;                    //Indica un punto que tiene los valores X e Y establecidos en cero

            var cabezaCulebra = (Point)culebra.finalBicola(); //Usamos el metodo de finalBicola de la clase Bicola en lugar de Last
            var coordenada    = cabezaCulebra.X;

            var rnd = new Random(); //Para que la comida se muestre cada ves en una posicion aleatoria

            do
            {
                //permite que se indiquen dos valores, de esa forma sacará un número aleatorio que esté dentro del rango de esos números indicados.
                var x = rnd.Next(0, screenSize.Width - 1);  //Alto
                var y = rnd.Next(0, screenSize.Height - 1); //Ancho

                if (culebra.ToString().All(x => coordenada != x || coordenada != y) &&
                    Math.Abs(x - cabezaCulebra.X) + Math.Abs(y - cabezaCulebra.Y) > 8)
                {
                    lugarComida = new Point(x, y);
                    Console.Beep(659, 125);//Emitir sonido cuando la culebra come
                }
                //Se implementara mientras
            } while (lugarComida == Point.Empty);

            Console.BackgroundColor = ConsoleColor.Blue;//Color del cuadrito de comida
            Console.SetCursorPosition(lugarComida.X + 1, lugarComida.Y + 1);
            Console.Write(" ");

            return(lugarComida);
        }
        private static bool MoverLaCulebrita(BiCola culebra, Point posiciónObjetivo,
                                             int longitudCulebra, Size screenSize)

        {
            //Casteamos el metodo finalBicola con Point para Establecer las coordenadas
            //En lugar de .Last usamos el metodo finalBicola
            var lastPoint = (Point)culebra.finalBicola();

            if (lastPoint.Equals(posiciónObjetivo))
            {
                return(true);                                   //Comparamos los valores
            }
            if (culebra.Any(posiciónObjetivo))
            {
                return(false);
            }


            if (posiciónObjetivo.X < 0 || posiciónObjetivo.X >= screenSize.Width ||
                posiciónObjetivo.Y < 0 || posiciónObjetivo.Y >= screenSize.Height)
            {
                return(false);
            }

            Console.BackgroundColor = ConsoleColor.Green;                //Color del cuerpo de la culebra
            Console.SetCursorPosition(lastPoint.X + 1, lastPoint.Y + 1); //Movemos el cursor a estas coordenadas de la pantalla
            Console.WriteLine(" ");

            //Usamos el metodo de insertar en lugar de Enqueue
            culebra.insertar(posiciónObjetivo);

            Console.BackgroundColor = ConsoleColor.Red;                                //Color de la cabecita
            Console.SetCursorPosition(posiciónObjetivo.X + 1, posiciónObjetivo.Y + 1); //Movemos el cursor a estas coordenadas de la pantalla
            Console.Write(" ");

            // Quitar cola
            //Usamos el metodo de numElementosBicola de la clase Bicola en lugar de Count
            if (culebra.numElementosBicola() > longitudCulebra)
            {
                //Usamos el metodo de quitar de la clase Bicola en Lugar de Dequeue
                var removePoint = (Point)culebra.quitar();
                Console.BackgroundColor = ConsoleColor.Black;                    //Color del recorrido de la culebra
                Console.SetCursorPosition(removePoint.X + 1, removePoint.Y + 1); //Movemos el cursor a estas coordenadas de la pantalla
                Console.Write(" ");
            }
            return(true);
        }
        private static bool MoverLaCulebrita(BiCola culebra, Point posiciónObjetivo,
                                             int longitudCulebra, Size screenSize)

        {
            var lastPoint = (Point)culebra.finalBicola();

            if (lastPoint.Equals(posiciónObjetivo))
            {
                return(true);
            }

            if (culebra.Any(posiciónObjetivo))
            {
                return(false);
            }


            if (posiciónObjetivo.X < 0 || posiciónObjetivo.X >= screenSize.Width ||
                posiciónObjetivo.Y < 0 || posiciónObjetivo.Y >= screenSize.Height)
            {
                return(false);
            }

            Console.BackgroundColor = ConsoleColor.Green;
            Console.SetCursorPosition(lastPoint.X + 1, lastPoint.Y + 1);
            Console.WriteLine(" ");

            culebra.insertar(posiciónObjetivo);

            Console.BackgroundColor = ConsoleColor.Red;
            Console.SetCursorPosition(posiciónObjetivo.X + 1, posiciónObjetivo.Y + 1);
            Console.Write(" ");

            // Quitar cola
            if (culebra.numElementosBicola() > longitudCulebra)
            {
                var removePoint = (Point)culebra.quitar();
                Console.BackgroundColor = ConsoleColor.Black;
                Console.SetCursorPosition(removePoint.X + 1, removePoint.Y + 1);
                Console.Write(" ");
            }
            return(true);
        }
Example #5
0
        public void CulebraConBicola()
        {
            var punteo          = 0;
            var velocidad       = 100; //modificar estos valores y ver qué pasa
            var posiciónComida  = Point.Empty;
            var tamañoPantalla  = new Size(60, 20);
            var culebrita       = new BiCola();
            var longitudCulebra = 3;               //modificar estos valores y ver qué pasa
            var posiciónActual  = new Point(0, 9); //modificar estos valores y ver qué pasa

            culebrita.insertar(posiciónActual);
            var dirección = Direction.Derecha; //modificar estos valores y ver qué pasa

            DibujaPantalla(tamañoPantalla);
            MuestraPunteo(punteo);

            while (MoverLaCulebrita(culebrita, posiciónActual, longitudCulebra, tamañoPantalla))
            {
                Thread.Sleep(velocidad);
                dirección      = ObtieneDireccion(dirección);
                posiciónActual = ObtieneSiguienteDireccion(dirección, posiciónActual);

                if (posiciónActual.Equals(posiciónComida))
                {
                    posiciónComida = Point.Empty;
                    longitudCulebra++; //modificar estos valores y ver qué pasa
                    punteo += 10;      //modificar estos valores y ver qué pasa
                    MuestraPunteo(punteo);
                }

                if (posiciónComida == Point.Empty) //entender qué hace esta linea
                {
                    posiciónComida = MostrarComida(tamañoPantalla, culebrita);
                }
            }

            Console.ResetColor();
            Console.SetCursorPosition(tamañoPantalla.Width / 2 - 4, tamañoPantalla.Height / 2);
            Console.Write("Fin del Juego");
            Thread.Sleep(2000);
            Console.ReadKey();
        }
        public void jugarConIntentos()
        {
            var velocidad       = 100;
            var posiciónComida  = Point.Empty;
            var tamañoPantalla  = new Size(60, 20);
            var culebrita       = new BiCola();
            var longitudCulebra = 3;
            var posiciónActual  = new Point(0, 9);

            culebrita.insertar(posiciónActual);
            var dirección = Direction.Derecha;

            DibujaPantalla(tamañoPantalla);
            MuestraPunteoK(punteo, vidas);

            while (vidas != 0)
            {
                bool juegarsi = MoverLaCulebrita(culebrita, posiciónActual, longitudCulebra, tamañoPantalla);

                if (juegarsi)
                {
                    Thread.Sleep(velocidad);
                    dirección      = ObtieneDireccion(dirección);
                    posiciónActual = ObtieneSiguienteDireccion(dirección, posiciónActual);

                    if (posiciónActual.Equals(posiciónComida))
                    {
                        posiciónComida = Point.Empty;
                        longitudCulebra++;
                        punteo += 10;
                        MuestraPunteoK(punteo, vidas);
                        velocidad -= 10;
                    }

                    if (posiciónComida == Point.Empty)
                    {
                        posiciónComida = MostrarComida(tamañoPantalla, culebrita);
                    }
                }
                else
                {
                    vidas--;
                    Console.ResetColor();
                    Console.SetCursorPosition(tamañoPantalla.Width / 2 - 15, tamañoPantalla.Height / 2);
                    if (vidas == 0)
                    {
                        Console.SetCursorPosition(tamañoPantalla.Width / 2 - 4, tamañoPantalla.Height / 2);
                        Console.Write($"¡GAME OVER!");
                    }
                    else
                    {
                        Console.Write($"Haz perdido una vida, te quedan {vidas}");
                    }

                    Thread.Sleep(2000);
                    Console.ReadKey();

                    jugarConIntentos(); //Volvemos a jugar
                }
            }
        }
        public void jugarConIntentos()
        {
            var velocidad      = 100;              //MIENTRAS MAS ALTO SEA EL NUMERO MAS LENTO SE PONE Y MIENTRAS MAS BAJO ES EL NUMERO SE PONE MAS RAPIDO
            var posiciónComida = Point.Empty;      //Indicar un punto que tiene los valores X e Y establecidos en cero
            var tamañoPantalla = new Size(60, 20); //Alto y ancho de la consola

            var culebrita = new BiCola();

            var longitudCulebra = 3;               //ESTABBLECEMOS EL TAMAÑO DEL CUERPO DE LA CULEBRA CON EL QUE VA A COMENZAR
            var posiciónActual  = new Point(0, 9); //ESTABLECEMOS EN QUE POSICION COMENZARA A SALIR LA CULEBRA

            culebrita.insertar(posiciónActual);    //ENCOLANDO

            var dirección = Direction.Derecha;     //LA CULEBRA COMIENZA A SALIR DEL LADO DERECHO PORQUE LE TENEMOS.DERECHA

            DibujaPantalla(tamañoPantalla);        //Dibujamos pantalla con lo que establecimos de la variable tamañoPantalla
            MuestraPunteoK(punteo, vidas);         //Mostramos el punteo delo que establecimos de la variable punteo

            //Para que el juego se repita mientras tenga vidas
            while (vidas != 0)
            {
                bool juegarsi = MoverLaCulebrita(culebrita, posiciónActual, longitudCulebra, tamañoPantalla);

                if (juegarsi)
                {
                    Thread.Sleep(velocidad);//Suspende el subproceso actual durante el período de tiempo especificado en velocidad.
                    dirección      = ObtieneDireccion(dirección);
                    posiciónActual = ObtieneSiguienteDireccion(dirección, posiciónActual);

                    if (posiciónActual.Equals(posiciónComida)) //Comparamos los objetos
                    {
                        posiciónComida = Point.Empty;          //Indica un punto que tiene los valores X e Y establecidos en cero
                        longitudCulebra++;                     //Incrementamos el cuerpo de la culebra cada ves que come
                        punteo += 10;                          //VA SUBIENDO EL PUNTEO DE 10 EN 10 CADA VES QUE COME

                        MuestraPunteoK(punteo, vidas);         //Mostramos el punteo y las vidas

                        velocidad -= 10;                       //Sube de velocidad cada ves que come
                    }

                    //MUESTRA LA COMIDA
                    if (posiciónComida == Point.Empty) //Indica un punto que tiene los valores X e Y establecidos en cero
                    {
                        posiciónComida = MostrarComida(tamañoPantalla, culebrita);
                    }
                }
                else//Cada ves que pierda
                {
                    vidas--;//Me restara una vida
                    Console.ResetColor();//Establece los colores de la consola en sus valores predeterminados.
                    Console.SetCursorPosition(tamañoPantalla.Width / 2 - 15, tamañoPantalla.Height / 2);

                    if (vidas == 0)
                    {
                        Console.SetCursorPosition(tamañoPantalla.Width / 2 - 4, tamañoPantalla.Height / 2);
                        Console.Write($"¡GAME OVER!");
                    }
                    else
                    {
                        Console.Write($"Haz perdido una vida, te quedan {vidas}");
                    }

                    Thread.Sleep(2000);//Suspende el subproceso actual durante el período de tiempo especificado en velocidad.

                    Console.ReadKey();

                    jugarConIntentos(); //Mientras tenga vidas volvemos a jugar
                }
            }
        }