public void Fire(Asker x) { x.hp = x.hp - rand.Next(0, 2); if (x.hp <= 0) { x.isalive = false; x.hp = 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(); }
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) { } }
// 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); }
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(); } }
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); } }
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(); } }
public abstract void AtesEt(Asker x);
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; } } } } }
public void RemoveDead(Asker soldier) { Team.Remove(soldier); }
// Beautify GetType // Converts Odev1.Type to Type public static string StripType(Asker obj) { return(obj.GetType().ToString().Split(new char[] { '.' })[1]); }