Esempio n. 1
0
        /// <summary>Метод движения</summary>
        public void Move(GameMap map)
        {
            if (this.Vektor == MoveVektor.Stop)
            {
                return;
            }
            GameAPI.Point?newPosition;

            //Шагнем героем по карте
            newPosition = map.Add(this.CurentPosition.Move(Vektor), this);

            if (newPosition != null)
            {
                //Если удалось шагнуть удалим себя со старой позиции
                map.Remove(this.CurentPosition);

                //Отресуем Хвост
                if (mustGrow) //Нужно удленить змейку
                {
                    SnakeBody sb = new SnakeBody(this.CurentPosition);
                    sb.Vektor = this.Vektor;
                    BodyQueue.Enqueue(sb);
                    map.Add(sb.CurentPosition, sb); //Добавим хвостик на карту

                    //Событие ОнРасти
                    if (OnGrow != null)
                    {
                        OnGrow(sb, null);
                    }
                    this.mustGrow = false;
                }
                else
                {
                    if (this.BodyQueue.Count > 0)
                    {
                        SnakeBody sb = BodyQueue.Dequeue();
                        map.Remove(sb.CurentPosition); // Удалим Хвостик с игровой карты

                        sb.CurentPosition = this.CurentPosition;
                        sb.Vektor         = this.Vektor;
                        BodyQueue.Enqueue(sb);
                        map.Add(sb.CurentPosition, sb); //Добавим хвостик на карту
                    }
                }

                //Сохраним текущюю позицию персонажа
                this.CurentPosition = (GameAPI.Point)newPosition;
            }
        }
Esempio n. 2
0
        /// <summary>Обработчик Столкновений</summary>
        static void Collision(GameAPI.GameMap map, GameAPI.Point p, Object NewObj, Object ExistObj)
        {
            if ((NewObj is GameAPI.Snake) && (ExistObj is GameAPI.Mouse))
            {
                //Удалим яблочко
                map.Remove(p);
                (NewObj as Snake).Grow(map); // Вырастим

                if ((NewObj as Snake).Count >= 12)
                {
                    throw new GameWinExeption(); //Віиграли
                }
                RandomAppleGeneration();         // Сгенерим новое яблочко
            }
            else
            {
                throw new GameOverExeption();
            }
        }
Esempio n. 3
0
        /// <summary>Метод движения</summary>
        public void Move(GameMap map)
        {
            Point?newPosition;

            //Шагнем героем по карте
            newPosition = map.Add(this.CurentPosition.Move(Vektor), this);


            if (newPosition != null)
            {
                //Если удалось шагнуть удалим себя со старой позиции
                map.Remove(this.CurentPosition);

                //Сохраним текущюю позицию персонажа
                this.CurentPosition = (Point)newPosition;

                //Событие
                //if (onMove != null) onMove(this, map);
            }
        }