public void warDoORDieForAi()
{
string temp = "";
temp += bolge1.isim + ":" + bolge1.ordu.askerSayisi.ToString()+"\n";
temp += bolge2.isim + ":" + bolge2.ordu.askerSayisi.ToString() + "\n---------\n";
while (bolge1.ordu.askerSayisi > 1 && bolge2.ordu.askerSayisi > 0)
{
int bb1;
int bb2;
bb1 = random.Next(1, randomAraligi + (bolge1.ordu.askerSayisi / 5));
System.Threading.Thread.Sleep(20);
for (int i = 1; i <= 11; i++) { random.Next(); }
bb2 = random.Next(1, randomAraligi + (bolge2.ordu.askerSayisi / 5));
temp += bb1.ToString() + " - " + bb2.ToString() + "\n";
if (bb1 > bb2)
{
bolge2.ordu.askerSayisi--;
form1.changeLabel(bolge2);
textBox3.Text = bolge2.ordu.askerSayisi.ToString();
if (bolge2.ordu.askerSayisi == 0)
{
bolge2.sahip.bolgeler.Remove(bolge2);
bolge1.sahip.bolgeler.Add(bolge2);
bolge2.sahip = bolge1.sahip;
bolge1.ordu.askerSayisi--;
bolge2.ordu.askerSayisi++;
List<int> bolmeTalimati = new List<int>();
bolmeTalimati = form1.yapayzekalar[form1.players[form1.turn].aiId - 1].divideArmies(bolge1.index, bolge2.index,form1.getGameData());
if ((bolge1.ordu.askerSayisi + bolge2.ordu.askerSayisi) == (bolmeTalimati[0] + bolmeTalimati[1]))
{
bolge1.ordu.askerSayisi = bolmeTalimati[0];
bolge2.ordu.askerSayisi = bolmeTalimati[1];
}
form1.changeLabel(bolge1);
form1.changeLabel(bolge2);
form1.changeTerritoryColor(bolge2, bolge2.sahip);
break;
}
}
if (bb1 < bb2)//Savunma yapan eşitlik durumunda daha üstün
{
bolge1.ordu.askerSayisi--;
form1.changeLabel(bolge1);
textBox2.Text = bolge1.ordu.askerSayisi.ToString();
}
refreshSaldiriEkrani();
form1.refreshGame();
}
//MessageBox.Show(temp);
}
public void changeTurn() { int toplamInsan = 0; foreach (Player p in players) { if (p.isHuman) { toplamInsan++; } } if (toplamInsan == 0) { button2.Enabled = false; pictureBox1.Enabled = false; //if (this.Height != 602) //{ // this.Height = 602; //} //if (listView1.Enabled) //{ // hideStatistics(); //} refreshGame(); showHistoryToolStripMenuItem.Enabled = true; Application.DoEvents(); } if ((turn + 1) < players.Count) { turn++; } else { turn = 0; incrementTurnCounter(); } if (ilkAskerler == 0) { players[turn].yeniAskerler = (3 + kitaKazanci(players[turn])); } changePanel(); players[turn].askerSayisiTarihi.Add(players[turn].getTotalNumberOfArmies()); if (players[turn].isHuman)//insansa { button2.Enabled = false; } else//Bilgisayarda oynama sırası////////////////////////////////////////////////////////////////////////////////////// { changePanel(); if (players.Count == 1) { return; } changeStatistics(); if (!butunBolgelerSecildiMi() && !isRandom)//butun bolgeler seçimemişse bilgisayar bolge seçecek { int index = 0; index = yapayzeka().requestTerritory(getGameData()); if (index < 0 || index > 41) { MessageBox.Show(yapayzeka().getName() + " bölge isteme işlemi zamanı kural ihlali yaptı. Index:" + index); index = defaultAi.requestTerritory(getGameData()); } if (bolgeler[index].sahipli) { MessageBox.Show(yapayzeka().getName() + "Yapay Zeka Sahipli bir bölge istedi"); index = defaultAi.requestTerritory(getGameData()); } if (!bolgeler[index].sahipli) { bolgeler[index].sahip = players[turn]; bolgeler[index].sahipli = true; players[turn].bolgeler.Add(bolgeler[index]); changeTerritoryColor(bolgeler[index], players[turn]); txtInfo.Text = players[getNextTurn()].name + " please choose a territory"; changeLabel(bolgeler[index]); changeTurn(); return; } if (butunBolgelerSecildiMi()) { changeInfo(players[turn].name + " please place your army. [" + Math.Floor((double)(ilkAskerler / players.Count)).ToString() + "]"); showHistoryToolStripMenuItem.Enabled = true; } } else { if (ilkAskerler > 0)//İlk Askerleri Dağıtılmasıması bitene kadar { Bolge bol=null; bol = bolgeler[yapayzeka().getTerritoryToPlaceFirstArmies(getGameData())]; if (bolgeler[ yapayzeka().getTerritoryToPlaceFirstArmies(getGameData())].sahip!=players[turn]) { MessageBox.Show(yapayzeka().getName() + " kendine ait olmayan yere asker koymak istedi"); MessageBox.Show("Bolge adı:" + bol.isim); bol = bolgeler[defaultAi.getTerritoryToPlaceFirstArmies(getGameData())]; } ilkAskerler--; if (ilkAskerler == 0) { changeInfo(players[turn].name + " please place your army. [" + players[turn].yeniAskerler + "]"); ganimetBolgseiniBildir(); } players[turn].ilkAskerSayisi--; bol.ordu.askerSayisi++; changeLabel(bol); changeTurn(); return; }//ilk Askerlerin Dağıtılması Bittikten Sonra else { //Öncelikle her turn de verilen askerlerin yerine yerleştirilmesi lazım List<int> nereyekoyalim = new List<int>(); nereyekoyalim = yapayzeka().getTerritoriesIndexToPlaceNewArmies(getGameData()); foreach (int i in nereyekoyalim) { if (bolgeler[i].sahip != players[turn]) { MessageBox.Show(yapayzeka().getName()+" Yapay zeka kendine ait olmayan yere asker koymak istedi"); nereyekoyalim = defaultAi.getTerritoriesIndexToPlaceNewArmies(getGameData()); } } int nereye = 0; while (players[turn].yeniAskerler > 0) { players[turn].yeniAskerler--; bolgeler[nereyekoyalim[nereye]].ordu.askerSayisi++; changeLabel(bolgeler[nereyekoyalim[nereye]]); if (players[turn].yeniAskerler == 0) { button2.Enabled = true; } nereye++; } //Askerler Dağıtıldı şimdi hucum yapılabilir bool birSeyYapacanMi = true; while (birSeyYapacanMi) { refreshGame(); birSeyYapacanMi = yapayzeka().devam(getGameData()); if (birSeyYapacanMi) { //Yapacakları... bool saldiracakMi = false; saldiracakMi = yapayzeka().saldiracanMi(getGameData()); if (saldiracakMi) { List<int> savasBolgeIndexleri = new List<int>(); savasBolgeIndexleri = yapayzeka().getSavasBolgeIndexleri(getGameData()); bool saldirabilir = true; //validation if (bolgeler[savasBolgeIndexleri[0]].sahip == bolgeler[savasBolgeIndexleri[1]].sahip) { MessageBox.Show(yapayzeka().getName()+" Yapay zeka kendi bolgesine saldırı yapmak istiyor..."); saldirabilir = false; } if (!(bolgeler[savasBolgeIndexleri[0]].komsular.Contains(bolgeler[savasBolgeIndexleri[1]]))) { MessageBox.Show(yapayzeka().getName() + " Yapay Zeka Komşusu olmadığı bölgeye saldırma isteğinde bulundu"); MessageBox.Show(bolgeler[savasBolgeIndexleri[0]].isim + " ve " + bolgeler[savasBolgeIndexleri[1]].isim + " komşu değil"); saldirabilir = false; } if (saldirabilir) { SaldiriEkrani se = new SaldiriEkrani(bolgeler[savasBolgeIndexleri[0]], bolgeler[savasBolgeIndexleri[1]], this); if (savasBolgeIndexleri.Count == 3)//Saldırı Attack şeklinde gerçekleşecek { if (savasBolgeIndexleri[2] == -1) { se.warAttackForAi(); } } else//Saldırı DoOrDie şeklinde gerçekleşecek { se.warDoORDieForAi(); } olduMu(); } } } else { bool transferVarMi = yapayzeka().askerTransferiYapacakmisin(getGameData()); if (transferVarMi) { List<int> transferVerileri = new List<int>(); transferVerileri= yapayzeka().askerTransferiYap(getGameData()); bool transferyapilsinmi = true; if (transferVerileri[2] < 1 || transferVerileri[3] < 1) { MessageBox.Show(players[turn].name + " isimli yapay zeka illegal aktarım denemesinde bulundu. Bolgede en az bir asker birakilmalidir"); transferyapilsinmi = false; } if (!((bolgeler[transferVerileri[0]].ordu.askerSayisi + bolgeler[transferVerileri[1]].ordu.askerSayisi) == (transferVerileri[2] + transferVerileri[3]))) { MessageBox.Show(players[turn].name + " isimli yapay zeka illegal aktarım denemesinde bulundu"); transferyapilsinmi = false; } if (transferyapilsinmi) { bolgeler[transferVerileri[0]].ordu.askerSayisi = transferVerileri[2]; bolgeler[transferVerileri[1]].ordu.askerSayisi = transferVerileri[3]; changeLabel(bolgeler[transferVerileri[0]]); changeLabel(bolgeler[transferVerileri[1]]); } } changeTurn(); return; } } } } /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// } }