Ejemplo n.º 1
0
        /* Ici on exécute le comportement paramétré, qui lui aura un algorithme de recherche
         * différent prédéfini pour chaque état */
        public override void Execution()
        {
//            Console.WriteLine("Le personnage s'apprête à effectuer une action ...");
            if (EtatPersonnage is EtatClientEnAttenteDeFaim)
            {
                // Décrémenter points de vie
                // S'il est dans la zone externe, il doit atteindre le point de rassemblement

                if (PersonnageClient.PointsDeVie > 0)
                {
                    --PersonnageClient.PointsDeVie;
                }
                if (ZoneActuelle.nom == "Zone Externe")
                {
                    var coor = PersonnageClient.AtteindreGatherPoint(ZoneActuelle);
                    if (coor != null && coor.EstValide())
                    {
                        Console.WriteLine("Déplacement du personnage de " + PersonnageClient.Case + "  vers " + coor + ", direction pt de Rassemblement");
                        PersonnageClient.Case = coor;
                    }
                }
                else
                {
                    throw new InvalidOperationException("Le personnage n'est pas dans la zone externe ..");
                }
            }
            else
            {
                throw new InvalidCastException("Le comportement ne correspond pas à l'état du personnage !");
            }
        }
Ejemplo n.º 2
0
        public override void Execution()
        {
            if (EtatPersonnage is EtatClientVaCommander)
            {
                // Décrémenter points de vie
                // S'il est dans la zone externe, il doit atteindre le point de rassemblement

                if (PersonnageClient.PointsDeVie > 0)
                {
                    --PersonnageClient.PointsDeVie;
                }
                if (ZoneActuelle.nom == "Zone Externe")
                {
                    var coor = PersonnageClient.RentrerDansLeRestaurant(ZoneActuelle);
                    //if (coor != null && coor.EstValide())
                    //{
                    //    Console.WriteLine("Déplacement du personnage de " + PersonnageClient.Case + "  vers " + coor + ", direction pt de Rassemblement");
                    //    PersonnageClient.Case = coor;
                    //}
                }
                else
                {
                    throw new InvalidOperationException("Le personnage n'est pas dans la zone externe ..");
                }
            }
            else
            {
                throw new InvalidCastException("Le comportement ne correspond pas à l'état du personnage !");
            }
        }