Risk1.SaldiriEkrani.warDoORDieForAi C# (CSharp) Method

warDoORDieForAi() public method

public warDoORDieForAi ( ) : void
return void
        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);
        }

Usage Example

Ejemplo n.º 1
0
        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;
                            }
                        }
                    }
                }
                ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
            }
        }