Beispiel #1
0
        public Citizen()
        {
            SteeringBehaviors = new SteeringBehaviors(this, enemy);
            _personTexture = new AnimatedTexture(new Vector2D(16,16), 0, 1, 0);
            Mass = 0.1f;
            double rotation = VectorHelper.RandFloat()*(Math.PI*2);
            Heading = new Vector2D((float)Math.Sin(rotation), (float)-Math.Cos(rotation));
            MaxSpeed = 50f;
            MaxForce = 50f;
            Velocity = new Vector2D(0, 0);
            Side = Heading.Perp();
            Target = new Vector2D(0,0);
            Bradius = 16;
            Brain = new Think(this);
            Brain.Activate();
            Strength = 0;

            fm = new FuzzyModule();

            Fuzzy_Desirability = fm.CreateFLV("Desirability");
            FuzzySet Low_Desirability = Fuzzy_Desirability.AddLeftShoulderSet("Low", 0, 100, 200);
            FuzzySet Average_Desirability = Fuzzy_Desirability.AddTriangleSet("Average", 100, 200, 375);
            FuzzySet Very_Desirability = Fuzzy_Desirability.AddRightShoulderSet("Very", 200, 375, 500);

            Fuzzy_DistanceToTarget = fm.CreateFLV("Distance to Target");
            FuzzySet TargetClose = Fuzzy_DistanceToTarget.AddLeftShoulderSet("TargetClose", 0, 300, 800);
            FuzzySet TargetMedium = Fuzzy_DistanceToTarget.AddTriangleSet("TargetMedium", 300, 800, 1300);
            FuzzySet TargetFar = Fuzzy_DistanceToTarget.AddRightShoulderSet("TargetFar", 800, 1300, 1600);

            Fuzzy_Strength = fm.CreateFLV("Strength");
            FuzzySet Weak_Strength = Fuzzy_Strength.AddLeftShoulderSet("Weak", 0, 10000, 50000);
            FuzzySet Average_Strength = Fuzzy_Strength.AddTriangleSet("Average", 10000, 50000, 75000);
            FuzzySet Strong_Strength = Fuzzy_Strength.AddRightShoulderSet("Strong", 50000, 75000, 100000);

            fm.AddRule(new FuzzyAnd(Strong_Strength, TargetClose), Very_Desirability);
            fm.AddRule(new FuzzyAnd(Strong_Strength, TargetMedium), Average_Desirability);
            fm.AddRule(new FuzzyAnd(Strong_Strength, TargetFar), Low_Desirability);

            fm.AddRule(new FuzzyAnd(Weak_Strength, TargetClose), Low_Desirability);
            fm.AddRule(new FuzzyAnd(Weak_Strength, TargetMedium), Average_Desirability);
            fm.AddRule(new FuzzyAnd(Weak_Strength, TargetFar), Very_Desirability);

            fm.AddRule(new FuzzyAnd(Average_Strength, TargetMedium), Average_Desirability);
            fm.AddRule(new FuzzyAnd(Average_Strength, TargetClose), Average_Desirability);
            fm.AddRule(new FuzzyAnd(Average_Strength, TargetFar), Average_Desirability);
        }
Beispiel #2
0
 public Thug()
 {
     _personTexture = new AnimatedTexture(new Vector2D(16,16), 0, 1, 0);
     Heading = new Vector2D(0,0);
     Bradius = 16;
 }