Beispiel #1
0
        /// <summary>
        /// Déplace le joueur à un emplacement défini par le MovingType
        /// </summary>
        /// <param name="MovingType"></param>
        public virtual void Move(TypeDeplacement MovingType)
        {
            _inMoving   = true;
            _movingType = MovingType;
            switch (_movingType)
            {
            case TypeDeplacement.Haut:
                _direction = -Vector2.UnitY;
                _posY--;
                break;

            case TypeDeplacement.Bas:
                _direction = Vector2.UnitY;
                _posY++;
                break;

            case TypeDeplacement.Gauche:
                _direction = -Vector2.UnitX;
                _posX--;
                break;

            case TypeDeplacement.Droite:
                _direction = Vector2.UnitX;
                _posX++;
                break;
            }
            _arrivee = GetPositionVoulu();
        }
Beispiel #2
0
        /// <summary>
        /// Déplace le joueur et son bloc
        /// </summary>
        /// <param name="MovingType"></param>
        private void MoveBloc(TypeDeplacement MovingType, bool OnlyPlayeur)
        {
            var pBloc = GetPlayerBloc(_CurrentPlayer);

            if (OnlyPlayeur)
            {
                _MovingType = TypeDeplacement.None;
            }
            else
            {
                GetPlainBloc(pBloc.PosX, pBloc.PosY).Move(MovingType);
            }

            pBloc.Move(MovingType);
        }
Beispiel #3
0
        /// <summary>
        /// Vérifie qu'un déplacement est possible
        /// </summary>
        /// <param name="typeDeplacement">type de déplacement</param>
        /// <param name="inmoving">Le joueur était-il déjà en déplacement</param>
        /// <returns></returns>
        private bool IsDeplacementPossible(TypeDeplacement typeDeplacement, out bool OnlyPlayeur, bool inmoving = false)
        {
            OnlyPlayeur = false;
            var X = GetPlayerBloc(_CurrentPlayer).PosX;
            var Y = GetPlayerBloc(_CurrentPlayer).PosY;

            switch (typeDeplacement)
            {
            case TypeDeplacement.Haut:
                Y--;
                break;

            case TypeDeplacement.Bas:
                Y++;
                break;

            case TypeDeplacement.Gauche:
                X--;
                break;

            case TypeDeplacement.Droite:
                X++;
                break;
            }

            if (!HasBloc(X, Y))
            {
                return(false);
            }

            var plainBloc = GetPlainBloc(X, Y);

            if (plainBloc == null)
            {
                return(true);
            }

            if (HasPlayerBloc(X, Y) || inmoving)
            {
                return(false);
            }

            OnlyPlayeur = true;
            return(true);
        }
Beispiel #4
0
        /// <summary>
        /// Vérifie et stoppe le déplacement de l'objet s'il a atteint son but
        /// </summary>
        private void CheckPosition()
        {
            if (_inMoving)
            {
                bool fin = false;
                switch (_movingType)
                {
                case TypeDeplacement.Haut:
                    if (_position.Y <= _arrivee.Y)
                    {
                        fin = true;
                    }
                    break;

                case TypeDeplacement.Bas:
                    if (_position.Y >= _arrivee.Y)
                    {
                        fin = true;
                    }
                    break;

                case TypeDeplacement.Gauche:
                    if (_position.X <= _arrivee.X)
                    {
                        fin = true;
                    }
                    break;

                case TypeDeplacement.Droite:
                    if (_position.X >= _arrivee.X)
                    {
                        fin = true;
                    }
                    break;
                }
                if (fin)
                {
                    _inMoving   = false;
                    _movingType = TypeDeplacement.None;
                    _arrivee    = Vector2.Zero;
                    _direction  = Vector2.Zero;
                }
            }
        }
        public bool CheckIfCaseIsEmpty(TypeDeplacement typeDeplacement, Position position, IEnumerable <Position> listPosition)
        {
            switch (typeDeplacement)
            {
            case TypeDeplacement.Down:
                return(!listPosition.Where(pos => pos.LeftCursorPosition == position.LeftCursorPosition && pos.TopCursorPosition == position.TopCursorPosition + 3).Any());

            case TypeDeplacement.Up:
                return(!listPosition.Where(pos => pos.LeftCursorPosition == position.LeftCursorPosition && pos.TopCursorPosition == position.TopCursorPosition - 3).Any());

            case TypeDeplacement.Left:
                return(!listPosition.Where(pos => pos.LeftCursorPosition == position.LeftCursorPosition - 5 && pos.TopCursorPosition == position.TopCursorPosition).Any());

            case TypeDeplacement.Right:
                return(!listPosition.Where(pos => pos.LeftCursorPosition == position.LeftCursorPosition + 5 && pos.TopCursorPosition == position.TopCursorPosition).Any());

            default:
                return(false);
            }
        }
        public bool CheckMoveValidity(TypeDeplacement typeDeplacement, Position currentPos, Grille grille)
        {
            switch (typeDeplacement)
            {
            case TypeDeplacement.Down:
                return(currentPos.TopCursorPosition + 3 < (grille.BottomBorder));

            case TypeDeplacement.Up:
                return(currentPos.TopCursorPosition - 3 > (grille.TopBorder));

            case TypeDeplacement.Left:
                return(currentPos.LeftCursorPosition - 5 > (grille.LeftBorder));

            case TypeDeplacement.Right:
                return(currentPos.LeftCursorPosition + 5 < (grille.RightBorder));

            default:
                return(false);
            }
        }
 private bool CanMove(TypeDeplacement typeDeplacement, Position currentPositionJoueur)
 {
     return(_deplacementService.CheckMoveValidity(typeDeplacement, currentPositionJoueur, grille) &&
            _deplacementService.CheckIfCaseIsEmpty(typeDeplacement, currentPositionJoueur, _listPosition));
 }
Beispiel #8
0
 /// <summary>
 /// Déplace le joueur à un emplacement défini par le MovingType
 /// </summary>
 /// <param name="MovingType"></param>
 public virtual void Move(TypeDeplacement MovingType)
 {
     _inMoving = true;
     _movingType = MovingType;
     switch (_movingType)
     {
         case TypeDeplacement.Haut:
             _direction = -Vector2.UnitY;
             _posY--;
             break;
         case TypeDeplacement.Bas:
             _direction = Vector2.UnitY;
             _posY++;
             break;
         case TypeDeplacement.Gauche:
             _direction = -Vector2.UnitX;
             _posX--;
             break;
         case TypeDeplacement.Droite:
             _direction = Vector2.UnitX;
             _posX++;
             break;
     }
     _arrivee = GetPositionVoulu();
 }
Beispiel #9
0
 /// <summary>
 /// Vérifie et stoppe le déplacement de l'objet s'il a atteint son but
 /// </summary>
 private void CheckPosition()
 {
     if (_inMoving)
     {
         bool fin = false;
         switch (_movingType)
         {
             case TypeDeplacement.Haut:
                 if (_position.Y <= _arrivee.Y)
                     fin = true;
                 break;
             case TypeDeplacement.Bas:
                 if (_position.Y >= _arrivee.Y)
                     fin = true;
                 break;
             case TypeDeplacement.Gauche:
                 if (_position.X <= _arrivee.X)
                     fin = true;
                 break;
             case TypeDeplacement.Droite:
                 if (_position.X >= _arrivee.X)
                     fin = true;
                 break;
         }
         if (fin)
         {
             _inMoving = false;
             _movingType = TypeDeplacement.None;
             _arrivee = Vector2.Zero;
             _direction = Vector2.Zero;
         }
     }
 }
Beispiel #10
0
        /// <summary>
        /// Déplace le joueur et son bloc
        /// </summary>
        /// <param name="MovingType"></param>
        private void MoveBloc(TypeDeplacement MovingType, bool OnlyPlayeur)
        {
            var pBloc = GetPlayerBloc(_CurrentPlayer);

            if (OnlyPlayeur)
                _MovingType = TypeDeplacement.None;
            else
                GetPlainBloc(pBloc.PosX, pBloc.PosY).Move(MovingType);

            pBloc.Move(MovingType);
        }
Beispiel #11
0
        /// <summary>
        /// Vérifie qu'un déplacement est possible
        /// </summary>
        /// <param name="typeDeplacement">type de déplacement</param>
        /// <param name="inmoving">Le joueur était-il déjà en déplacement</param>
        /// <returns></returns>
        private bool IsDeplacementPossible(TypeDeplacement typeDeplacement, out bool OnlyPlayeur, bool inmoving = false)
        {
            OnlyPlayeur = false;
            var X = GetPlayerBloc(_CurrentPlayer).PosX;
            var Y = GetPlayerBloc(_CurrentPlayer).PosY;

            switch (typeDeplacement)
            {
                case TypeDeplacement.Haut:
                    Y--;
                    break;
                case TypeDeplacement.Bas:
                    Y++;
                    break;
                case TypeDeplacement.Gauche:
                    X--;
                    break;
                case TypeDeplacement.Droite:
                    X++;
                    break;
            }

            if (!HasBloc(X, Y))
                return false;

            var plainBloc = GetPlainBloc(X, Y);
            if (plainBloc == null)
                return true;

            if (HasPlayerBloc(X, Y) || inmoving)
                return false;

            OnlyPlayeur = true;
            return true;
        }