コード例 #1
0
 public void LvlUp()
 {
     if (hero.Level < hero.MaxLevel)
     {
         BaseHero oldHero = (BaseHero)hero.Clone();
         hero.Level           += 1;
         hero.NeededExperience = (hero.NeededExperience * 3) / 2 + 1;
         LvlUpView lvlUpView = new LvlUpView();
         if (hero is Warrior)
         {
             hero.Damage += 8;
             hero.Health += 90;
             hero.Armour += 10;
         }
         else if (hero is Archer)
         {
             hero.Damage += 10;
             hero.Health += 50;
             hero.Armour += 7;
         }
         else if (hero is Wizard)
         {
             hero.Damage += 12;
             hero.Health += 35;
             hero.Armour += 5;
         }
         lvlUpView.ShowNewStats(oldHero, hero);
     }
 }
コード例 #2
0
        public bool FightEnemy(BaseEnemy enemy)
        {
            var fightHero = _hero.Clone();

            BaseEnemy baseEnemy = (BaseEnemy)enemy.Clone();
            double    heroDamage;
            double    enemyDamage;
            Random    rnd     = new Random();
            bool      heroWin = false;

            for (; ;)
            {
                int whoHit = rnd.Next(0, 100);
                if (whoHit < 50)
                {
                    heroDamage        = CalculationClearDamage((BaseCharacter)fightHero, baseEnemy);
                    baseEnemy.Health -= (int)heroDamage;
                    if (baseEnemy.Health <= 0)
                    {
                        heroWin = true;
                        break;
                    }
                }
                else
                {
                    enemyDamage = CalculationClearDamage(baseEnemy, (BaseCharacter)fightHero);
                    ((BaseCharacter)fightHero).Health -= (int)enemyDamage;
                    if (((BaseCharacter)fightHero).Health <= 0)
                    {
                        break;
                    }
                }
            }
            if (heroWin)
            {
                enemiesView.ShowWin(baseEnemy);
                _hero.OwnExperience += baseEnemy.OwnExperience;
                if (_hero.OwnExperience >= _hero.NeededExperience)
                {
                    MyEvent myEvent = new MyEvent();
                    myEvent.UserEvent += _heroService.LvlUp;
                    myEvent.OnUserEvent();
                }
            }
            else
            {
                enemiesView.ShowLose(baseEnemy);
            }
            return(heroWin);
        }