public override bool devam(GameData f1) { durum3SaldiriIndexleri.Clear(); if (southAmericaBendeMi(f1)) { //Ordusu diğerlerinin toplamından buyuk olduğunda her tarafa saldıracak... if (getToplamDusmanSayisi(f1)/2 < f1.players[f1.turn].getTotalNumberOfArmies()) { foreach (Bolge b in f1.players[f1.turn].bolgeler) { foreach (Bolge komsu in b.komsular) { if (b.ordu.askerSayisi > komsu.ordu.askerSayisi && b.sahip != komsu.sahip) { return true; } } } return false; } else { return false; } } else//Güney Amerikayı ele geçirmeye çalışacak... { if (southAmericadaToprakVarMi(f1)!=-1) { foreach (Bolge b in f1.players[f1.turn].bolgeler) { if (getKomsuDusmanSayisi(b) > 0) { foreach (Bolge b2 in b.komsular) { if (b2.sahip != b.sahip) { if (b.ordu.askerSayisi > b2.ordu.askerSayisi+10 && buBolgeGuneyAmerikadaMi(b2)) { return true; } } } } } } else//Guney Amerikada Toprak yoksa... { Graph graph = new Graph(); foreach (Bolge b in f1.bolgeler) { graph.AddNode(b.index.ToString()); } foreach (Bolge b in f1.bolgeler) { foreach (Bolge b2 in b.komsular) { if (b2.sahip != f1.players[f1.turn]) { graph.AddConnection(b.index.ToString(), b2.index.ToString(), b2.ordu.askerSayisi, false); } } } var calculator = new DistanceCalculator(); var distances = calculator.CalculateDistances(graph, getEnGucluBolgemIndex(f1).ToString()); // Start from "G" String temp = ""; //SA Sınırları List<int> gaSinirlari = new List<int>(); gaSinirlari.Add(0); gaSinirlari.Add(0); foreach (var d in distances) { temp += d.Key + " - " + d.Value + "-"; if (d.Key == "9") { gaSinirlari[0] = (int)d.Value; } if (d.Key == "11") { gaSinirlari[1] = (int)d.Value; } } int min = gaSinirlari.Min(); int minIndex = gaSinirlari.IndexOf(min); int minBolgeIndex = 0; if (minIndex == 0) { minBolgeIndex = 9; } if (minIndex == 1) { minBolgeIndex = 11; } List<String> gidilecekyol = new List<String>(); //calculator = new DistanceCalculator(); gidilecekyol = calculator.getYol(getEnGucluBolgemIndex(f1).ToString(), minBolgeIndex.ToString(), graph); if (f1.bolgeler[getEnGucluBolgemIndex(f1)].ordu.askerSayisi > min + 10)//Gideceğiz Avrupaya { if (f1.bolgeler[getEnGucluBolgemIndex(f1)].komsular.Contains(f1.bolgeler[Convert.ToInt32(gidilecekyol[gidilecekyol.Count - 1])])) { saldirmaDurumu = 3; durum3SaldiriIndexleri.Add(getEnGucluBolgemIndex(f1)); durum3SaldiriIndexleri.Add(Convert.ToInt32(gidilecekyol[gidilecekyol.Count - 1])); return true; } else { return false; } } else//Biraz daha büyüyeceğiz... { return false; } } return false; } }
public override bool devam(GameData f1) { durum3SaldiriIndexleri.Clear(); if (southAmericaBendeMi(f1)) { //Ordusu diğerlerinin toplamından buyuk olduğunda her tarafa saldıracak... if (getToplamDusmanSayisi(f1) / 2 < f1.players[f1.turn].getTotalNumberOfArmies()) { foreach (Bolge b in f1.players[f1.turn].bolgeler) { foreach (Bolge komsu in b.komsular) { if (b.ordu.askerSayisi > komsu.ordu.askerSayisi && b.sahip != komsu.sahip) { return(true); } } } return(false); } else { return(false); } } else//Güney Amerikayı ele geçirmeye çalışacak... { if (southAmericadaToprakVarMi(f1) != -1) { foreach (Bolge b in f1.players[f1.turn].bolgeler) { if (getKomsuDusmanSayisi(b) > 0) { foreach (Bolge b2 in b.komsular) { if (b2.sahip != b.sahip) { if (b.ordu.askerSayisi > b2.ordu.askerSayisi + 10 && buBolgeGuneyAmerikadaMi(b2)) { return(true); } } } } } } else//Guney Amerikada Toprak yoksa... { Graph graph = new Graph(); foreach (Bolge b in f1.bolgeler) { graph.AddNode(b.index.ToString()); } foreach (Bolge b in f1.bolgeler) { foreach (Bolge b2 in b.komsular) { if (b2.sahip != f1.players[f1.turn]) { graph.AddConnection(b.index.ToString(), b2.index.ToString(), b2.ordu.askerSayisi, false); } } } var calculator = new DistanceCalculator(); var distances = calculator.CalculateDistances(graph, getEnGucluBolgemIndex(f1).ToString()); // Start from "G" String temp = ""; //SA Sınırları List <int> gaSinirlari = new List <int>(); gaSinirlari.Add(0); gaSinirlari.Add(0); foreach (var d in distances) { temp += d.Key + " - " + d.Value + "-"; if (d.Key == "9") { gaSinirlari[0] = (int)d.Value; } if (d.Key == "11") { gaSinirlari[1] = (int)d.Value; } } int min = gaSinirlari.Min(); int minIndex = gaSinirlari.IndexOf(min); int minBolgeIndex = 0; if (minIndex == 0) { minBolgeIndex = 9; } if (minIndex == 1) { minBolgeIndex = 11; } List <String> gidilecekyol = new List <String>(); //calculator = new DistanceCalculator(); gidilecekyol = calculator.getYol(getEnGucluBolgemIndex(f1).ToString(), minBolgeIndex.ToString(), graph); if (f1.bolgeler[getEnGucluBolgemIndex(f1)].ordu.askerSayisi > min + 10)//Gideceğiz Avrupaya { if (f1.bolgeler[getEnGucluBolgemIndex(f1)].komsular.Contains(f1.bolgeler[Convert.ToInt32(gidilecekyol[gidilecekyol.Count - 1])])) { saldirmaDurumu = 3; durum3SaldiriIndexleri.Add(getEnGucluBolgemIndex(f1)); durum3SaldiriIndexleri.Add(Convert.ToInt32(gidilecekyol[gidilecekyol.Count - 1])); return(true); } else { return(false); } } else//Biraz daha büyüyeceğiz... { return(false); } } return(false); } }
public override bool devam(GameData f1) { durum3SaldiriIndexleri.Clear(); saldirmaDurumu = 0; //19-25 arasını almak amaç öncelikle if (avrupaBendeMi(f1))//avrupa onda { foreach (Bolge b in f1.players[f1.turn].bolgeler) { foreach (Bolge komsu in b.komsular) { if (b.ordu.askerSayisi > komsu.ordu.askerSayisi + 10 && b.sahip != komsu.sahip) { saldirmaDurumu = 1; return(true); } } } return(false); } else if (avrupadaToprakVarMi(f1)) //avrupada toprağm var sadece { if (getAvrupadakiAskerSayisi(f1) > getAvrupadakiDusmanSayisi(f1)) //Toplam Düşmandan daha fazlaysa Saldırıya geçer //Avrupaya karşı { //Eğer Avrupada tek başına komsusundan güçlü olan varsa saldırırız //Toplamımız daha büyük olabilir ama tek tek hiçbir bölgemiz daha güçlü olmayabilir foreach (Bolge b in f1.players[f1.turn].bolgeler) { if (getKomsuDusmanSayisi(b) > 0) { foreach (Bolge b2 in b.komsular) { if (b2.sahip != b.sahip) { if (b.ordu.askerSayisi > b2.ordu.askerSayisi && buBolgeAvrupadaMi(b2)) { saldirmaDurumu = 2; return(true); } } } } } return(false); } else//Düşman daha fazlaysa bekler devam etmez { return(false); } } else//Avrupayla alakamız yoksa Avrupaya ulaşmaya çalışacağız. { Graph graph = new Graph(); foreach (Bolge b in f1.bolgeler) { graph.AddNode(b.index.ToString()); } foreach (Bolge b in f1.bolgeler) { foreach (Bolge b2 in b.komsular) { if (b2.sahip != f1.players[f1.turn]) { graph.AddConnection(b.index.ToString(), b2.index.ToString(), b2.ordu.askerSayisi, false); } } } var calculator = new DistanceCalculator(); var distances = calculator.CalculateDistances(graph, getEnGucluBolgemIndex(f1).ToString()); // Start from "G" String temp = ""; //Avrupa Sınırları List <int> avrupaSinirlari = new List <int>(); avrupaSinirlari.Add(0); avrupaSinirlari.Add(0); avrupaSinirlari.Add(0); avrupaSinirlari.Add(0); foreach (var d in distances) { temp += d.Key + " - " + d.Value + "-"; if (d.Key == "19") { avrupaSinirlari[0] = (int)d.Value; } if (d.Key == "21") { avrupaSinirlari[1] = (int)d.Value; } if (d.Key == "24") { avrupaSinirlari[2] = (int)d.Value; } if (d.Key == "25") { avrupaSinirlari[3] = (int)d.Value; } } int min = avrupaSinirlari.Min(); int minIndex = avrupaSinirlari.IndexOf(min); int minBolgeIndex = 0; if (minIndex == 0) { minBolgeIndex = 19; } if (minIndex == 1) { minBolgeIndex = 21; } if (minIndex == 2) { minBolgeIndex = 24; } if (minIndex == 3) { minBolgeIndex = 25; } List <String> gidilecekyol = new List <String>(); //calculator = new DistanceCalculator(); gidilecekyol = calculator.getYol(getEnGucluBolgemIndex(f1).ToString(), minBolgeIndex.ToString(), graph); if (f1.bolgeler[getEnGucluBolgemIndex(f1)].ordu.askerSayisi > min + 10)//Gideceğiz Avrupaya { if (f1.bolgeler[getEnGucluBolgemIndex(f1)].komsular.Contains(f1.bolgeler[Convert.ToInt32(gidilecekyol[gidilecekyol.Count - 1])])) { saldirmaDurumu = 3; durum3SaldiriIndexleri.Add(getEnGucluBolgemIndex(f1)); durum3SaldiriIndexleri.Add(Convert.ToInt32(gidilecekyol[gidilecekyol.Count - 1])); return(true); } else { return(false); } } else//Biraz daha büyüyeceğiz... { return(false); } } }
public override bool devam(GameData f1) { durum3SaldiriIndexleri.Clear(); saldirmaDurumu = 0; //19-25 arasını almak amaç öncelikle if (avrupaBendeMi(f1))//avrupa onda { foreach (Bolge b in f1.players[f1.turn].bolgeler) { foreach (Bolge komsu in b.komsular) { if (b.ordu.askerSayisi > komsu.ordu.askerSayisi + 10 && b.sahip != komsu.sahip) { saldirmaDurumu = 1; return true; } } } return false; } else if (avrupadaToprakVarMi(f1))//avrupada toprağm var sadece { if (getAvrupadakiAskerSayisi(f1) > getAvrupadakiDusmanSayisi(f1))//Toplam Düşmandan daha fazlaysa Saldırıya geçer //Avrupaya karşı { //Eğer Avrupada tek başına komsusundan güçlü olan varsa saldırırız //Toplamımız daha büyük olabilir ama tek tek hiçbir bölgemiz daha güçlü olmayabilir foreach (Bolge b in f1.players[f1.turn].bolgeler) { if (getKomsuDusmanSayisi(b) > 0) { foreach (Bolge b2 in b.komsular) { if (b2.sahip != b.sahip) { if (b.ordu.askerSayisi > b2.ordu.askerSayisi && buBolgeAvrupadaMi(b2)) { saldirmaDurumu = 2; return true; } } } } } return false; } else//Düşman daha fazlaysa bekler devam etmez { return false; } } else//Avrupayla alakamız yoksa Avrupaya ulaşmaya çalışacağız. { Graph graph = new Graph(); foreach (Bolge b in f1.bolgeler) { graph.AddNode(b.index.ToString()); } foreach (Bolge b in f1.bolgeler) { foreach (Bolge b2 in b.komsular) { if (b2.sahip != f1.players[f1.turn]) { graph.AddConnection(b.index.ToString(), b2.index.ToString(), b2.ordu.askerSayisi, false); } } } var calculator = new DistanceCalculator(); var distances = calculator.CalculateDistances(graph, getEnGucluBolgemIndex(f1).ToString()); // Start from "G" String temp=""; //Avrupa Sınırları List<int> avrupaSinirlari = new List<int>(); avrupaSinirlari.Add(0); avrupaSinirlari.Add(0); avrupaSinirlari.Add(0); avrupaSinirlari.Add(0); foreach (var d in distances) { temp+= d.Key+" - "+d.Value+"-"; if (d.Key == "19") { avrupaSinirlari[0] =(int)d.Value; } if (d.Key == "21") { avrupaSinirlari[1] = (int)d.Value; } if (d.Key == "24") { avrupaSinirlari[2] = (int)d.Value; } if (d.Key == "25") { avrupaSinirlari[3] = (int)d.Value; } } int min = avrupaSinirlari.Min(); int minIndex = avrupaSinirlari.IndexOf(min); int minBolgeIndex = 0; if (minIndex == 0) { minBolgeIndex = 19; } if (minIndex == 1) { minBolgeIndex = 21; } if (minIndex == 2) { minBolgeIndex = 24; } if (minIndex == 3) { minBolgeIndex = 25; } List<String> gidilecekyol = new List<String>(); //calculator = new DistanceCalculator(); gidilecekyol = calculator.getYol(getEnGucluBolgemIndex(f1).ToString(),minBolgeIndex.ToString(), graph); if (f1.bolgeler[getEnGucluBolgemIndex(f1)].ordu.askerSayisi > min + 10)//Gideceğiz Avrupaya { if (f1.bolgeler[getEnGucluBolgemIndex(f1)].komsular.Contains(f1.bolgeler[Convert.ToInt32(gidilecekyol[gidilecekyol.Count - 1])])) { saldirmaDurumu = 3; durum3SaldiriIndexleri.Add(getEnGucluBolgemIndex(f1)); durum3SaldiriIndexleri.Add(Convert.ToInt32(gidilecekyol[gidilecekyol.Count - 1])); return true; } else { return false; } } else//Biraz daha büyüyeceğiz... { return false; } } }