Exemplo n.º 1
0
 public int EvaluateHealth(Action action)
 {
     switch (action.Type)
     {
         case ActionType.Fine:
             return
                 (int)
                     (ActionsReactions[action.Item].HealthPlus*action.Duration.TotalSeconds*2 -
                      ActionsReactions[action.Item].HealthMinus*action.Duration.TotalSeconds);
         case ActionType.Sad:
             return
                 (int)
                     (ActionsReactions[action.Item].HealthPlus*action.Duration.TotalSeconds/2 -
                      ActionsReactions[action.Item].HealthMinus*action.Duration.TotalSeconds);
         case ActionType.Neutral:
             return
                 (int)
                     (ActionsReactions[action.Item].HealthPlus*action.Duration.TotalSeconds -
                      ActionsReactions[action.Item].HealthMinus*action.Duration.TotalSeconds);
         case ActionType.Harmful:
             return
                 (int)
                     ((-1)*Math.Abs((ActionsReactions[action.Item].HealthPlus*action.Duration.TotalSeconds -
                       ActionsReactions[action.Item].HealthMinus*action.Duration.TotalSeconds*2)));
         default:
             return 0;
     }
 }
Exemplo n.º 2
0
 public StateDelta Evaluate(Action action)
 {
     int satiety = EvaluateSatiety(action);
     int happiness = EvaluateHappiness(action);
     int health = EvaluateHealth(action);
     return new StateDelta(happiness, health, satiety);
 }
Exemplo n.º 3
0
 public int EvaluateSatiety(Action action)
 {
     return 0;
 }
Exemplo n.º 4
0
        public EventReaction ReactForAction(Action action)
        {
            Console.Write("Animal is affected by {0} {1}... ", action.Type, action.Item);

            if (GetActionReaction(action) == EventReaction.Dead)
            {
                if (InternalState.RemainingLifeTime.TotalSeconds/InternalState.RemainingLifeTimeLimit.TotalSeconds < 0.5)
                {
                    return EventReaction.Dead;
                }
                Console.Write("Animal absconded from action");
            }

            int remainingLifeTime = (int) InternalState.RemainingLifeTime.TotalSeconds;

            InternalState.Change(ActionsEvaluator.Evaluate(action));

            if (InternalState.RemainingLifeTime.TotalSeconds <= 0)
            {
                return EventReaction.Dead;
            }

            Console.Write("{0} to life time",
                InternalState.RemainingLifeTime.TotalSeconds - remainingLifeTime);
            Console.WriteLine("\n\nAnimal's remaining life time: {0} sec.\n",
                InternalState.RemainingLifeTime.TotalSeconds);

            Thread.Sleep(action.Duration);
            return EventReaction.Alive;
        }
Exemplo n.º 5
0
 protected EventReaction GetActionReaction(Action action)
 {
     if (action.Type == ActionType.Killing)
     {
         return EventReaction.Dead;
     }
     return EventReaction.Alive;
 }