コード例 #1
0
        public void CreateControllerTest_InputAlienWave()
        {
            //Erzeugung Testumgebung

            ControllerManager target = new ControllerManager();
            //Nicht benötigt
            object sender = null;


            BehaviourEnum          behaviour   = BehaviourEnum.BlockMovement;
            LinkedList <IGameItem> controllees = new LinkedList <IGameItem>();

            controllees.AddFirst(new Alien(Vector2.Zero, new Vector2(5, 5), 1, 1, new PlayerNormalWeapon(), 7));

            DifficultyLevel difficultyLevel = DifficultyLevel.EasyDifficulty;



            ControllerEventArgs desiredController = new ControllerEventArgs(behaviour, controllees, difficultyLevel); // TODO: Initialize to an appropriate value


            //Test start
            target.CreateController(sender, desiredController);


            //Testergebnis
            Assert.AreEqual(target.Controllers.Count, 1);
        }
コード例 #2
0
        public void CreateFormationTest()
        {
            GameItem.GameItemList = new LinkedList <IGameItem>();

            BehaviourEnum AI        = BehaviourEnum.BlockMovement;
            int           hitpoints = 10;
            Vector2       velocity  = new Vector2(40.0f, 40.0f);

            Vector2[] formation = FormationGenerator.ArrowFormation;
            int       damage    = 10;
            int       scoreGain = 10;

            LinkedList <IGameItem> wave = new LinkedList <IGameItem>();

            for (int i = 0; i < formation.Length; i++)
            {
                wave.AddLast(new Alien(formation[i], velocity, hitpoints, damage, GameItemConstants.AlienWeapon, scoreGain));
            }

            LinkedList <IGameItem> expected = wave;
            LinkedList <IGameItem> actual;

            actual = FormationGenerator.CreateFormation(AI, hitpoints, velocity, formation, damage, scoreGain);


            LinkedListNode <IGameItem> item2 = expected.First;

            for (LinkedListNode <IGameItem> item1 = actual.First; item1 != null; item1 = item1.Next)
            {
                Assert.AreEqual(item2.Value.BoundingVolume, item1.Value.BoundingVolume);
                Assert.AreEqual(item2.Value.Damage, item1.Value.Damage);
                Assert.AreEqual(item2.Value.Hitpoints, item1.Value.Hitpoints);
                Assert.AreEqual(item2.Value.IsAlive, item1.Value.IsAlive);
                Assert.AreEqual(item2.Value.Position, item1.Value.Position);
                Assert.AreEqual(item2.Value.Velocity, item1.Value.Velocity);
                Enemy item2Enemy = (Enemy)item2.Value;
                Enemy item1Enemy = (Enemy)item1.Value;
                Assert.AreEqual(item2Enemy.ScoreGain, item1Enemy.ScoreGain);
                Assert.ReferenceEquals(item2Enemy.Weapon, item1Enemy.Weapon);
                item2 = item2.Next;
            }

            GameItem.GameItemList = null;
        }
コード例 #3
0
        public IBehaviour Create(ProductBase productBase, BehaviourEnum behaviour)
        {
            switch (behaviour)
            {
            case BehaviourEnum.Payout:
                return(new PayoutWithdrawalBehaviour(productBase));

            case BehaviourEnum.FinalRebalancing:
                return(new FinalRebalancingBehaviour(productBase));

            case BehaviourEnum.AnnualRebalancing:
                return(new AnnualRebalancingBehaviour(productBase));

            case BehaviourEnum.FlexibleAllocationsRebalancing:
                return(new FlexibleAllocationRebalancingBehaviour(productBase));

            default:
                throw new BehaviourNotFoundException();
            }
        }
コード例 #4
0
        /// <summary>
        /// Erzeugt eine Liste von Gegner-Objekten aus einem Vector2-Array.
        /// </summary>
        /// <param name="AI">Art der Welle</param>
        /// <param name="hitpoints">Lebenspunkte</param>
        /// <param name="velocity">Geschwindigkeit</param>
        /// <param name="formation">Formation der Welle</param>
        /// <param name="damage">Kollisionsschaden</param>
        /// <param name="scoreGain">Abschusspunktzahl</param>
        /// <returns>Die generierte Liste von Gegnern</returns>
        public static LinkedList <IGameItem> CreateFormation(BehaviourEnum AI, int hitpoints, Vector2 velocity, Vector2[] formation, int damage, int scoreGain)
        {
            LinkedList <IGameItem> wave = new LinkedList <IGameItem>();

            if (AI.Equals(BehaviourEnum.MothershipMovement))
            {
                for (int i = 0; i < formation.Length; i++)
                {
                    wave.AddLast(new Mothership(formation[i], velocity, hitpoints, damage, GameItemConstants.MothershipWeapon, scoreGain));
                }
            }
            else
            {
                for (int i = 0; i < formation.Length; i++)
                {
                    wave.AddLast(new Alien(formation[i], velocity, hitpoints, damage, GameItemConstants.AlienWeapon, scoreGain));
                }
            }

            return(wave);
        }
コード例 #5
0
        /// <summary>
        /// Erzeugt eine neue Welle und ruft danach das Event "WaveGenerated" auf, um dem Controller die gewünschten Controller-Eigenschaften mitzuteilen.
        /// </summary>
        /// <remarks>Dem Event "WaveGenerated" werden die gewünschte Controller-AI, die erstellte Liste an Gegnern und das Schwierigkeitsgrad-Objekt übergeben.</remarks>
        /// <param name="AI">gewünschtes Verhalten des Controllers</param>
        /// <param name="formation">gewünschte Formation der Welle</param>
        /// <param name="difficultyLevel">gewünschter Schwierigkeitsgrad</param>
        /// <returns>Eine Liste von Gegnern, die die aktuelle Welle darstellen</returns>
        public static LinkedList <IGameItem> CreateWave(BehaviourEnum AI, Vector2[] formation, DifficultyLevel difficultyLevel)
        {
            int     hitpoints;
            Vector2 velocity;
            int     damage;
            int     scoreGain;
            LinkedList <IGameItem> wave = null;

            if (AI.Equals(BehaviourEnum.MothershipMovement))
            {
                hitpoints  = (int)(GameItemConstants.MothershipHitpoints * difficultyLevel.HitpointsMultiplier);
                velocity.X = GameItemConstants.MothershipVelocity.X * difficultyLevel.VelocityMultiplier.X;
                velocity.Y = GameItemConstants.MothershipVelocity.Y * difficultyLevel.VelocityMultiplier.Y;
                damage     = (int)(GameItemConstants.MothershipDamage * difficultyLevel.DamageMultiplier);
                scoreGain  = (int)(GameItemConstants.MothershipScoreGain * difficultyLevel.ScoreGainMultiplier);

                wave = FormationGenerator.CreateFormation(BehaviourEnum.MothershipMovement, hitpoints, velocity, formation, damage, scoreGain);
            }
            else
            {
                hitpoints  = (int)(GameItemConstants.AlienHitpoints * difficultyLevel.HitpointsMultiplier);
                velocity.X = GameItemConstants.AlienVelocity.X * difficultyLevel.VelocityMultiplier.X;
                velocity.Y = GameItemConstants.AlienVelocity.Y * difficultyLevel.VelocityMultiplier.Y;
                damage     = (int)(GameItemConstants.AlienDamage * difficultyLevel.DamageMultiplier);
                scoreGain  = (int)(GameItemConstants.AlienScoreGain * difficultyLevel.ScoreGainMultiplier);

                wave = FormationGenerator.CreateFormation(BehaviourEnum.BlockMovement, hitpoints, velocity, formation, damage, scoreGain);
            }

            if (WaveGenerated != null)
            {
                WaveGenerated(null, new ControllerEventArgs(AI, wave, difficultyLevel));
            }

            return(wave);
        }
コード例 #6
0
 public DefaultMethodBehaviourAttribute(BehaviourEnum behaviour)
 {
     Behaviour = behaviour;
 }
コード例 #7
0
 /// <summary>
 /// Konstruktor
 /// </summary>
 /// <param name="behaviour">gewünschtes Verhalten des Controllers</param>
 /// <param name="controllees">Liste der zu kontrollierenden Gegner</param>
 /// <param name="difficultyLevel">Schwierigkeitsgrad der Gegner</param>
 public ControllerEventArgs(BehaviourEnum behaviour, LinkedList <IGameItem> controllees, DifficultyLevel difficultyLevel)
 {
     this.Behaviour       = behaviour;
     this.Controllees     = controllees;
     this.DifficultyLevel = difficultyLevel;
 }
コード例 #8
0
 public SimpleBrain()
 {
     _behaviour = BehaviourEnum.NotSet;
     _target    = null;
 }