KONU : C Sharp Uygulamalar - C Sharp ( C# ) form var mısın yok musun oyunu. C sharp dinamik olarak forma buton ekleme. Buton tıklama olayı ve tıklanan butonun arka plan rengi text değeri özelliklerini değiştirme. Dizi ve generic list kullanım örnekleri.
UYGULAMAYI İNDİR
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace C_Sharp_Form_Var_Misin_Yok_Musun_Oyunu
{
public partial class Form1 : Form
{
const int kutuSayisi = 24;
const int maxOdulTutari = 240000;
Button oncekiButon = null;
int rasgeneSayi;
int[] kutular;
int[] oduller;
List< int > kutuNumaralar;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//var mısın yok musun oyunu için 24 kutum olsun istenirse arttırılabilir
kutular = new int[kutuSayisi];
oduller = new int[kutuSayisi];
kutuNumaralar = new List();
//Oyunu başlat
yeniOyunBaslat();
}
//Bu metot ile oluşturduğum 24 kutuyu kutular dizisine rasgele ekleyeceğim.
//Böylece ödülleri rasgele dağıtmış olacağım.
private void odulleriKutularaRasgeleDagit()
{
Random rnd = new Random();
for (int i = 0; i < kutuSayisi; i++)
{
//0 ile kutuSayisi arasinda rasgele kutu seç
rasgeneSayi = rnd.Next(0, kutuNumaralar.Count);
kutular[i] = kutuNumaralar[rasgeneSayi];
kutuNumaralar.Remove(kutuNumaralar[rasgeneSayi]);
}
}
//ödülleri küçükten büyüğe doğru sırası ile oduller dizisine ekliyorum.
private void odulleriDoldur()
{
for (int i = 0; i < kutuSayisi; i++)
{
oduller[i] = (maxOdulTutari / kutuSayisi) * i;
}
}
//Kutu nuramaraları sırasıyla oluşturup kutuNumarala listine ekliyorum
private void kutuNumaralaeiOlustur()
{
for (int i = 0; i < kutuSayisi; i++)
{
kutuNumaralar.Add(i);
}
}
//Bu metot ile kullanılacak olan kutuları dinamik olarak forma ekliyorum.
//Kutuları butonlardan oluşturdum. Butona tıklanınca bu butonun daha önce
//atadığım ödül miktarını gösteceğim. Eğer miktar büyükse arka plan kırmızı
//eğer ödül miktarı küçük ise arka plan mavi renk olarak göstereceğim.
//ilk forma butonlar yüklendiğinde beyaz renk ile yerleştireceğim.
private void gorselButonlariOlusturYerlestir()
{
int a = 50;
List< Button > gorselKutular = new List< Button >();
for (int i = 0; i < kutuSayisi; i++)
{
Button gorselKutu = new Button();
gorselKutu.Location = new System.Drawing.Point(75 * (i % 6) + 15, 50 * (i / 6) + 15 + a);
gorselKutu.Name = i.ToString();
gorselKutu.BackColor = Color.White;
gorselKutu.FlatStyle = FlatStyle.Flat;
gorselKutu.Size = new System.Drawing.Size(75, 50);
gorselKutu.TabIndex = 0;
gorselKutu.Text = "";
gorselKutu.UseVisualStyleBackColor = true;
gorselKutu.Click += new EventHandler(gorselKutu_Click);
this.Controls.Add(gorselKutu);
}
}
//Kutuları açmak için butona tıklama olayı tetiklenecek. Burada butona atanan
//değer butonun text kısmına yazdırağım. Arka plan rengini de bu kutudaki
//ödül miktarının büyüklüğüne göre kırmızı veya mavi olarak göstereceğim
void gorselKutu_Click(object sender, EventArgs e)
{
Button gorselKutu = sender as Button;
int deger = oduller[kutular[int.Parse(gorselKutu.Name)]];
gorselKutu.Text = deger.ToString();
if (deger <= maxOdulTutari / 2)
gorselKutu.BackColor = Color.Blue;
else
gorselKutu.BackColor = Color.Red;
if (oncekiButon != null)
{
oncekiButon.FlatAppearance.BorderSize = 1;
}
gorselKutu.FlatAppearance.BorderSize = 5;
oncekiButon = gorselKutu;
}
//Oyuna yeniden başlamak için bu butonu kullanacağım
private void btnYenidenBasla_Click(object sender, EventArgs e)
{
yeniOyunBaslat();
}
private void kutulariTemizle()
{
this.Controls.Clear();
this.Controls.Add(this.btnYenidenBasla);
}
private void yeniOyunBaslat()
{
kutuNumaralar.Clear();
kutulariTemizle();
kutuNumaralaeiOlustur();
odulleriDoldur();
odulleriKutularaRasgeleDagit();
gorselButonlariOlusturYerlestir();
}
}
}

Hiç yorum yok :
Yorum Gönder