Exemple #1
0
        private static void jugarPartida()
        {
            List <Point> serpiente;
            Point        manzana;
            bool?        victoria = null;

            inicializarPartida(out serpiente, out manzana);

            pintarPartida(serpiente, manzana);
            while (victoria == null)
            {
                ConsoleKeyInfo entrada = Console.ReadKey();

                // Je je je
                if (entrada.KeyChar == 'x')
                {
                    break;
                }

                ResultadoMovimiento nuevoPunto = moverSerpiente(serpiente, entrada.Key, manzana);

                if (nuevoPunto == ResultadoMovimiento.Manzana)
                {
                    manzana = new Point(Aleatorio.Next(0, TamañoMapa - 1), Aleatorio.Next(0, TamañoMapa - 1));
                }

                // Console.Clear();
                Console.WriteLine("Usa las flechas para moverte!");
                pintarPartida(serpiente, manzana);


                if (nuevoPunto == ResultadoMovimiento.Muerte)
                {
                    victoria = false;
                }

                if (serpiente.Count > TamañoMapa * TamañoMapa)
                {
                    victoria = true;
                }
            }

            if (victoria.Value)
            {
                Console.Write("¡Enhorabuena, has ganado!");
            }
            else
            {
                Console.Write("¡Has perdido!");
            }

            Console.WriteLine(" - Pulsa enter para volver al menú principal.");
            Console.ReadLine();
        }
Exemple #2
0
        private static ResultadoMovimiento moverSerpiente(List <Point> serpiente, ConsoleKey pulsacion, Point manzana)
        {
            Point?nuevoPunto        = null;
            ResultadoMovimiento ret = ResultadoMovimiento.Nada;

            switch (pulsacion)
            {
            case ConsoleKey.LeftArrow:

                if (serpiente[0].X <= 0)
                {
                    return(ResultadoMovimiento.Muerte);
                }

                nuevoPunto = new Point(serpiente[0].X - 1, serpiente[0].Y);
                break;

            case ConsoleKey.RightArrow:

                if (serpiente[0].X >= TamañoMapa - 1)
                {
                    return(ResultadoMovimiento.Muerte);
                }

                nuevoPunto = new Point(serpiente[0].X + 1, serpiente[0].Y);
                break;

            case ConsoleKey.DownArrow:

                if (serpiente[0].Y <= 0)
                {
                    return(ResultadoMovimiento.Muerte);
                }

                nuevoPunto = new Point(serpiente[0].X, serpiente[0].Y - 1);
                break;

            case ConsoleKey.UpArrow:

                if (serpiente[0].Y >= TamañoMapa - 1)
                {
                    return(ResultadoMovimiento.Muerte);
                }

                nuevoPunto = new Point(serpiente[0].X, serpiente[0].Y + 1);
                break;
            }

            if (nuevoPunto != null)
            {
                if (serpiente.GetRange(0, serpiente.Count - 1).Contains(nuevoPunto.Value))
                {
                    return(ResultadoMovimiento.Muerte);
                }

                serpiente.Insert(0, nuevoPunto.Value);
                serpiente.RemoveAt(serpiente.Count - 1);
            }

            if (serpiente.Any(p => p.Equals(manzana)))
            {
                serpiente.Add(new Point(serpiente[serpiente.Count - 1].X, serpiente[serpiente.Count - 1].Y));
                ret = ResultadoMovimiento.Manzana;
            }

            return(ret);
        }