protected override void HaraketEt(Bolge _koordinat, double karar) { var oldBolge = Ermeydani.Harita[_koordinat.x, _koordinat.y] as Bolge; if (karar < 0.1) { // aşağı ilerle _koordinat.x++; var bolge = Ermeydani.Harita[_koordinat.x, _koordinat.y] as Bolge; if (bolge.Asker == null) { Koordinat.x++; bolge.Asker = this; oldBolge.Asker = null; } } else if (karar >= 0.1 && karar < 0.3) { // yukarı ilerle _koordinat.x--; var bolge = Ermeydani.Harita[_koordinat.x, _koordinat.y] as Bolge; if (bolge.Asker == null) { Koordinat.x--; bolge.Asker = this; oldBolge.Asker = null; } } Console.WriteLine($"{Ad} Er Harket Ediyor."); }
private void TakimiYarat() { int k = 0; int[] askerRütbeleri = new int[3]; askerRütbeleri[0] = random.Next(0, 2); askerRütbeleri[1] = random.Next(1, 3); askerRütbeleri[2] = 7 - askerRütbeleri[1] - askerRütbeleri[0]; for (int i = 0; i < askerRütbeleri.Length; i++) { for (int j = 0; j < askerRütbeleri[i]; j++) { Bolge a = tahta.BaslangıcNoktasıVer(baslangicBolge, 5); switch (i) { case 0: birlik[k] = new Yuzbasi(a, this, tahta); break; case 1: birlik[k] = new Tegmen(a, this, tahta); break; case 2: birlik[k] = new Er(a, this, tahta); break; } a.Doldur(birlik[k]); k++; } } }
public override void HareketEt(StreamWriter streamWriter) { string takım; takım = hangiTakım ? "Takım 1" : "Takım 2"; int gidilecekKonum = rd.Next(3); if (yaşıyorMu) { if (Koordinat.ReturnY() > 0 && gidilecekKonum == 0)//Yukarı git { Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY(), false); Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY() - 1, true); streamWriter.WriteLine(takım + "Teğmen'i yukarı hareket etti." + " Koordinatları" + Koordinat.ReturnX().ToString() + " " + Koordinat.ReturnY().ToString()); } else if (Koordinat.ReturnY() < 15 && gidilecekKonum == 1)//Aşağı git { Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY(), false); Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY() + 1, true); streamWriter.WriteLine(takım + "Teğmen'i aşağı hareket etti." + " Koordinatları" + Koordinat.ReturnX().ToString() + " " + Koordinat.ReturnY().ToString()); } else if (Koordinat.ReturnX() > 0 && gidilecekKonum == 2)//Sağa git { Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY(), false); Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY(), true); streamWriter.WriteLine(takım + "Teğmen'i sağa hareket etti." + " Koordinatları" + Koordinat.ReturnX().ToString() + " " + Koordinat.ReturnY().ToString()); } else if (Koordinat.ReturnX() < 15 && gidilecekKonum == 3)//Sola git { Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY(), false); Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY() + 1, true); streamWriter.WriteLine(takım + "Teğmen'i sola hareket etti." + " Koordinatları" + Koordinat.ReturnX().ToString() + " " + Koordinat.ReturnY().ToString()); } } }
public Asker() { can = 100; hayattami = true; koordinat = new Bolge(); koordinat.Bos = false; }
public override void HareketEt(StreamWriter streamWriter) { string takım; takım = hangiTakım ? "Takım 1" : "Takım 2"; bool yukarı = rd.Next(2) == 1 ? true : false; if (yaşıyorMu) { if (Koordinat.ReturnY() > 0 && yukarı == true)//Yukarı git { Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY(), false); Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY() - 1, true); streamWriter.WriteLine(takım + "Er'i yukarı hareket etti." + " Koordinatları" + Koordinat.ReturnX().ToString() + " " + Koordinat.ReturnY().ToString()); } else if (Koordinat.ReturnX() < 15 && yukarı == true)//Mümkün değilse sağa git. { Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY(), false); Koordinat = new Bolge(Koordinat.ReturnX() + 1, Koordinat.ReturnY(), true); streamWriter.WriteLine(takım + "Er'i sola hareket etti." + " Koordinatları" + Koordinat.ReturnX().ToString() + " " + Koordinat.ReturnY().ToString()); } if (Koordinat.ReturnY() < 15 && yukarı == false)//Aşağı git { Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY(), false); Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY() + 1, true); streamWriter.WriteLine(takım + "Er'i aşağı hareket etti." + " Koordinatları" + Koordinat.ReturnX().ToString() + " " + Koordinat.ReturnY().ToString()); } else if (Koordinat.ReturnX() > 0 && yukarı == false)//Mümkün değilse sola git. { Koordinat = new Bolge(Koordinat.ReturnX(), Koordinat.ReturnY(), false); Koordinat = new Bolge(Koordinat.ReturnX() + 1, Koordinat.ReturnY(), true); streamWriter.WriteLine(takım + "Er'i sağa hareket etti." + " Koordinatları" + Koordinat.ReturnX().ToString() + " " + Koordinat.ReturnY().ToString()); } } }
public void HaritaYerleşimi(Takim takım1, Takim takım2) { //Takım1 haritanın sol alt köşesinde, Takım2 ise sağ üst köşede yer alacak. bool tekrarOluştur = false; int x, y; for (int i = 0; i < 7; i++) { Bolge b1; Bolge b2; do { x = rd.Next(5); y = rd.Next(5); b1 = new Bolge(x + 10, y, true); b2 = new Bolge(x, y + 10, true); for (int j = 0; j < i; j++) { if ((takım1.Birlik[j].Koordinat.ReturnX() == b1.ReturnX() && takım1.Birlik[j].Koordinat.ReturnY() == b1.ReturnY()) || (takım2.Birlik[j].Koordinat.ReturnX() == b2.ReturnX() && takım2.Birlik[j].Koordinat.ReturnY() == b2.ReturnY())) { tekrarOluştur = true; break; } tekrarOluştur = false; } } while (tekrarOluştur); takım1.Birlik[i].Koordinat = b1; takım2.Birlik[i].Koordinat = b2; } }
public override void AtesEt() { ArrayList komsular = ermeydani.KomsuBolgeleriVer(1, koordinat); ArrayList Dusman = new ArrayList(); foreach (object b in komsular) { if (b is Bolge) { if (((Bolge)b).Dolumu) { if (Bolge.DusmanMi(this.koordinat, (Bolge)b)) { Dusman.Add(((Bolge)b)._Asker); } } } } if (Dusman.Count > 0) { int sec = random.Next(0, Dusman.Count); Asker temp = (Asker)Dusman[sec]; double prob = random.NextDouble(); int hasar = (prob < 0.3) ? 5 : ((prob < 0.6) ? 10 : 15); Console.WriteLine($"{this.Takim.Isim}:{this.GetType().Name}, {temp.Takim.Isim}:{temp.GetType().Name}'e ateş etti ve {hasar} hasar verdi. "); LogWriter.LogMessage($"{this.Takim.Isim}:{this.GetType().Name}, {temp.Takim.Isim}:{temp.GetType().Name}'e ateş etti ve {hasar} hasar verdi. "); temp.Hasar(hasar); } }
// ..... // public Tegmen(Bolge koor, String takim) { this.alive = true; this.Koordinat = koor; this.health = 100; this.typeid = "T"; this.takimid = takim; }
// ..... // public Yuzbasi(Bolge koor, String takim) { this.alive = true; this.Koordinat = koor; this.health = 100; this.typeid = "Y"; this.takimid = takim; }
public Takim(String isim, Bolge bas_bolge, Ermeydani tahta) { this.tahta = tahta; this.isim = isim; this.baslangicBolge = bas_bolge; random = new Random(); TakimiYarat(); }
public Asker(Bolge bolge, Takim takim, Ermeydani ermeydani) { this.koordinat = bolge; this.takim = takim; this.ermeydani = ermeydani; can = 100; canlimi = true; random = new Random(); }
public void FillIn() { for (int i = 0; i < 16; i++) { for (int j = 0; j < 16; j++) { harita[i, j] = new Bolge(i, j); } } }
public Ermeydani() { for (int i = 0; i < 16; i++) { for (int j = 0; j < 16; j++) { Harita[i, j] = new Bolge(i, j); } } }
public bool check; // Hareket sırasında hedef bolgenin dolu olup olmadıgını anlayabilmek icin kullanılan bir degisken. public Ermeydani(Takim t) // Bu for her bir bolgenin koordinatlarının harita uzerınde atanmasını saglıyor. Yani harita uzerındeki 16 bolgeyi belirledik. { for (int i = 0; i < 16; i++) { for (int j = 0; j < 16; j++) { Harita[i, j] = new Bolge(i, j); } } team = t; }
public static bool DusmanMi(Bolge a, Bolge b) { if (a.asker.Takim.Equals(b.asker.Takim)) { return(false); } else { return(true); } }
public void Hasar(int a) { this.can -= a; if (can <= 0) { canlimi = false; koordinat.Bosalt(this); koordinat = null; Console.WriteLine($"{this.Takim.Isim}:{this.GetType().Name} öldü!!"); LogWriter.LogMessage($"{this.Takim.Isim}:{this.GetType().Name} öldü!!"); } }
public Ermeydani(int boyut) { rand = new Random(); harita = new Bolge[boyut, boyut]; this.boyut = boyut; for (int i = 0; i < boyut; i++) { for (int j = 0; j < boyut; j++) { harita[i, j] = new Bolge(i, j); } } }
public Ermeydani() { //meydan oluştur int say1, say2; for (int i = 0; i < 16; i++) { for (int j = 0; j < 16; j++) { harita[i, j] = new Bolge(); harita[i, j].X = i; harita[i, j].Y = j; } } //takim 1 oluştur takim[0] = new Takim(); takim[0].Ad = "A"; foreach (Asker a in takim[0].Birlik) { geri: say1 = rnd1.Next(0, 5); say2 = rnd1.Next(0, 5); if (harita[say1, say2].Bos) { a.Koordinat.X = say1; a.Koordinat.Y = say2; harita[say1, say2].Bos = false; } else { goto geri; } } //takim 2 oluştur takim[1] = new Takim(); takim[1].Ad = "B"; foreach (Asker a in takim[1].Birlik) { geri: say1 = rnd1.Next(10, 15); say2 = rnd1.Next(10, 15); if (harita[say1, say2].Bos) { a.Koordinat.X = say1; a.Koordinat.Y = say2; harita[say1, say2].Bos = false; } else { goto geri; } } }
public ArrayList KomsuBolgeleriVer(int komsuluk, Bolge bolge) { ArrayList komsular = new ArrayList(); for (int i = bolge.X + 1; i < bolge.X + komsuluk + 1; i++) { for (int j = bolge.Y + 1; j < bolge.Y + komsuluk + 1; j++) { if (j < boyut && i < boyut && harita[i, j] != null) { komsular.Add(harita[i, j]); } } } return(komsular); }
protected void BolgeyiIsgalEt(int delta_x, int delta_y) { int x = this.koordinat.X; int y = this.koordinat.Y; if (this.koordinat.X + delta_x >= 0 && this.koordinat.X + delta_x < ermeydani.Boyut && this.koordinat.Y + delta_y < ermeydani.Boyut && this.koordinat.Y + delta_y >= 0) { if (!ermeydani[this.koordinat.X + delta_x, this.koordinat.Y + delta_y].Dolumu) { koordinat.Bosalt(this); ermeydani[this.koordinat.X + delta_x, this.koordinat.Y + delta_y].Doldur(this); koordinat = ermeydani[this.koordinat.X + delta_x, this.koordinat.Y + delta_y]; } } else { if (this is Er) { if (this.koordinat.Y + delta_y >= ermeydani.Boyut || this.koordinat.Y + delta_y < 0) { double a = random.NextDouble(); int d_x = (a < 0.5) ? 1 : -1; if (this.koordinat.X + d_x >= ermeydani.Boyut) { d_x = 0; } else if (this.koordinat.X + d_x < 0) { d_x = 0; } if (!ermeydani[this.koordinat.X + d_x, this.koordinat.Y].Dolumu) { koordinat.Bosalt(this); ermeydani[this.koordinat.X + d_x, this.koordinat.Y].Doldur(this); koordinat = ermeydani[this.koordinat.X + d_x, this.koordinat.Y]; } } } } LogWriter.LogMessage($"{this.Takim.Isim}:{this.GetType().Name} {x}--{y} koordinatından {this.koordinat.X},{this.koordinat.Y}'a gitti."); }
public Bolge BaslangıcNoktasıVer(Bolge solUst, int a_boyut) { if (a_boyut > 2 && solUst.X + a_boyut <= boyut && solUst.Y + a_boyut <= boyut) { int x_p = rand.Next(solUst.X, solUst.X + a_boyut); int y_p = rand.Next(solUst.Y, solUst.Y + a_boyut); if (!harita[x_p, y_p].Dolumu) { return(harita[x_p, y_p]); } else { return(BaslangıcNoktasıVer(solUst, a_boyut)); } } else { return(null); } }
void Ekle(Ermeydani em, Er a, int dongu, int tk) { Bolge b; while (indis < dongu) { a = new Er(); b = new Bolge(); do { b.x = r.Next(5) + tk; b.y = r.Next(5) + tk; b.takım = tk; a.Koordinat = b; }while (em.Harita[b.x, b.y] != null); em.Harita[b.x, b.y] = a.Koordinat; birlik[indis] = a; indis++; } }
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); } }
protected override void HaraketEt(Bolge _koordinat, double karar) { var oldBolge = Ermeydani.Harita[_koordinat.x, _koordinat.y] as Bolge; if (karar < 0.05) { // aşağı ilerle _koordinat.x++; var bolge = Ermeydani.Harita[_koordinat.x, _koordinat.y] as Bolge; if (bolge.Asker == null) { Koordinat.x++; bolge.Asker = this; oldBolge.Asker = null; } } else if (karar >= 0.05 && karar < 0.1) { // yukarı ilerle _koordinat.x--; var bolge = Ermeydani.Harita[_koordinat.x, _koordinat.y] as Bolge; if (bolge.Asker == null) { Koordinat.x--; bolge.Asker = this; oldBolge.Asker = null; } } else if (karar >= 0.1 && karar < 0.15) { // sağa ilerle _koordinat.y++; var bolge = Ermeydani.Harita[_koordinat.x, _koordinat.y] as Bolge; if (bolge.Asker == null) { Koordinat.y++; bolge.Asker = this; oldBolge.Asker = null; } } else if (karar >= 0.15 && karar < 0.2) { // sola ilerle _koordinat.y--; var bolge = Ermeydani.Harita[_koordinat.x, _koordinat.y] as Bolge; if (bolge.Asker == null) { Koordinat.y--; bolge.Asker = this; oldBolge.Asker = null; } } else if (karar >= 0.2 && karar < 0.25) { // sağ çapraz yukarı ilerle _koordinat.x--; _koordinat.y++; var bolge = Ermeydani.Harita[_koordinat.x, _koordinat.y] as Bolge; if (bolge.Asker == null) { Koordinat.x--; Koordinat.y++; bolge.Asker = this; oldBolge.Asker = null; } } else if (karar >= 0.25 && karar < 0.3) { // sağ çapraz aşağı ilerle _koordinat.x++; _koordinat.y++; var bolge = Ermeydani.Harita[_koordinat.x, _koordinat.y] as Bolge; if (bolge.Asker == null) { Koordinat.x++; Koordinat.y++; bolge.Asker = this; oldBolge.Asker = null; } } else if (karar >= 0.3 && karar < 0.35) { // sol çapraz yukarı ilerle _koordinat.x--; _koordinat.y--; var bolge = Ermeydani.Harita[_koordinat.x, _koordinat.y] as Bolge; if (bolge.Asker == null) { Koordinat.x--; Koordinat.y--; bolge.Asker = this; oldBolge.Asker = null; } } else if (karar >= 0.35 && karar < 0.4) { // sol çapraz aşağı ilerle _koordinat.x++; _koordinat.y--; var bolge = Ermeydani.Harita[_koordinat.x, _koordinat.y] as Bolge; if (bolge.Asker == null) { Koordinat.x++; Koordinat.y--; bolge.Asker = this; oldBolge.Asker = null; } } Console.WriteLine($"{Ad} Yuzbasi Harket Ediyor."); }
public Er(Bolge bolge, Takim takim, Ermeydani ermeydani) : base(bolge, takim, ermeydani) { random = new Random(); }
public Tegmen(Bolge bolge, Takim takim, Ermeydani ermeydani) : base(bolge, takim, ermeydani) { }
public Asker(Bolge Koord) { koordinat = Koord; }
// ..... // public Tegmen(Bolge Koord) : base(Koord) { }
// ..... // public Yuzbasi(Bolge Koord) : base(Koord) { }
//rastsal olarak asker üretmek static void birlikUret(int yuzbasiSayi, int tegmenSayi, int yuzbasiSayi2, int tegmenSayi2) { int[] temp = new int[2]; temp[0] = 0; temp[1] = 0; Ermeydani meydan = new Ermeydani(); Takim takım = new Takim(); Er er = new Er(true, takım, 100, temp); Tegmen tegmen = new Tegmen(true, takım, 100, temp); Yuzbasi yuzbasi = new Yuzbasi(true, takım, 100, temp); Bolge bolge = new Bolge(); int i = 0; if (yuzbasiSayi == 2) { takım.Birlik1[i] = yuzbasi; i++; } if (tegmenSayi == 1) { takım.Birlik1[i] = tegmen; i++; } else { takım.Birlik1[i] = tegmen; i++; takım.Birlik1[i] = tegmen; i++; } for (int x = i; x < 7; x++) { takım.Birlik1[x] = er; } i = 0; if (yuzbasiSayi2 == 2) { takım.Birlik2[i] = yuzbasi; i++; } if (tegmenSayi2 == 1) { takım.Birlik2[i] = tegmen; i++; } else { takım.Birlik2[i] = tegmen; i++; takım.Birlik2[i] = tegmen; i++; } for (int x = i; x < 7; x++) { takım.Birlik2[x] = er; } for (int a = 0; a < 7; a++) { meydan.askerYerlestir(takım.Birlik1[a], takım.Birlik2[a], bolge.harita, a); } }