예제 #1
0
        private void Oyun_Load(object sender, EventArgs e)
        {
            AltinSayisiA = AltinSayisi;
            AltinSayisiB = AltinSayisi;
            AltinSayisiC = AltinSayisi;
            AltinSayisiD = AltinSayisi;


            txt_aPuani.Text = AltinSayisiA.ToString();
            txt_bPuani.Text = AltinSayisiB.ToString();
            txt_cPuani.Text = AltinSayisiC.ToString();
            txt_dPuani.Text = AltinSayisiD.ToString();



            Altin altin = new Altin();

            altinListe = altin.altinYerleri(satirSayisi, sutunSayisi, altinYuzdesi, tableLayoutPanel1);
            gizliAltin = altin.gizliAltin(gizliAltinYuzdesi, tableLayoutPanel1);

            playerA = new AOyuncusu(AHamleMaliyet, AHedefBelirlemeMaliyet);
            playerB = new BOyuncusu(BHamleMaliyet, BHedefBelirlemeMaliyet);
            playerC = new COyuncusu(CHamleMaliyet, CHedefBelirlemeMaliyet);
            playerD = new DOyuncusu(DHamleMaliyet, DHedefBelirlemeMaliyet);
        }
예제 #2
0
        public void enKarliAltin(TableLayoutPanel tableLayoutPanel1, List <Altin> altinliste, List <Altin> gizlialtinliste, int dPuan, int adimSayisi, AOyuncusu aOyuncusu, BOyuncusu bOyuncusu, COyuncusu cOyuncusu)
        {
            Control    dControl = tableLayoutPanel1.Controls.Find("dOyuncusu", true).FirstOrDefault();
            PictureBox dPCBox   = dControl as PictureBox;


            int dOyuncusuX = tableLayoutPanel1.GetRow(dControl);
            int dOyuncusuY = tableLayoutPanel1.GetColumn(dControl);


            var enYakinAltin = altinliste.OrderByDescending(x => x.altinMiktar - (Math.Abs(x.altinKonumSatir - dOyuncusuX) + Math.Abs(+x.altinKonumSutun - dOyuncusuY)) * hamleMaliyet - hedefBelirlemeMaliyet).FirstOrDefault();


            Control    c1 = tableLayoutPanel1.GetControlFromPosition(enYakinAltin.altinKonumSutun, enYakinAltin.altinKonumSatir);
            PictureBox pc = c1 as PictureBox;

            hedefAltin.altinKonumSatir = tableLayoutPanel1.GetRow(c1);
            hedefAltin.altinKonumSutun = tableLayoutPanel1.GetColumn(c1);


            #region Önceden Sezme için a,b ve c oyuncularıyla kontrol gerçekleştirme

            Control aControl = tableLayoutPanel1.Controls.Find("aOyuncusu", true).FirstOrDefault();
            Control bControl = tableLayoutPanel1.Controls.Find("bOyuncusu", true).FirstOrDefault();
            Control cControl = tableLayoutPanel1.Controls.Find("cOyuncusu", true).FirstOrDefault();

            int ayakinlik = Math.Abs(tableLayoutPanel1.GetRow(aControl) - hedefAltin.altinKonumSatir) + Math.Abs(tableLayoutPanel1.GetColumn(aControl) - hedefAltin.altinKonumSutun);
            int byakinlik = Math.Abs(tableLayoutPanel1.GetRow(bControl) - hedefAltin.altinKonumSatir) + Math.Abs(tableLayoutPanel1.GetColumn(bControl) - hedefAltin.altinKonumSutun);
            int cyakinlik = Math.Abs(tableLayoutPanel1.GetRow(cControl) - hedefAltin.altinKonumSatir) + Math.Abs(tableLayoutPanel1.GetColumn(cControl) - hedefAltin.altinKonumSutun);
            int dyakinlik = Math.Abs(tableLayoutPanel1.GetRow(dControl) - hedefAltin.altinKonumSatir) + Math.Abs(tableLayoutPanel1.GetColumn(dControl) - hedefAltin.altinKonumSutun);

            bool aHedefAltinaMiGidiyor = aOyuncusu.hedefAltin.altinKonumSatir == hedefAltin.altinKonumSatir && aOyuncusu.hedefAltin.altinKonumSutun == hedefAltin.altinKonumSutun ? true : false;
            bool bHedefAltinaMiGidiyor = bOyuncusu.hedefAltin.altinKonumSatir == hedefAltin.altinKonumSatir && bOyuncusu.hedefAltin.altinKonumSutun == hedefAltin.altinKonumSutun ? true : false;
            bool cHedefAltinaMiGidiyor = cOyuncusu.hedefAltin.altinKonumSatir == hedefAltin.altinKonumSatir && cOyuncusu.hedefAltin.altinKonumSutun == hedefAltin.altinKonumSutun ? true : false;


            if ((aHedefAltinaMiGidiyor.Equals(true) && ayakinlik < dyakinlik) || (bHedefAltinaMiGidiyor.Equals(true) && byakinlik < dyakinlik) || (cHedefAltinaMiGidiyor.Equals(true) && cyakinlik < dyakinlik))
            {
                enYakinAltin = altinliste.OrderByDescending(x => x.altinMiktar - (Math.Abs(x.altinKonumSatir - dOyuncusuX) + Math.Abs(+x.altinKonumSutun - dOyuncusuY)) * hamleMaliyet - hedefBelirlemeMaliyet).ElementAt(1);


                c1 = tableLayoutPanel1.GetControlFromPosition(enYakinAltin.altinKonumSutun, enYakinAltin.altinKonumSatir);
                pc = c1 as PictureBox;

                hedefAltin.altinKonumSatir = tableLayoutPanel1.GetRow(c1);
                hedefAltin.altinKonumSutun = tableLayoutPanel1.GetColumn(c1);
            }


            #endregion


            //oyuncu hedef belirlediğinde altın kaybeder
            if (hedefAltin.hedefAltinVarMi == false)
            {
                dPuan = dPuan - hedefBelirlemeMaliyet;
                hedefAltin.hedefAltinVarMi = true;
                harcananAltinMiktari      += hedefBelirlemeMaliyet;
            }



            int i  = 1;
            int dX = 1; //b oyuncusunun x yönündeki (row) hareketi
            int dY = 1; //b oyuncusunun y yönündeki (column) hareketi


            while (tableLayoutPanel1.GetRow(dControl) != hedefAltin.altinKonumSatir && i <= adimSayisi && dPuan > 0)
            {
                if (tableLayoutPanel1.GetRow(dControl) <= hedefAltin.altinKonumSatir)
                {
                    if (dOyuncusuX + dX == hedefAltin.altinKonumSatir && dOyuncusuY == hedefAltin.altinKonumSutun)
                    {
                        dPuan = dPuan + enYakinAltin.altinMiktar;
                        tableLayoutPanel1.Controls.Remove(pc);
                        altinliste.Remove(enYakinAltin);
                        hedefAltin.hedefAltinVarMi = false;
                        toplananAltin++;
                    }
                    foreach (Altin item in gizlialtinliste)
                    {
                        Control    citem  = tableLayoutPanel1.GetControlFromPosition(item.altinKonumSutun, item.altinKonumSatir);
                        PictureBox pcitem = citem as PictureBox;

                        if (dOyuncusuX + dX == item.altinKonumSatir && dOyuncusuY == item.altinKonumSutun)
                        {
                            pcitem.Visible = true;
                            altinliste.Add(item);
                            gizlialtinliste.Remove(item);
                            break;
                        }
                    }
                    if (dPuan > hamleMaliyet)
                    {
                        dPuan -= hamleMaliyet;
                        harcananAltinMiktari += hamleMaliyet;
                        tableLayoutPanel1.SetRow(dControl, dOyuncusuX + dX);
                        adimlar.Add((dOyuncusuX + dX) + " " + dOyuncusuY);
                    }
                }

                else
                {
                    if (dOyuncusuX - dX == hedefAltin.altinKonumSatir && dOyuncusuY == hedefAltin.altinKonumSutun)
                    {
                        dPuan = dPuan + enYakinAltin.altinMiktar;
                        tableLayoutPanel1.Controls.Remove(pc);
                        altinliste.Remove(enYakinAltin);
                        hedefAltin.hedefAltinVarMi = false;
                        toplananAltin++;
                    }
                    foreach (Altin item in gizlialtinliste)
                    {
                        Control    citem  = tableLayoutPanel1.GetControlFromPosition(item.altinKonumSutun, item.altinKonumSatir);
                        PictureBox pcitem = citem as PictureBox;

                        if (dOyuncusuX - dX == item.altinKonumSatir && dOyuncusuY == item.altinKonumSutun)
                        {
                            pcitem.Visible = true;
                            altinliste.Add(item);
                            gizlialtinliste.Remove(item);
                            break;
                        }
                    }
                    if (dPuan > hamleMaliyet)
                    {
                        dPuan -= hamleMaliyet;
                        harcananAltinMiktari += hamleMaliyet;
                        tableLayoutPanel1.SetRow(dControl, dOyuncusuX - dX);
                        adimlar.Add((dOyuncusuX - dX) + " " + dOyuncusuY);
                    }
                }
                toplamAdim++;
                dX++;
                i++;
            }

            while (tableLayoutPanel1.GetRow(dControl) == hedefAltin.altinKonumSatir && tableLayoutPanel1.GetColumn(dControl) != hedefAltin.altinKonumSutun && i <= adimSayisi && dPuan > 0)
            {
                if (dOyuncusuY <= hedefAltin.altinKonumSutun)
                {
                    if (dOyuncusuY + dY == hedefAltin.altinKonumSutun)
                    {
                        dPuan = dPuan + enYakinAltin.altinMiktar;
                        tableLayoutPanel1.Controls.Remove(pc);
                        altinliste.Remove(enYakinAltin);
                        hedefAltin.hedefAltinVarMi = false;
                        toplananAltin++;
                    }
                    foreach (Altin item in gizlialtinliste)
                    {
                        Control    citem  = tableLayoutPanel1.GetControlFromPosition(item.altinKonumSutun, item.altinKonumSatir);
                        PictureBox pcitem = citem as PictureBox;

                        if (dOyuncusuX == item.altinKonumSatir && dOyuncusuY + dY == item.altinKonumSutun)
                        {
                            pcitem.Visible = true;
                            altinliste.Add(item);
                            gizlialtinliste.Remove(item);
                            break;
                        }
                    }
                    if (dPuan > hamleMaliyet)
                    {
                        dPuan -= hamleMaliyet;
                        harcananAltinMiktari += hamleMaliyet;
                        tableLayoutPanel1.SetColumn(dControl, dOyuncusuY + dY);
                        adimlar.Add(dOyuncusuX + " " + (dOyuncusuY + dY));
                    }
                }

                else
                {
                    if (dOyuncusuY - dY == hedefAltin.altinKonumSutun)
                    {
                        dPuan = dPuan + enYakinAltin.altinMiktar;
                        tableLayoutPanel1.Controls.Remove(pc);
                        altinliste.Remove(enYakinAltin);
                        hedefAltin.hedefAltinVarMi = false;
                        toplananAltin++;
                    }
                    foreach (Altin item in gizlialtinliste)
                    {
                        Control    citem  = tableLayoutPanel1.GetControlFromPosition(item.altinKonumSutun, item.altinKonumSatir);
                        PictureBox pcitem = citem as PictureBox;

                        if (dOyuncusuX == item.altinKonumSatir && dOyuncusuY - dY == item.altinKonumSutun)
                        {
                            pcitem.Visible = true;
                            altinliste.Add(item);
                            gizlialtinliste.Remove(item);
                            break;
                        }
                    }
                    if (dPuan > hamleMaliyet)
                    {
                        dPuan -= hamleMaliyet;
                        harcananAltinMiktari += hamleMaliyet;
                        tableLayoutPanel1.SetColumn(dControl, dOyuncusuY - dY);
                        adimlar.Add(dOyuncusuX + " " + (dOyuncusuY - dY));
                    }
                }
                toplamAdim++;
                i++;
                dY++;
            }
            if (tableLayoutPanel1.GetRow(dControl) == hedefAltin.altinKonumSatir && tableLayoutPanel1.GetColumn(dControl) == hedefAltin.altinKonumSutun && dPuan > 0)
            {
                altinliste.Remove(enYakinAltin);
            }

            kasadakiAltinMiktari = dPuan;
        }