コード例 #1
0
    public void FirePhoton(Galaxy wg)
    {
        Klingon enemy = (Klingon)wg.Variable("target");

        if (_torpedoStrength > 0)
        {
            int distance = enemy.Distance();
            if ((Rnd(4) + ((distance / 500) + 1) > 7))
            {
                wg.WriteLine("Torpedo missed Klingon at " + distance + " sectors...");
            }
            else
            {
                //int damage = 800 + Rnd(50);
                int damage = CalculatePhotonDamage(800, 50);

                wg.WriteLine("Photons hit Klingon at " + distance + " sectors with " + damage + " units");
                if (damage < enemy.GetEnergy())
                {
                    enemy.SetEnergy(enemy.GetEnergy() - damage);
                    wg.WriteLine("Klingon has " + enemy.GetEnergy() + " remaining");
                }
                else
                {
                    wg.WriteLine("Klingon destroyed!");
                    enemy.Delete();
                }
            }
            _torpedoStrength -= 1;
        }
        else
        {
            wg.WriteLine("No more photon torpedoes!");
        }
    }
コード例 #2
0
ファイル: Weapon.cs プロジェクト: sean-stevens/csd
        public void Fire(Galaxy wg)
        {
            Galaxy = wg;
            Klingon enemy = wg.Target;

            if (HasRemainingAmmo())
            {
                int distance = enemy.Distance();

                if (Missed(distance))
                {
                    WriteMissedMessage(distance);
                }
                else
                {
                    int damage = GetDamage();
                    WriteHitMessage(distance, damage);
                    Hit(wg, damage, enemy);
                }

                DecreaseAmmo();
            }
            else
            {
                WriteNoAmmoMessage();
            }
        }
コード例 #3
0
    public void FireWeapon(Galaxy wg)
    {
        IWeapon myWeapon = null;

        if (wg.Parameter("command").Equals("phaser"))
        {
            /*
             * myWeapon = new Phaser( wg, e );
             * myWeapon.Fire();
             */

            FirePhaser(wg);
        }
        else if (wg.Parameter("command").Equals("photon"))
        {
            //FirePhoton(wg);
            Klingon enemy = (Klingon)wg.Variable("target");
            if (_torpedoStrength > 0)
            {
                myWeapon = new PhotonTorpedo(enemy, wg);
                myWeapon.Fire();

                _torpedoStrength -= 1;
            }
            else
            {
                wg.WriteLine("No more photon torpedoes!");
            }
        }
    }
コード例 #4
0
        static void Main(string[] args)
        {
            Hero Jason = new Hero("Jason", 3, 15);

            Ork Harvey = new Ork("Ork Harvey", 1, 5);
            Ork Ben    = new Ork("Ork Ben", 2, 8);

            Klingon Aaron = new Klingon("Klingon Aaron", 3, 12);
            Klingon Josh  = new Klingon("Klingon Josh", 5, 15);

            HarryPotter HarryPotter1 = new HarryPotter("Harry Potter gen.1", 7, 20, 2);
            HarryPotter HarryPotter2 = new HarryPotter("Harry Potter gen.2", 8, 20, 3);
            HarryPotter HarryPotter3 = new HarryPotter("Harry Potter gen.3", 10, 25, 4);

            Story.BeforeOrk();
            Battle.WithOrk(Jason, Harvey);
            Battle.WithOrk(Jason, Ben);

            Jason.LevelUp();

            Story.BeforeKlingon();
            Battle.WithKlingon(Jason, Aaron);
            Battle.WithKlingon(Jason, Josh);

            Jason.LevelUp();

            Story.BeforeHarryPotter();
            Battle.WithHarryPotter(Jason, HarryPotter1);
            Battle.WithHarryPotter(Jason, HarryPotter2);
            Battle.WithHarryPotter(Jason, HarryPotter3);

            Story.TheEnd();
        }
コード例 #5
0
ファイル: Weapon.cs プロジェクト: sean-stevens/csd
 protected void Hit(Galaxy wg, int damage, Klingon enemy)
 {
     if (damage < enemy.GetEnergy())
     {
         enemy.SetEnergy(enemy.GetEnergy() - damage);
         wg.WriteLine("Klingon has " + enemy.GetEnergy() + " remaining");
     }
     else
     {
         wg.WriteLine("Klingon destroyed!");
         enemy.Delete();
     }
 }
コード例 #6
0
 public static void WithKlingon(Hero hero, Klingon Klingon)
 {
     //ensures that both the player and the enemy are alive
     while (Klingon.health > 0 && hero.health > 0)
     {
         PrintTheStats(Klingon, hero);
         hero.YourTurn(hero.Choice(), Klingon);
         if (Klingon.health > 0)
         {
             Klingon.KlingonTurn(Klingon.EChoice(), hero);
             IsHeroDead(hero);
         }
     }
     Console.WriteLine("{0} was killed!", Klingon.name);
     Console.ReadLine();
     Console.Clear();
 }
コード例 #7
0
        private void ResolveHitOn(Klingon klingon, float perEnemyStrength, Quadrant quadrant)
        {
            var distance    = _enterprise.SectorCoordinates.GetDistanceTo(klingon.Sector);
            var hitStrength = (int)(perEnemyStrength / distance * (2 + _random.GetFloat()));

            if (klingon.TakeHit(hitStrength))
            {
                _output.WriteLine($"{hitStrength} unit hit on Klingon at sector {klingon.Sector}");
                _output.WriteLine(
                    klingon.Energy <= 0
                        ? quadrant.Remove(klingon)
                        : $"   (sensors show {klingon.Energy} units remaining)");
            }
            else
            {
                _output.WriteLine($"Sensors show no damage to enemy at {klingon.Sector}");
            }
        }
コード例 #8
0
    public void FirePhaser(Galaxy wg)
    {
        int     amount = int.Parse(wg.Parameter("amount"));
        Klingon enemy  = (Klingon)wg.Variable("target");

        if (_energyRemaining >= amount)
        {
            int distance = enemy.Distance();
            if (distance > 4000)
            {
                wg.WriteLine("Klingon out of range of phasers at " + distance + " sectors...");
            }
            else
            {
                int damage = amount - (((amount / 20) * distance / 200) + Rnd(200));
                if (damage < 1)
                {
                    damage = 1;
                }
                wg.WriteLine("Phasers hit Klingon at " + distance + " sectors with " + damage + " units");
                if (damage < enemy.GetEnergy())
                {
                    enemy.SetEnergy(enemy.GetEnergy() - damage);
                    wg.WriteLine("Klingon has " + enemy.GetEnergy() + " remaining");
                }
                else
                {
                    wg.WriteLine("Klingon destroyed!");
                    enemy.Delete();
                }
            }
            _energyRemaining -= amount;
        }
        else
        {
            wg.WriteLine("Insufficient energy to fire phasers!");
        }
    }
コード例 #9
0
 public void FireWeapon(Galaxy wg)
 {
     if (wg.Parameter("command").Equals("phaser"))
     {
         int     amount = int.Parse(wg.Parameter("amount"));
         Klingon enemy  = (Klingon)wg.Variable("target");
         if (e >= amount)
         {
             int distance = enemy.Distance();
             if (distance > 4000)
             {
                 wg.WriteLine("Klingon out of range of phasers at " + distance + " sectors...");
             }
             else
             {
                 int damage = amount - (((amount / 20) * distance / 200) + Rnd(200));
                 if (damage < 1)
                 {
                     damage = 1;
                 }
                 wg.WriteLine("Phasers hit Klingon at " + distance + " sectors with " + damage + " units");
                 if (damage < enemy.GetEnergy())
                 {
                     enemy.SetEnergy(enemy.GetEnergy() - damage);
                     wg.WriteLine("Klingon has " + enemy.GetEnergy() + " remaining");
                 }
                 else
                 {
                     wg.WriteLine("Klingon destroyed!");
                     enemy.Delete();
                 }
             }
             e -= amount;
         }
         else
         {
             wg.WriteLine("Insufficient energy to fire phasers!");
         }
     }
     else if (wg.Parameter("command").Equals("photon"))
     {
         Klingon enemy = (Klingon)wg.Variable("target");
         if (t > 0)
         {
             int distance = enemy.Distance();
             if ((Rnd(4) + ((distance / 500) + 1) > 7))
             {
                 wg.WriteLine("Torpedo missed Klingon at " + distance + " sectors...");
             }
             else
             {
                 int damage = 800 + Rnd(50);
                 wg.WriteLine("Photons hit Klingon at " + distance + " sectors with " + damage + " units");
                 if (damage < enemy.GetEnergy())
                 {
                     enemy.SetEnergy(enemy.GetEnergy() - damage);
                     wg.WriteLine("Klingon has " + enemy.GetEnergy() + " remaining");
                 }
                 else
                 {
                     wg.WriteLine("Klingon destroyed!");
                     enemy.Delete();
                 }
             }
             t -= 1;
         }
         else
         {
             wg.WriteLine("No more photon torpedoes!");
         }
     }
 }
コード例 #10
0
ファイル: PhotonTorpedo.cs プロジェクト: jboyer1111/StarTrek
 public PhotonTorpedo(Klingon inEnemy, Galaxy inWg)
 {
     enemy = inEnemy;
     wg    = inWg;
 }