Beispiel #1
0
 public void Fire(Asker x)
 {
     x.hp = x.hp - rand.Next(0, 2);
     if (x.hp <= 0)
     {
         x.isalive = false;
         x.hp      = 0;
     }
 }
Beispiel #2
0
 public void Fire(Asker x)
 {
     x.hp = x.hp - rand.Next(0, 2); //random damage verme
     if (x.hp <= 0)
     {
         x.isalive = false;
         x.hp      = 0;
     }
 }
        public override void Fire()
        {
            List <Asker> Enemies = GetEnemies(Range);

            if (Enemies.Count > 0)
            {
                Asker RandomEnemy = Enemies[Rand.Next(Enemies.Count)];
                // 3 is HitPoints' count
                RandomEnemy.GotAttacked(this, HitPoints[Rand.Next(3)]);
            }
        }
        //askerleri 2 boyutlu harita dizisine yerleştirme

        public void askerYerlestir(Asker asker, Asker asker2, Array harita, int index)
        {
            int[] temp = new int[2];


            bolge.harita[x, y] = asker;
            temp[0]            = x; temp[1] = y;
            asker.Koordinat    = temp;

            bolge.harita[x2, y] = asker2;
            temp[0]             = x2; temp[1] = y;
            asker2.Koordinat    = temp;

            y++;

            trytry();
        }
Beispiel #5
0
 public void Walk(Asker x)
 {
     if (x.Koordinat.x + 1 >= 15 || x.Koordinat.y + 1 >= 15 || x.Koordinat.x - 1 <= 0 || x.Koordinat.y - 1 <= 0) //sınır kontrol farklı saçma bir bakış açısı
     {
         x.Koordinat.x -= 1;
         x.Koordinat.y -= 1;
     }
     else
     {
         x.Koordinat.x += 1;
         x.Koordinat.y += 1;
     }
     x.Koordinat.x = x.Koordinat.x + rand.Next(0, 2);
     if (x.hp <= 0)
     {
     }
 }
Beispiel #6
0
        // Returns true if MoveIn successful
        // Otherwise returns false
        // Handles MoveOut process of soldier and logs
        public bool MoveIn(Asker soldier)
        {
            if (this.Soldier != null)
            {
                return(false);
            }

            if (soldier.Location != null)
            {
                // MoveOut
                soldier.Location.MoveOut();
                Map.Log.WriteLine(String.Format("{0} from Team {1} changed location from {2} to {3}.",
                                                soldier, soldier.Team, soldier.Location, this));
            }
            this.Soldier     = soldier;
            soldier.Location = this;
            return(true);
        }
        public void GotAttacked(Asker Enemy, int Damage)
        {
            Health -= Damage;
            if (Health <= 0)
            {
                // Dead
                Location.Map.Log.WriteLine(String.Format("{0} from Team {1} attacked {2} from Team {3} and shot him dead at {4}!",
                                                         Enemy, Enemy.Team, this, Team, Location));

                Alive = false;
                Location.MoveOut();
                Team.RemoveDead(this);
                Team = null;
            }
            else
            {
                Location.Map.Log.WriteLine(String.Format("{0} from Team {1} attacked {2} from Team {3} and reduced his health by {4} to {5} at {6}.",
                                                         Enemy, Enemy.Team, this, Team, Damage, Health, Location));
            }
        }
        public List <Asker> GetEnemies(int Range)
        {
            List <Asker> Enemies = new List <Asker>();

            for (int x = Location.Coord.X - Range; x <= Location.Coord.X + Range; x++)
            {
                for (int y = Location.Coord.Y - Range; y < Location.Coord.Y + Range; y++)
                {
                    // Guard for off map locations
                    if (LocationValid(x, y))
                    {
                        Asker soldier = Location.Map.Mapping[x, y].Soldier;
                        if (soldier != null && Team.NotEquals(soldier.Team))
                        {
                            Enemies.Add(soldier);
                        }
                    }
                }
            }
            return(Enemies);
        }
Beispiel #9
0
 public override void AtesEt(Asker x)
 {
     rnd_number = rnd.NextDouble();
     if (rnd_number < 0.5)
     {
         x.Can -= 15;
         Console.Write("---> 15 hasar vurdu \n");
     }
     else if (rnd_number >= 0.5 && rnd_number < 0.8)
     {
         x.Can -= 25;
         Console.Write("---> 25 hasar vurdu \n");
     }
     else
     {
         x.Can -= 40;
         Console.Write("---> 40 hasar vurdu \n");
     }
     if (x.Can <= 0)
     {
         x.oldur();
     }
 }
Beispiel #10
0
        public void İşlemYap(Asker asker, Takim takım1, Takim takım2, Bolge merkezBolge, StreamWriter streamWriter)
        {//30 ateş,60 hareket, 10 bekleme
            double işlem = rd.NextDouble();

            if (işlem < 0.3)
            {
                if (asker.hangiTakım == takım1.Birlik[0].hangiTakım)
                {
                    asker.AteşEt(BölgedekiDüşmanlar(asker, takım2, asker.Koordinat), streamWriter);
                }
                else
                {
                    asker.AteşEt(BölgedekiDüşmanlar(asker, takım1, asker.Koordinat), streamWriter);
                }
            }
            else if (işlem < 0.9)
            {
                asker.HareketEt(streamWriter);
            }
            else
            {
                asker.Bekle(streamWriter);
            }
        }
Beispiel #11
0
 public override void AtesEt(Asker x)
 {
     rnd_number = rnd.NextDouble();
     //if(this.Koordinat.X-)
     if (rnd_number < 0.5)
     {
         x.Can -= 5;
         Console.Write(" --->5 hasar vurdu \n");
     }
     else if (rnd_number >= 0.5 && rnd_number < 0.8)
     {
         x.Can -= 10;
         Console.Write("--->10 hasar vurdu \n");
     }
     else
     {
         x.Can -= 15;
         Console.Write("--->15 hasar vurdu \n");
     }
     if (x.Can <= 0)
     {
         x.oldur();
     }
 }
Beispiel #12
0
 public abstract void AtesEt(Asker x);
Beispiel #13
0
        public void Doldur(Asker asker)
        {
            this.asker = asker;

            this.dolu = true;
        }
        public void AtesKontrol(Asker c) // Herhangi bir asker ates ettiginde menzilinde biri olup olmadıgını kontrol eden metot.
        {
            if (c is Er && c.takim == 1) // Birinci takımdaki erlerin ates ettigi bolgede dusman askeri var mı kontrolu
            {
                foreach (Asker b in team.Birlik2)
                {
                    if ((Math.Abs(c.Koordinat.xko - b.Koordinat.xko) == 1) && Math.Abs(c.Koordinat.yko - b.Koordinat.yko) == 1 && b.saglık != 0)
                    {
                        b.saglık = b.saglık - c.damage;
                        if (b.saglık <= 0)
                        {
                            b.hayatta = false;
                            b.saglık  = 0;
                        }
                    }
                }
            }
            if (c is Er && c.takim == 2) // ikinci takimdaki erlerin ates ettıgı bolgede dusman askeri var mı kontrolu
            {
                foreach (Asker b in team.Birlik)
                {
                    if (Math.Abs(c.Koordinat.xko - b.Koordinat.xko) == 1 && Math.Abs(c.Koordinat.yko - b.Koordinat.yko) == 1 && b.saglık != 0)
                    {
                        b.saglık = b.saglık - c.damage;
                        if (b.saglık <= 0)
                        {
                            b.hayatta = false;
                            b.saglık  = 0;
                        }
                    }
                }
            }
            if (c is Tegmen && c.takim == 1) // Birinci takimdaki tegmenin ates ettıgı yerde dusman askeri var mı kontrolu
            {
                foreach (Asker b in team.Birlik2)
                {
                    if (Math.Abs(c.Koordinat.xko - b.Koordinat.xko) <= 2 && Math.Abs(c.Koordinat.yko - b.Koordinat.yko) <= 2 && b.saglık != 0)
                    {
                        b.saglık = b.saglık - c.damage;
                        if (b.saglık <= 0)
                        {
                            b.hayatta = false;
                            b.saglık  = 0;
                        }
                    }
                }
            }
            if (c is Tegmen && c.takim == 2) // İkinci takimdaki tegmenin ates ettıgı yerde dusman askeri var mı kontrolu
            {
                foreach (Asker b in team.Birlik)
                {
                    if (Math.Abs(c.Koordinat.xko - b.Koordinat.xko) <= 2 && Math.Abs(c.Koordinat.yko - b.Koordinat.yko) <= 2 && b.saglık != 0)
                    {
                        b.saglık = b.saglık - c.damage;
                        if (b.saglık <= 0)
                        {
                            b.hayatta = false;
                            b.saglık  = 0;
                        }
                    }
                }
            }
            if (c is Yuzbasi && c.takim == 1) // Birinci takımdaki yuzbasının ates ettigi alanda dusman askeri var mı kontrolu

            {
                foreach (Asker b in team.Birlik)
                {
                    if (Math.Abs(c.Koordinat.xko - b.Koordinat.xko) <= 3 && Math.Abs(c.Koordinat.yko - b.Koordinat.yko) <= 3 && b.saglık != 0)
                    {
                        b.saglık = b.saglık - c.damage;
                        if (b.saglık <= 0)
                        {
                            b.hayatta = false;
                            b.saglık  = 0;
                        }
                    }
                }
            }
            if (c is Yuzbasi && c.takim == 2) // ikinci takimdaki yuzbasının ates ettigi bolgede dusman askeri  var mı kontrolu
            {
                foreach (Asker b in team.Birlik2)
                {
                    if (Math.Abs(c.Koordinat.xko - b.Koordinat.xko) <= 3 && Math.Abs(c.Koordinat.yko - b.Koordinat.yko) <= 3 && b.saglık != 0)
                    {
                        b.saglık = b.saglık - c.damage;
                        if (b.saglık <= 0)
                        {
                            b.hayatta = false;
                            b.saglık  = 0;
                        }
                    }
                }
            }
        }
 public bool HareketKontrol(int x, Asker a) // Askerlerin hareketi sırasında hareket etmek istedikleri yerin uygunlugunu kontrol eden metot.
 {
     if (x == 1)                            // Eger gelen deger 1 ıse yukarısı bos mu dıye kontrol edecek.
     {
         foreach (Asker b in team.Birlik)
         {
             if (a.Koordinat.yko - 1 == b.Koordinat.yko && b.saglık != 0)
             {
                 check = false; // Gıtmek ıstenen yerın dolu oldugu anlamına gelıyor.
                 return(check);
             }
             else
             {
                 check = true; // Gıtmek ıstenen yerın bos oldugu anlamına gelıyor.
             }
         }
         foreach (Asker b in team.Birlik2)
         {
             if (a.Koordinat.yko - 1 == b.Koordinat.yko && b.saglık != 0)
             {
                 check = false;
                 return(check);
             }
             else
             {
                 check = true;
             }
         }
         return(check);
     }
     else if (x == 2) // Asagı gıtme islemi
     {
         foreach (Asker b in team.Birlik)
         {
             if (a.Koordinat.yko + 1 == b.Koordinat.yko && b.saglık != 0)
             {
                 check = false;
                 return(check);
             }
             else
             {
                 check = true;
             }
         }
         foreach (Asker b in team.Birlik2)
         {
             if (a.Koordinat.yko + 1 == b.Koordinat.yko && b.saglık != 0)
             {
                 check = false;
                 return(check);
             }
             else
             {
                 check = true;
             }
         }
         return(check);
     }
     else if (x == 3) // Sola gitme islemi
     {
         foreach (Asker b in team.Birlik)
         {
             if (a.Koordinat.xko - 1 == b.Koordinat.xko && b.saglık != 0)
             {
                 check = false;
                 return(check);
             }
             else
             {
                 check = true;
             }
         }
         foreach (Asker b in team.Birlik2)
         {
             if (a.Koordinat.yko - 1 == b.Koordinat.xko && b.saglık != 0)
             {
                 check = false;
                 return(check);
             }
             else
             {
                 check = true;
             }
         }
         return(check);
     }
     else if (x == 4) // Saga gitme islemi
     {
         foreach (Asker b in team.Birlik)
         {
             if (a.Koordinat.xko + 1 == b.Koordinat.xko && b.saglık != 0)
             {
                 check = false;
                 return(check);
             }
             else
             {
                 check = true;
             }
         }
         foreach (Asker b in team.Birlik2)
         {
             if (a.Koordinat.xko + 1 == b.Koordinat.xko && b.saglık != 0)
             {
                 check = false;
                 return(check);
             }
             else
             {
                 check = true;
             }
         }
         return(check);
     }
     else if (x == 5) // Yukarı - sola gitme durumu
     {
         foreach (Asker b in team.Birlik)
         {
             if (a.Koordinat.xko - 1 == b.Koordinat.xko && a.Koordinat.yko - 1 == b.Koordinat.yko && b.saglık != 0)
             {
                 check = false;
                 return(check);
             }
             else
             {
                 check = true;
             }
         }
         foreach (Asker b in team.Birlik2)
         {
             if (a.Koordinat.xko - 1 == b.Koordinat.xko && a.Koordinat.yko - 1 == b.Koordinat.yko && b.saglık != 0)
             {
                 check = false;
                 return(check);
             }
             else
             {
                 check = true;
             }
         }
         return(check);
     }
     else if (x == 6) // Yukarı - saga gitme durumu
     {
         foreach (Asker b in team.Birlik)
         {
             if (a.Koordinat.xko + 1 == b.Koordinat.xko && a.Koordinat.yko - 1 == b.Koordinat.yko && b.saglık != 0)
             {
                 check = false;
                 return(check);
             }
             else
             {
                 check = true;
             }
         }
         foreach (Asker b in team.Birlik2)
         {
             if (a.Koordinat.xko + 1 == b.Koordinat.xko && a.Koordinat.yko - 1 == b.Koordinat.yko && b.saglık != 0)
             {
                 check = false;
                 return(check);
             }
             else
             {
                 check = true;
             }
         }
         return(check);
     }
     else if (x == 7) // Asagı - saga gitme islemi
     {
         foreach (Asker b in team.Birlik)
         {
             if (a.Koordinat.xko + 1 == b.Koordinat.xko && a.Koordinat.yko + 1 == b.Koordinat.yko && b.saglık != 0)
             {
                 check = false;
                 return(check);
             }
             else
             {
                 check = true;
             }
         }
         foreach (Asker b in team.Birlik2)
         {
             if (a.Koordinat.xko + 1 == b.Koordinat.xko && a.Koordinat.yko + 1 == b.Koordinat.yko && b.saglık != 0)
             {
                 check = false;
                 return(check);
             }
             else
             {
                 check = true;
             }
         }
         return(check);
     }
     else if (x == 8) // Asagı - sola gitme
     {
         foreach (Asker b in team.Birlik)
         {
             if (a.Koordinat.xko - 1 == b.Koordinat.xko && a.Koordinat.yko + 1 == b.Koordinat.yko && b.saglık != 0)
             {
                 check = false;
                 return(check);
             }
             else
             {
                 check = true;
             }
         }
         foreach (Asker b in team.Birlik2)
         {
             if (a.Koordinat.xko - 1 == b.Koordinat.xko && a.Koordinat.yko + 1 == b.Koordinat.yko && b.saglık != 0)
             {
                 check = false;
                 return(check);
             }
             else
             {
                 check = true;
             }
         }
         return(check);
     }
     return(true);
 }
        static void Main(string[] args)
        {
            Random rnd = new Random();

            // Meydan oluşturuldu.
            Ermeydani meydan = new Ermeydani();

            for (int i = 0; i < 16; i++)
            {
                for (int j = 0; j < 16; j++)
                {
                    meydan.Harita[i, j] = new Bolge {
                        x = i, y = j, Asker = null
                    };
                }
            }

            #region TAKIMLAR
            // Takımlar oluşturuldu. (Eşit, Adeletli İki Takım)
            Takim   maviTakim  = new Takim();
            Asker[] maviBirlik = new Asker[7];
            maviTakim.Ad = "Mavi Takım";
            maviTakim.BaslangicBolgesi = new Bolge {
                x = 0, y = 0
            };
            maviTakim.BitisBolgesi = new Bolge {
                x = 4, y = 4
            };
            for (int i = 0; i < maviBirlik.Length; i++)
            {
                bool state = false;
                while (!state)
                {
                    int _x = rnd.Next(maviTakim.BaslangicBolgesi.x, maviTakim.BitisBolgesi.x + 1);
                    int _y = rnd.Next(maviTakim.BaslangicBolgesi.x, maviTakim.BitisBolgesi.y + 1);

                    if (meydan.Harita[_x, _y].Asker == null)
                    {
                        if (i < 4)
                        {
                            Er _er = new Er();
                            _er.Takim     = maviTakim;
                            _er.Ermeydani = meydan;
                            _er.Ad        = " ME" + i + " ";
                            _er.Koordinat = new Bolge {
                                x = _x, y = _y, Asker = _er
                            };
                            meydan.Harita[_x, _y].Asker = _er;

                            maviBirlik[i] = _er;
                        }
                        else if (i >= 4 && i < 6)
                        {
                            Tegmen _tegmen = new Tegmen();
                            _tegmen.Takim     = maviTakim;
                            _tegmen.Ermeydani = meydan;
                            _tegmen.Ad        = " MT" + i + " ";
                            _tegmen.Koordinat = new Bolge {
                                x = _x, y = _y, Asker = _tegmen
                            };
                            meydan.Harita[_x, _y].Asker = _tegmen;
                            maviBirlik[i] = _tegmen;
                        }
                        else
                        {
                            Yuzbasi _yuzbasi = new Yuzbasi();
                            _yuzbasi.Takim     = maviTakim;
                            _yuzbasi.Ermeydani = meydan;
                            _yuzbasi.Ad        = " MY" + i + " ";
                            _yuzbasi.Koordinat = new Bolge {
                                x = _x, y = _y, Asker = _yuzbasi
                            };
                            meydan.Harita[_x, _y].Asker = _yuzbasi;
                            maviBirlik[i] = _yuzbasi;
                        }
                        state = true;
                    }
                }
            }
            maviTakim.Birlik = maviBirlik;

            Takim   kirmiziTakim  = new Takim();
            Asker[] kirmiziBirlik = new Asker[7];
            kirmiziTakim.Ad = "Kırmızı Takım";
            kirmiziTakim.BaslangicBolgesi = new Bolge {
                x = 11, y = 11
            };
            kirmiziTakim.BitisBolgesi = new Bolge {
                x = 15, y = 15
            };
            for (int i = 0; i < kirmiziBirlik.Length; i++)
            {
                bool state = false;
                while (!state)
                {
                    int _x = rnd.Next(kirmiziTakim.BaslangicBolgesi.x, kirmiziTakim.BitisBolgesi.x + 1);
                    int _y = rnd.Next(kirmiziTakim.BaslangicBolgesi.y, kirmiziTakim.BitisBolgesi.y + 1);

                    if (meydan.Harita[_x, _y].Asker == null)
                    {
                        if (i < 4)
                        {
                            Er _er = new Er();
                            _er.Takim     = kirmiziTakim;
                            _er.Ermeydani = meydan;
                            _er.Ad        = " KE" + i + " ";
                            _er.Koordinat = new Bolge {
                                x = _x, y = _y, Asker = _er
                            };
                            meydan.Harita[_x, _y].Asker = _er;
                            kirmiziBirlik[i]            = _er;
                        }
                        else if (i >= 4 && i < 6)
                        {
                            Tegmen _tegmen = new Tegmen();
                            _tegmen.Takim     = kirmiziTakim;
                            _tegmen.Ermeydani = meydan;
                            _tegmen.Ad        = " KT" + i + " ";
                            _tegmen.Koordinat = new Bolge {
                                x = _x, y = _y, Asker = _tegmen
                            };
                            meydan.Harita[_x, _y].Asker = _tegmen;
                            kirmiziBirlik[i]            = _tegmen;
                        }
                        else
                        {
                            Yuzbasi _yuzbasi = new Yuzbasi();
                            _yuzbasi.Takim     = kirmiziTakim;
                            _yuzbasi.Ermeydani = meydan;
                            _yuzbasi.Ad        = " KY" + i + " ";
                            _yuzbasi.Koordinat = new Bolge {
                                x = _x, y = _y, Asker = _yuzbasi
                            };
                            meydan.Harita[_x, _y].Asker = _yuzbasi;
                            kirmiziBirlik[i]            = _yuzbasi;
                        }
                        state = true;
                    }
                }
            }
            kirmiziTakim.Birlik = kirmiziBirlik;
            #endregion

            for (int i = 0; i < 16; i++)
            {
                for (int j = 0; j < 16; j++)
                {
                    if (meydan.Harita[i, j].Asker != null)
                    {
                        Console.Write(meydan.Harita[i, j].Asker.Ad);
                    }
                    else
                    {
                        Console.Write(" ___ ");
                    }
                }
                Console.WriteLine();
            }


            bool gameState = true;
            while (gameState)
            {
                // Mavi Takim Siradaki Asker
                bool maviState = false;
                while (!maviState)
                {
                    int maviTakimSiradakiAsker = rnd.Next(0, maviTakim.Birlik.Length);

                    if (maviTakim.Birlik[maviTakimSiradakiAsker].HayattaMi)
                    {
                        maviState = true;
                        int x = maviTakim.Birlik[maviTakimSiradakiAsker].KararVer(kirmiziTakim);

                        if (x == 0)
                        {
                            for (int i = 0; i < 16; i++)
                            {
                                for (int j = 0; j < 16; j++)
                                {
                                    if (meydan.Harita[i, j].Asker != null)
                                    {
                                        Console.Write(meydan.Harita[i, j].Asker.Ad);
                                    }
                                    else
                                    {
                                        Console.Write(" ___ ");
                                    }
                                }
                                Console.WriteLine();
                            }
                            Console.WriteLine("Press Enter");
                            Console.ReadKey();
                        }

                        if (kirmiziTakim.HayattakiAskerSayisi == 0)
                        {
                            GameOver();
                            gameState = false;
                        }
                    }
                }

                // Kirmizi Takim Siradaki Asker
                bool kirmiziState = false;
                while (!kirmiziState)
                {
                    int kirmiziTakimSiradakiAsker = rnd.Next(0, kirmiziTakim.Birlik.Length);

                    if (kirmiziTakim.Birlik[kirmiziTakimSiradakiAsker].HayattaMi)
                    {
                        kirmiziState = true;
                        int x = kirmiziTakim.Birlik[kirmiziTakimSiradakiAsker].KararVer(maviTakim);

                        if (x == 0)
                        {
                            for (int i = 0; i < 16; i++)
                            {
                                for (int j = 0; j < 16; j++)
                                {
                                    if (meydan.Harita[i, j].Asker != null)
                                    {
                                        Console.Write(meydan.Harita[i, j].Asker.Ad);
                                    }
                                    else
                                    {
                                        Console.Write(" ___ ");
                                    }
                                }
                                Console.WriteLine();
                            }

                            Console.WriteLine("Press Enter");
                            Console.ReadKey();
                        }

                        if (maviTakim.HayattakiAskerSayisi == 0)
                        {
                            GameOver();
                            gameState = false;
                        }
                    }
                }
            }
        }
Beispiel #17
0
 public void RemoveDead(Asker soldier)
 {
     Team.Remove(soldier);
 }
Beispiel #18
0
 // Beautify GetType
 // Converts Odev1.Type to Type
 public static string StripType(Asker obj)
 {
     return(obj.GetType().ToString().Split(new char[] { '.' })[1]);
 }