public GizliAltin(Altin altin) { this.altin = altin; gizliAltinSayisi = altin.altinSayisi * AnaForm.parametre.gizliAltinOrani / 100; gizliAltinOlustur(gizliAltinSayisi); }
public Oyuncu(char oyuncuTipi, int altinMiktari, int hamleMaliyeti, int hedefMaliyeti, int hamleHakki, Konum konum, PictureBox gorsel, Altin[] Altinlar) { this.hedefAltin = null; this.Altinlar = Altinlar; this.hamleHakki = hamleHakki; this.hamleMaliyeti = hamleMaliyeti; this.hedefMaliyeti = hedefMaliyeti; this.oyuncuTipi = oyuncuTipi; this.altinMiktari = altinMiktari; this.konum = konum; this.gorsel = gorsel; }
public B_Oyuncusu(Altin altin, GizliAltin gizliAltin, List <List <Block> > grid, int konumY, int konumX) { this.oyuncuRengi = Color.Green; this.hamleMaliyet = AnaForm.parametre.b_OyuncuHamleMaliyet; this.hedefMaliyet = AnaForm.parametre.b_OyuncuHedefMaliyet; this.altin = altin; this.gizliAltin = gizliAltin; this.grid = grid; this.konum = (konumX, konumY); this.hedef = (konumX, konumY); this.oyuncuNumarasi = -2; this.oyuncuIsmi = "B"; }
// ooyundaki her bir gizli altının çizdirilme işlemi yapılmaktadır public void gizliAltinCiz(PaintEventArgs args, List <List <Block> > grid, Altin altin) { for (int i = 0; i < AnaForm.parametre.boyutY; i++) { for (int j = 0; j < AnaForm.parametre.boyutX; j++) { if (altin.altinMatris[i, j] == 2) { blockBoya(args, Color.Orange, grid[i][j], altin.degerMatris[i, j].ToString()); } } } }
public OyunAnaLabel(int tabanYuksekligi, int tabanGenisligi) { this.turlar = new int[] { 1, 1, 1, 1 }; this.tabanGenisligi = tabanGenisligi; this.tabanYuksekligi = tabanYuksekligi; // oyunun taban kısmı teorik olarak oluşturulur this.taban = new Taban(tabanYuksekligi, tabanGenisligi); // oyunun altin kısmı teorik olarak oluşturulur this.altin = new Altin(); // oyunun gizliAltin kısmı teorik olarak oluşturulur this.gizliAltin = new GizliAltin(altin); altin.altinSayisi -= gizliAltin.gizliAltinSayisi; // oyunda yer alan 4 farklı oyuncu bir listenin içinde polymorghism kullanılarak oluşturulur this.oyuncular = oyuncular = new List <Oyuncu>() { { new A_Oyuncusu(altin, gizliAltin, taban.grid, 0, 0) }, { new B_Oyuncusu(altin, gizliAltin, taban.grid, 0, AnaForm.parametre.boyutX - 1) }, { new C_Oyuncusu(altin, gizliAltin, taban.grid, AnaForm.parametre.boyutY - 1, 0) }, { new D_Oyuncusu(altin, gizliAltin, taban.grid, AnaForm.parametre.boyutY - 1, AnaForm.parametre.boyutX - 1) }, }; // oyunda ki her oyuncu için kayıtlar tutulması için dosyalar oluşturulur this.dosyalar = dosyalar = new List <Dosya>() { { new Dosya("A_Oyuncu_Kayitlari") }, { new Dosya("B_Oyuncu_Kayitlari") }, { new Dosya("C_Oyuncu_Kayitlari") }, { new Dosya("D_Oyuncu_Kayitlari") } }; // oluşturulan dosyalara başlıklar eklenir foreach (var dosya in dosyalar) { dosya.DosyaYazdır("Oyun Başladı..."); } this.cizimYonetimi = new CizimYonetimi(); this.Paint += new PaintEventHandler(this.oyunAnaLabelCizdir); this.Dock = DockStyle.Fill; anaTimer = new DispatcherTimer(); anaTimer.Interval = new TimeSpan(0, 0, 0, 0, 400); // 400 Milliseconds anaTimer.Tick += new EventHandler(this.anaTimer_Tick); anaTimer.Start(); }
public Altin HedefBelirle() { int[] altinUzakliklari = new int[Altinlar.Length]; int enYakin = int.MaxValue, enYakinYer = 0, gizliAltinSayisi = 0; for (int j = 0; j < Altinlar.Length; j++) { if (!Altinlar[j].GetGorunurluk() && Altinlar[j].GetDeger() != int.MaxValue) { gizliAltinSayisi++; } altinUzakliklari[j] = (Math.Abs(Altinlar[j].GetX() - konum.x) + (Math.Abs(Altinlar[j].GetY() - konum.y))); if (altinUzakliklari[j] < enYakin && Altinlar[j].GetGorunurluk()) { enYakin = altinUzakliklari[j]; enYakinYer = j; } } if (oyuncuTipi == 'A') { Altinlar[enYakinYer].gorsel.Image = Image.FromFile("resimler//hedefMavi.png"); Altinlar[enYakinYer].gorsel.BackgroundImage = Image.FromFile("resimler//altin.png"); //Console.WriteLine("{0}'nın hedefi : - {1} , {2}", oyuncuTipi, Altinlar[enYakinYer].GetX(), Altinlar[enYakinYer].GetY()); return(Altinlar[enYakinYer]); } else if (oyuncuTipi == 'B') { int enKarli = int.MinValue; int enKarliYer = 0; for (int i = 0; i < Altinlar.Length; i++) { if (Altinlar[i].GetDeger() - (altinUzakliklari[i] * hamleMaliyeti + hedefMaliyeti) > enKarli && Altinlar[i].GetGorunurluk()) { enKarli = Altinlar[i].GetDeger() - (altinUzakliklari[i] * hamleMaliyeti + hedefMaliyeti); enKarliYer = i; } } //Console.WriteLine("{0}'nin hedefi : - {1},{2} - {3}", oyuncuTipi, Altinlar[enKarliYer].GetX(), Altinlar[enKarliYer].GetY(), enKarli); Altinlar[enKarliYer].gorsel.Image = Image.FromFile("resimler//hedefYesil.png"); Altinlar[enKarliYer].gorsel.BackgroundImage = Image.FromFile("resimler//altin.png"); return(Altinlar[enKarliYer]); } else if (oyuncuTipi == 'C') { Altin[] gizliler = new Altin[gizliAltinSayisi]; int[] uzakliklar = new int[gizliAltinSayisi]; int k = 0; for (int i = 0; i < Altinlar.Length; i++) { if (!Altinlar[i].GetGorunurluk() && Altinlar[i].GetDeger() != int.MaxValue) { gizliler[k] = Altinlar[i]; uzakliklar[k] = (Math.Abs(gizliler[k].GetX() - konum.x) + (Math.Abs(gizliler[k].GetY() - konum.y))); k++; } } for (int i = 0; i < gizliler.Length - 1; i++) { for (int j = 0; j < gizliler.Length - i - 1; j++) { if (uzakliklar[i] > uzakliklar[j + 1]) { int tempUzaklik = uzakliklar[i]; uzakliklar[i] = uzakliklar[j]; uzakliklar[j] = tempUzaklik; Altin tempAltin = gizliler[i]; gizliler[i] = gizliler[j]; gizliler[j] = tempAltin; } } } int gizlenecekSayisi = 0; if (gizliler.Length >= 2) { gizlenecekSayisi = 2; } else { gizlenecekSayisi = gizliler.Length; } for (int i = 0; i < gizlenecekSayisi; i++) { gizliler[i].SetGorunurluk(true); altinToplamaOyunu.logEkrani.Items.Add("Oyuncu " + oyuncuTipi + " (" + gizliler[i].GetX() + " , " + gizliler[i].GetY() + ") konumundaki altını görünür yaptı."); altinToplamaOyunu.logEkrani.Refresh(); } int enKarli = int.MinValue; int enKarliYer = 0; for (int i = 0; i < Altinlar.Length; i++) { if (Altinlar[i].GetDeger() - (altinUzakliklari[i] * hamleMaliyeti + hedefMaliyeti) > enKarli && Altinlar[i].GetGorunurluk()) { enKarli = Altinlar[i].GetDeger() - (altinUzakliklari[i] * hamleMaliyeti + hedefMaliyeti); enKarliYer = i; } } //Console.WriteLine("{0}'nin hedefi : - {1},{2} - {3}", oyuncuTipi, Altinlar[enKarliYer].GetX(), Altinlar[enKarliYer].GetY(), enKarli); Altinlar[enKarliYer].gorsel.Image = Image.FromFile("resimler//hedefKirmizi.png"); Altinlar[enKarliYer].gorsel.BackgroundImage = Image.FromFile("resimler//altin.png"); return(Altinlar[enKarliYer]); } else if (oyuncuTipi == 'D') { int enKarli = int.MinValue; int enKarliYer = -1; for (int i = 0; i < Altinlar.Length; i++) { if (Altinlar[i] == Oyuncular[0].hedefAltin) { int secenOyuncununUzakligi = (Math.Abs(Altinlar[i].GetX() - Oyuncular[0].konum.x) + (Math.Abs(Altinlar[i].GetY() - Oyuncular[0].konum.y))); int uzaklik = (Math.Abs(Altinlar[i].GetX() - konum.x) + (Math.Abs(Altinlar[i].GetY() - konum.y))); if (uzaklik > hamleHakki) { if (uzaklik > secenOyuncununUzakligi) { continue; } } } else if (Altinlar[i] == Oyuncular[1].hedefAltin) { int secenOyuncununUzakligi = (Math.Abs(Altinlar[i].GetX() - Oyuncular[1].konum.x) + (Math.Abs(Altinlar[i].GetY() - Oyuncular[1].konum.y))); int uzaklik = (Math.Abs(Altinlar[i].GetX() - konum.x) + (Math.Abs(Altinlar[i].GetY() - konum.y))); if (uzaklik > hamleHakki) { if (uzaklik > secenOyuncununUzakligi) { continue; } } } else if (Altinlar[i] == Oyuncular[2].hedefAltin) { int secenOyuncununUzakligi = (Math.Abs(Altinlar[i].GetX() - Oyuncular[2].konum.x) + (Math.Abs(Altinlar[i].GetY() - Oyuncular[2].konum.y))); int uzaklik = (Math.Abs(Altinlar[i].GetX() - konum.x) + (Math.Abs(Altinlar[i].GetY() - konum.y))); if (uzaklik > hamleHakki) { if (uzaklik > secenOyuncununUzakligi) { continue; } } } if (Altinlar[i].GetDeger() - (altinUzakliklari[i] * hamleMaliyeti + hedefMaliyeti) > enKarli && Altinlar[i].GetGorunurluk()) { enKarli = Altinlar[i].GetDeger() - (altinUzakliklari[i] * hamleMaliyeti + hedefMaliyeti); enKarliYer = i; } } //Console.WriteLine("{0}'nin hedefi : - {1},{2}", oyuncuTipi, Altinlar[enKarliYer].GetX(), Altinlar[enKarliYer].GetY()); if (enKarliYer == -1) { return(null); } Altinlar[enKarliYer].gorsel.Image = Image.FromFile("resimler//hedefSari.png"); Altinlar[enKarliYer].gorsel.BackgroundImage = Image.FromFile("resimler//altin.png"); return(Altinlar[enKarliYer]); } return(Altinlar[0]); }
bool UzerindeMi(Oyuncu oyuncuKonumu, Altin hedefAltin) { return((oyuncuKonumu.konum.x == hedefAltin.GetX() && oyuncuKonumu.konum.y == hedefAltin.GetY()) ? true : false); }
void Yuru(Oyuncu oyuncu, Altin hedefAltin, Panel panelOyun) { for (int i = 0; i < oyuncu.hamleHakki; i++) { if (oyuncu.altinMiktari < oyuncu.hamleMaliyeti) { break; } panelOyun.Refresh(); if (hedefAltin.GetX() - oyuncu.konum.x < 0) { HarcananAltinArttir(oyuncu, oyuncu.hamleMaliyeti); AdimArttir(oyuncu); oyuncu.konum.x -= 1; ArkaPlanToggle(oyuncu); oyuncu.altinMiktari -= oyuncu.hamleMaliyeti; altinToplamaOyunu.logEkrani.Items.Add("Oyuncu " + oyuncu.oyuncuTipi + "(" + oyuncu.konum.x + " , " + oyuncu.konum.y + ") konumuna gitti"); altinToplamaOyunu.logEkrani.Refresh(); IstatistikOlustur(oyuncu, "Oyuncu " + oyuncu.oyuncuTipi + "(" + oyuncu.konum.x + " , " + oyuncu.konum.y + ") konumuna gitti. [-" + oyuncu.hamleMaliyeti + "]"); altinToplamaOyunu.oyuncuLabellar[(int)oyuncu.oyuncuTipi - 65].Text = "Oyuncu : " + oyuncu.oyuncuTipi + " " + oyuncu.altinMiktari; altinToplamaOyunu.oyuncuLabellar[(int)oyuncu.oyuncuTipi - 65].Refresh(); GizliAltinVarmi(oyuncu); oyuncu.gorsel.Left -= oyuncu.gorsel.Width * 2; continue; } else if (hedefAltin.GetX() - oyuncu.konum.x > 0) { HarcananAltinArttir(oyuncu, oyuncu.hamleMaliyeti); AdimArttir(oyuncu); oyuncu.konum.x += 1; ArkaPlanToggle(oyuncu); oyuncu.altinMiktari -= oyuncu.hamleMaliyeti; altinToplamaOyunu.logEkrani.Items.Add("Oyuncu " + oyuncu.oyuncuTipi + "(" + oyuncu.konum.x + " , " + oyuncu.konum.y + ") konumuna gitti"); altinToplamaOyunu.logEkrani.Refresh(); IstatistikOlustur(oyuncu, "Oyuncu " + oyuncu.oyuncuTipi + "(" + oyuncu.konum.x + " , " + oyuncu.konum.y + ") konumuna gitti. [-" + oyuncu.hamleMaliyeti + "]"); altinToplamaOyunu.oyuncuLabellar[(int)oyuncu.oyuncuTipi - 65].Text = "Oyuncu : " + oyuncu.oyuncuTipi + " " + oyuncu.altinMiktari; altinToplamaOyunu.oyuncuLabellar[(int)oyuncu.oyuncuTipi - 65].Refresh(); GizliAltinVarmi(oyuncu); oyuncu.gorsel.Left += oyuncu.gorsel.Width * 2; continue; } if (hedefAltin.GetY() - oyuncu.konum.y < 0) { HarcananAltinArttir(oyuncu, oyuncu.hamleMaliyeti); AdimArttir(oyuncu); oyuncu.konum.y -= 1; ArkaPlanToggle(oyuncu); oyuncu.altinMiktari -= oyuncu.hamleMaliyeti; altinToplamaOyunu.logEkrani.Items.Add("Oyuncu " + oyuncu.oyuncuTipi + "(" + oyuncu.konum.x + " , " + oyuncu.konum.y + ") konumuna gitti"); altinToplamaOyunu.logEkrani.Refresh(); IstatistikOlustur(oyuncu, "Oyuncu " + oyuncu.oyuncuTipi + "(" + oyuncu.konum.x + " , " + oyuncu.konum.y + ") konumuna gitti. [-" + oyuncu.hamleMaliyeti + "]"); altinToplamaOyunu.oyuncuLabellar[(int)oyuncu.oyuncuTipi - 65].Text = "Oyuncu : " + oyuncu.oyuncuTipi + " " + oyuncu.altinMiktari; altinToplamaOyunu.oyuncuLabellar[(int)oyuncu.oyuncuTipi - 65].Refresh(); GizliAltinVarmi(oyuncu); oyuncu.gorsel.Top -= oyuncu.gorsel.Height * 2; continue; } else if (hedefAltin.GetY() - oyuncu.konum.y > 0) { HarcananAltinArttir(oyuncu, oyuncu.hamleMaliyeti); AdimArttir(oyuncu); oyuncu.konum.y += 1; ArkaPlanToggle(oyuncu); oyuncu.altinMiktari -= oyuncu.hamleMaliyeti; altinToplamaOyunu.logEkrani.Items.Add("Oyuncu " + oyuncu.oyuncuTipi + "(" + oyuncu.konum.x + " , " + oyuncu.konum.y + ") konumuna gitti"); altinToplamaOyunu.logEkrani.Refresh(); IstatistikOlustur(oyuncu, "Oyuncu " + oyuncu.oyuncuTipi + "(" + oyuncu.konum.x + " , " + oyuncu.konum.y + ") konumuna gitti. [-" + oyuncu.hamleMaliyeti + "]"); altinToplamaOyunu.oyuncuLabellar[(int)oyuncu.oyuncuTipi - 65].Text = "Oyuncu : " + oyuncu.oyuncuTipi + " " + oyuncu.altinMiktari; altinToplamaOyunu.oyuncuLabellar[(int)oyuncu.oyuncuTipi - 65].Refresh(); GizliAltinVarmi(oyuncu); oyuncu.gorsel.Top += oyuncu.gorsel.Height * 2; continue; } } }