コード例 #1
0
ファイル: WeaponGenerator.cs プロジェクト: Vaysman/Nightmare
        public Weapon Generate(Character character)
        {
            var random = new Random();
            var weapon = new Weapon();

            var value = random.Next(5);
            switch (value) {
                case 0:
                    weapon.Mace = true;
                    break;
                case 1:
                    weapon.Sword = true;
                    break;
                case 2:
                    weapon.Dagger = true;
                    break;
                case 3:
                    weapon.Staff = true;
                    break;
                case 4:
                    weapon.Bow = true;
                    break;
                default:
                    throw new ArgumentException("Unreachable code");
            }

            value = (int)(random.Next(10)*character.Level);
            weapon.Attack = value;

            return weapon;
        }
コード例 #2
0
        /// <summary>
        /// При наступлении нового уровня, герою восполняются жизни
        /// </summary>
        /// <param name="character"></param>
        public void FillLife(Character character)
        {
            if (character == null) {
                throw new ArgumentNullException("character");
            }

            character.Player.Life = character.Player.MaxLife;
        }
コード例 #3
0
        /// <summary>
        /// Рассчет того, сколько получит герой за убийство монстра
        /// </summary>
        /// <param name="character"></param>
        /// <param name="enemy"></param>
        public void AddXp(Character character, Enemy enemy)
        {
            if (character.Level - enemy.Level > 10) {
                return;
            }

            if (character.Level - enemy.Level > -10) {
                return;
            }

            if (character.Level > enemy.Level) {
                character.Xp += enemy.Xp*Math.Abs(character.Level - enemy.Level)/10;
            }

            if (character.Level < enemy.Level) {
                character.Xp += enemy.Xp*(Math.Abs(character.Level - enemy.Level)/10 + 1);
            }
        }
コード例 #4
0
        /// <summary>
        /// Рассчет количества опыта получаемого за врага. 
        /// опыт начисляется в зависимости от того, какая разница уровней
        /// есть между сражающимися. Если один из них слишком крут, то опыта
        /// не будет.
        /// </summary>
        /// <param name="character"></param>
        /// <param name="beast"></param>
        public void AddXp(Character character, Beast beast)
        {
            if (beast == null) {
                throw new ArgumentNullException("beast");
            }

            if (character.Level - beast.Level > 10) {
                return;
            }

            if (character.Level - beast.Level > -10) {
                return;
            }

            if (character.Level > beast.Level) {
                character.Xp += beast.Xp*Math.Abs(character.Level - beast.Level)/10;
            }

            if (character.Level < beast.Level) {
                character.Xp += beast.Xp*(Math.Abs(character.Level - beast.Level)/10 + 1);
            }
        }
コード例 #5
0
 /// <summary>
 /// При наступлении нового уровня, метод восстанавливает выносливость у персонажа
 /// </summary>
 /// <param name="character"></param>
 public void FillStamina(Character character)
 {
     character.Player.Stamina = character.Player.MaxStamina;
 }
コード例 #6
0
ファイル: Form1.cs プロジェクト: Vaysman/Nightmare
        /// <summary>
        /// Создание новой игры, ввод и распределение параметров персонажа
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button14_Click(object sender, EventArgs e)
        {
            var newGame = new NewGame(this);
            newGame.Show();

            newGame.Closing += (o, args) => {
                character = new Character();
                character.Player = MainStatistic;

                textBox1.Text = character.Player.Stats[0].ToString();
                textBox2.Text = character.Player.Stats[1].ToString();
                textBox3.Text = character.Player.Stats[2].ToString();
                textBox4.Text = character.Player.Stats[3].ToString();
                textBox5.Text = character.Player.Stats[4].ToString();
                textBox6.Text = character.Player.Stats[5].ToString();
                textBox7.Text = character.Player.Stats[6].ToString();

                PlayerClass.Text = character.Player.Class;

                game = new Game();
                game.LevelUp(character, this);
            };
        }
コード例 #7
0
ファイル: Character.cs プロジェクト: Vaysman/Nightmare
 /// <summary>
 /// Пополнение жизни персонажу
 /// </summary>
 /// <param name="character"></param>
 public void FillLife(Character character)
 {
     character.Player.Life = character.Player.MaxLife;
 }
コード例 #8
0
ファイル: Game.cs プロジェクト: Vaysman/Nightmare
        /// <summary>
        /// Рассчет одного хода битвы 
        /// В зависимости от того, у кого круче уровень, будет по разному рассчитаны коэффициенты атаки и защиты,
        /// соответственно и урона. 
        /// Далее сравниваются атака и защита борющихся и в зависимости от этого опять же меняются коэффициенты. 
        /// </summary>
        /// <param name="character"></param>
        /// <param name="beast"></param>
        /// <param name="charDices"></param>
        /// <param name="beastDices"></param>
        public void Turn(Character character, Beast beast, List<int> charDices, List<int> beastDices)
        {
            if (character.Level > beast.Level) {
                if (charAttack.Count >= beastAttack.Count) {
                    for (var i = 0; i < charAttack.Count; i++) {
                        if (charAttack[i].Power > beastAttack[i].Defence) {
                            if (charDices.Count(j => j == 6) >= 1) {
                                beast.Life -= charAttack[i].Power - (int) (beastAttack[i].Defence*0.4m);
                            }
                            else {
                                if (charDices.Count(j => j == 5) >= 2) {
                                    beast.Life -= charAttack[i].Power - (int) (beastAttack[i].Defence*0.6m);
                                }
                                if (charDices.Count(j => j == 5) >= 1) {
                                    beast.Life -= charAttack[i].Power - (int) (beastAttack[i].Defence*0.8m);
                                }
                            }
                        }

                        if (charAttack[i].Power < beastAttack[i].Defence) {
                            if (charDices.Count(j => j == 6) >= 2) {
                                beast.Life -= charAttack[i].Power - (int) (beastAttack[i].Defence*0.5m);
                            }
                            else {
                                if (charDices.Count(j => j == 5) <= 0) {
                                    character.Player.Life -= charAttack[i].Power - (int) (beastAttack[i].Defence*0.8m);
                                }
                                if (charDices.Count(j => j == 5) < 2) {
                                    beast.Life -= charAttack[i].Power - (int) (beastAttack[i].Defence*0.4m);
                                }
                            }
                        }
                    }
                }
            }

            if (beast.Life <= 0) {
                new ExpierenceService().AddXp(character, beast);
            }
        }
コード例 #9
0
ファイル: Game.cs プロジェクト: Vaysman/Nightmare
        /// <summary>
        /// Игрок получает новый уровень. Задается количество очков для увеличения
        /// характеристик. Жизнь и выносливость растут согласно коэффициентам 
        /// класса персонажа
        /// </summary>
        /// <param name="character"></param>
        /// <param name="form1"></param>
        public void LevelUp(Character character, Form1 form1)
        {
            character.Player.LevelPoints = 5;
            character.Player.Life = character.Player.Life + character.Player.Life*(int) character.Player.life[character.Player.Class][0];
            character.Player.Stamina = character.Player.Stamina + character.Player.Life*(int) character.Player.life[character.Player.Class][1];

            form1.NewLevel();
        }
コード例 #10
0
ファイル: Game.cs プロジェクト: Vaysman/Nightmare
 /// <summary>
 /// Битва между персонажем и чудовищем
 /// </summary>
 /// <param name="character"></param>
 /// <param name="beast"></param>
 public void Fight(Character character, Beast beast)
 {
     charAttack = character.GetAttacks();
     beastAttack = beast.GetAttacks();
 }