ГСЧ стрельба - не могу понять одну вещь
Привет. Моя идея-это 2 obejcts, стреляющие друг против друга. А когда у кого-то будет 0 или меньше HP, программа должна перестать работать.
И я сделал это. Он работает, но есть одна вещь, которую я должен починить и не могу понять!
Мой код выглядит примерно так:
<pre>static void Main(string[] args) { int hp1 = 1200; int dps1 = 0; int dmg1 = 0; int hp2 = 1500; int dps2 = 0; int dmg2 = 0; Random tiger = new Random(); Random mause = new Random(); while (hp1 > dmg2 || hp2 > dmg1) { dps1 = tiger.Next(150, 300); Console.WriteLine(dps1 + " shooted to Mause."); dmg1 = dps1 + dmg1; dps2 = mause.Next(130, 350); Console.WriteLine(dps2 + " shooted to Tiger."); dmg2 = dps2 + dmg2; if (dmg2 > hp1) { Console.WriteLine("Mause won!"); } else if (dmg1 >hp2) { Console.WriteLine("Tiger won!"); } } Console.ReadKey(); }
Когда я запускаю это, все в порядке. Но в конце концов - выход такой:
225 shooted to Mause. 247 shooted to Tiger. 238 shooted to Mause. 277 shooted to Tiger. Mause won! 227 shooted to Mause. 150 shooted to Tiger. Mause won!
Почему он всегда пишет, что Мауз выиграл 2 раза? Когда dmg2 выше, чем hp1, он должен завершить программу. Почему есть следующие побеги и победитель написан дважды?
Что я уже пробовал:
Я немного разбираюсь в ГСЧ, но понятия не имею, что я здесь делаю не так. Есть идеи?