コード例 #1
0
        public CharactersInfo(Random rnd)
        {
            this.rnd = rnd;

            rndRanges = new List<double> (2);
            enemies = new List<Dictionary<Enemy, double>> (2);

            // ROOM TYPE: 0
            Enemy bigMonkey = new Enemy ("enemy_bigmonkey", "Big Monkey", "bigmonkey");
            bigMonkey.level0.maxHP = 120;
            bigMonkey.level0.attack = 40;
            bigMonkey.level0.xpReward = 12;
            bigMonkey.level0.speed = 20;
            //bigMonkey.useAnimations = true;

            Enemy monkey = new Enemy ("enemy_monkey", "Monkey", "monkey");
            monkey.level0.maxHP = 80;
            monkey.level0.attack = 20;
            monkey.level0.xpReward = 8;
            monkey.level0.speed = 20;

            Enemy bear = new Enemy ("enemy_bear", "Bear", "bear");
            bear.level0.maxHP = 400;
            bear.level0.attack = 50;
            bear.level0.xpReward = 25;
            bear.level0.speed = 12;

            enemies.Add (new Dictionary<Enemy, double> (3));
            enemies [0] [bear] = 0.2;
            enemies [0] [bigMonkey] = 0.6;
            enemies [0] [monkey] = 1.0;

            // ROOM TYPE: 1
            // TODO: special attacks, charge for mino, bullets for megamonkey
            Enemy mino = new Enemy ("enemy_mino", "Mino", "mino");
            mino.level0.maxHP = 1200;
            mino.level0.attack = 100;
            mino.level0.xpReward = 100;
            mino.level0.speed = 20;

            Enemy megaMonkey = new Enemy ("enemy_megamonkey", "Mega Monkey", "megamonkey");
            megaMonkey.level0.maxHP = 999;
            megaMonkey.level0.attack = 70;
            megaMonkey.level0.xpReward = 50;
            megaMonkey.level0.speed = 25;

            enemies.Add (new Dictionary<Enemy, double> (2));
            enemies [1] [mino] = 1;
            enemies [1] [megaMonkey] = 1;

            int count = 0;
            foreach (Dictionary<Enemy, double> enemiesList in enemies) {
                rndRanges.Add (0);
                foreach (KeyValuePair<Enemy, double> pair in enemiesList) {
                    rndRanges [count] += pair.Value;
                }
                count++;
            }
        }
コード例 #2
0
ファイル: Room.cs プロジェクト: Insane-96/StupidAivGame
 public void RemoveEnemy(Enemy enemy)
 {
     /*Character[] newEnemies = new Character[enemies.Length - 1];
     int y = 0;
     for (int i = 0; i < enemies.Length; i++) {
         if (enemies[i] != enemy)
             newEnemies [y++] = enemies [i];
     }
     enemies = newEnemies;*/
     enemies.Remove(enemy);
 }
コード例 #3
0
        public Enemy randomEnemy(int counter, int level, int roomType)
        {
            // enemy.randomMod: probability to spawn
            // range = SUM(randomMods)
            // sottraendo da un random(0f, range) ogni singolo randomMod
            //  e smettendo di sottrarre quando si arriva ad un numero negativo (o 0)
            //  si sceglie un nemico random
            // graficamente: |----Goblin----|-uGobl-|----Drowner---|F|
            double range = rnd.NextDouble () * rndRanges [roomType];
            Dictionary<Enemy, double>.Enumerator enemiesList = enemies [roomType].GetEnumerator ();
            Enemy enemyInfo = null;
            enemiesList.MoveNext ();
            for (int i = 0; range > 0.0 && i < enemies.Count; i++) {
                range -= enemiesList.Current.Value;
                enemyInfo = enemiesList.Current.Key;
                if ((i + 1) < enemies.Count)
                    enemiesList.MoveNext ();
            }

            //Character enemyInfo = enemies [rnd.Next (0, enemies.Length)];
            Enemy result = new Enemy (enemyInfo.name + letters [counter - 1 % letters.Length], enemyInfo.formattedName, enemyInfo.characterName);
            Level level0 = enemyInfo.level0.Clone ();
            result.useAnimations = enemyInfo.useAnimations;
            result.level0 = level0;
            result.LevelCheck ();
            result.xp = result.levelManager.levelUpTable [level].neededXP;
            result.LevelCheck ();
            return result;
        }