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); }
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); } }