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