public bool SinirKontrol(int x, Asker b)           // Askerlerin hareketi sırasında harita sinirlarindan cıkıp cıkmadıklarını kontrol eden metot.
 {
     if (x == 1 && b is Er && b.Koordinat.yko == 0) // Er sınıra ulasmasına ragmen yukarı gıtmek ısterse bir sag kareye gitmeli.
     {
         if (x == 1 && b is Er && b.Koordinat.xko != 15)
         {
             b.Koordinat.xko = b.Koordinat.xko + 1;
         }
         return(false);
     }
     else if (x == 2 && b is Er && b.Koordinat.yko == 15) // Er sınıra ulasmasına ragmen asagı gıtmek ısterse bir sag kareye gitmeli.
     {
         if (x == 2 && b is Er && b.Koordinat.xko != 0)
         {
             b.Koordinat.xko = b.Koordinat.xko - 1;
         }
         return(false);
     }
     else if (x == 1 && b.Koordinat.yko == 0 && (b is Yuzbasi || b is Tegmen)) // Tegmen veya yuzbası ust sınırda olmasına ragmen yukarı gıtmek ısterse
     {
         b.Bekle();
         return(false);
     }
     else if (x == 2 && b.Koordinat.yko == 15 && (b is Yuzbasi || b is Tegmen)) // Tegmen veya yuzbası alt sınırda olmasına ragmen asagı gıtmek ısterse
     {
         b.Bekle();
         return(false);                       // Her bir durum kendine ozel oldugu ve saglanırsa false dondurup hareketet metodundan cıkıs yapmasını saglamak ıcın her bırıne return false yazdım. Eger hic bir if saglanmıyorsa en alttan true dondurecebılecek.
     }
     else if (x == 3 && b.Koordinat.xko == 0) // Sola gitmek isteyip sınıra takılma durumu
     {
         b.Bekle();
         return(false);
     }
     else if (x == 4 && b.Koordinat.xko == 15) // Saga gitmek isteyip sınırda takılma durumu
     {
         b.Bekle();
         return(false);
     }
     else if ((x == 5) && (b.Koordinat.xko == 0 || b.Koordinat.yko == 0) && b is Yuzbasi) // Sol en ust kosede ve sol carpraza gıtmek ısteme durumu
     {
         b.Bekle();
         return(false);
     }
     else if ((x == 6) && (b.Koordinat.xko == 15 || b.Koordinat.yko == 0) && b is Yuzbasi)  // Sag en ust kosede ve sag carpraza gıtme durumu
     {
         b.Bekle();
         return(false);
     }
     else if ((x == 7) && (b.Koordinat.xko == 15 || b.Koordinat.yko == 15) && b is Yuzbasi)  // Sag en alt kosede ve sag alt carpraza gitme durumu
     {
         b.Bekle();
         return(false);
     }
     else if ((x == 8) && (b.Koordinat.xko == 0 || b.Koordinat.yko == 15) && b is Yuzbasi)  // Sol en alt kosede olup sol alta gıtme ıstegı
     {
         b.Bekle();
         return(false);
     }
     return(true);
 }
Example #2
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);
            }
        }