예제 #1
0
        private void BorrarColaAnterior()
        {
            ParteDeCulebrita colaAnterior = SnakeBefore[SnakeBefore.Count - 1];

            Console.SetCursorPosition(colaAnterior.X, colaAnterior.Y);
            Console.Write(" ");
        }
예제 #2
0
        public ParteDeCulebrita PuntoCentral()
        {
            ParteDeCulebrita coordLocal = new ParteDeCulebrita();

            coordLocal.X = this.Marco.base1 / 2;
            coordLocal.Y = (this.Marco.altura / 5) * 3;

            return(coordLocal);
        }
예제 #3
0
        public void Crecer()
        {
            ParteDeCulebrita cuerpo = this.Snake[Snake.Count - 1];

            this.Snake.RemoveAt(this.Snake.Count - 1);
            this.Snake.Add(new ParteDeCulebrita(cuerpo.X, cuerpo.Y, '#'));

            // Insertar la cola de la serpiente en el momento anterior
            ParteDeCulebrita cola = this.SnakeBefore[SnakeBefore.Count - 1];

            this.Snake.Add(new ParteDeCulebrita(cola.X, cola.Y, '*'));

            this.Cola = cola;
        }
예제 #4
0
        private bool SelfColision()
        {
            // Cabeza
            ParteDeCulebrita parte = this.Snake[0];
            ParteDeCulebrita parteComparar;

            for (int i = 1; i < this.Snake.Count; i++)
            {
                parteComparar = this.Snake[i];

                /** Verificar si la cabeza tiene la misma coordenada
                ** que alguna parte de su cuerpo para determinar si ha colisionado */
                if (parte.X == parteComparar.X && parte.Y == parteComparar.Y)
                {
                    return(true);
                }
            }
            // Si no detecta coliciones de alguna parte del cuerpo con la cabeza, devuelve falso
            return(false);
        }
예제 #5
0
        public Culebrita(Marco marco)
        {
            this.Marco          = marco;
            this.Cabeza         = PuntoCentral(); // Para que la cabeza de la serpiente aparezca en el centro de la pantalla
            this.Cabeza.Simbolo = '@';

            this.Cola = PuntoCentral();
            this.Cola.X--;                 // La cola tiene que estar detras de la cabeza en la coordenada X
            this.Cola.Simbolo = '*';

            this.Snake = new List <ParteDeCulebrita>();
            this.Snake.Add(Cabeza);
            this.Snake.Add(Cola);

            // copia temp de serpiente en el frame anterior
            this.SnakeBefore = new List <ParteDeCulebrita>();

            this.EstaViva  = true;
            this.Velocidad = 20;
        }
예제 #6
0
        public void MoverArriba()
        {
            // copiar toda la culebrita antes de moverla
            this.SnakeBefore = this.copiarCulebrita(this.Snake);
            List <ParteDeCulebrita> cuerpoTemp = this.copiarCulebrita(this.Snake);

            this.Snake.Clear();
            ParteDeCulebrita apuntadorCabeza = this.Cabeza;
            ParteDeCulebrita cabezaNueva     = new ParteDeCulebrita(apuntadorCabeza.X, apuntadorCabeza.Y, apuntadorCabeza.Simbolo);

            // Se cambia su coordenada en Y para subirla un espacio
            cabezaNueva.Y--;
            this.Snake.Add(cabezaNueva);

            // Se recorre la lista que contiene el apuntador a la cabeza, y a la cola
            ParteDeCulebrita parte;

            for (int i = 0; i < cuerpoTemp.Count; i++)
            {
                if (cuerpoTemp[i + 1].Simbolo == '*')
                {
                    parte = cuerpoTemp[i];
                    this.Snake.Add(new ParteDeCulebrita(parte.X, parte.Y, '*'));
                    // Se elimina la cola en la ultima posicion
                    cuerpoTemp.RemoveAt(i + 1);
                }
                else
                {
                    parte = cuerpoTemp[i];
                    this.Snake.Add(new ParteDeCulebrita(parte.X, parte.Y, '#'));
                }
            }

            // Se actualiza posicion de cabeza
            this.Cabeza = this.Snake[0];
            // Se actualiza el apuntador a la cola en la ultima posicion de la lista
            this.Cola = this.Snake[this.Snake.Count - 1];
        }