Bu örneğimizde Visual Studio programında bir C# Windows Form uygulaması oluşturarak Rasgele Zar Atma programı gerçekleştireceğiz.
Zar atma oyunu yapımı bir çok yöntemle gerçekleştirilebilir. Biz uygulamamızı geliştirirken PictureBox, ImageList ve Timer denetimlerini kullanacağız.
Butona her bastığınızda rasgele iki zar seçilerek ekranda gösterimi sağlanacaktır.

Örneğimizi tamamladığımızda yukarıdaki gibi görüntülenecektir.
Örneğimize geçelim.
Adım 1: Toolbox penceresinden 2 adet PictureBox, 1 adet Button, 1 adet ImageList ve 1 adet Timer kontrolünü form üzerine sürükleyin. Form için gerekli renklendirme, boyut ve konumlandırmaları istediğiniz gibi yapabilirsiniz.

Adım 2: Kullanmak istediğiniz zar görsellerini hazırlayın.

Adım 3: Bu adımda ImageList kullanımını göreceksiniz. ImageList sol üst köşedeki küçük üçgene tıklayarak gerekli ayarlamaları yapın ve Choose images seçeneğine tıklayın.

Adım 4: Bu adımda kullanacağınız resimleri seçeceğiniz bölüm açılacaktır. Add butonuna tıklayarak resimlerinizin olduğu klasöre gidin ve resimleri seçerek Aç butonuna tıklayın.

Adım 5: PictureBox kontrollerini ayarlamak PictureBox kontrollerini seçerek aşağıdaki ayarlamaları yapın.

Adım 7: Button1_Click için aşağıdaki kodları oluşturun.
1 2 3 4 5 6 7 | private void button1_Click(object sender, EventArgs e) { timer1.Start(); button1.Enabled = false; } |
Adım 8: sayac isimli bir değişken tanımlayın. (Global)

Adım 9: Timer kontrolünde çift tıklayarak Timer1_Tick olayına aşağıdaki kodları yazın.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | private void timer1_Tick(object sender, EventArgs e) { int zar1, zar2; Random rnd = new Random(); zar1 = rnd.Next(0, 6); zar2 = rnd.Next(0, 6); pictureBox1.Image = ımageList1.Images[zar1]; pictureBox2.Image = ımageList1.Images[zar2]; sayac++; if (sayac == 30) { timer1.Stop(); sayac = 0; button1.Enabled = true; } } |
Adım 10: Kodlarımızın tamamı ve açıklamalar:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace zar_atma_oyunu { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { timer1.Start(); button1.Enabled = false; } int sayac = 0; private void timer1_Tick(object sender, EventArgs e) { int zar1, zar2; Random rnd = new Random(); zar1 = rnd.Next(0, 6); zar2 = rnd.Next(0, 6); pictureBox1.Image = ımageList1.Images[zar1]; pictureBox2.Image = ımageList1.Images[zar2]; sayac++; if (sayac == 30) { timer1.Stop(); sayac = 0; button1.Enabled = true; } } } } |
Örneğimizde Button tıklandığı zaman timer1 kontrolü başlatılmaktadır. Burada timer1 kullanma amacımız zar atma butonuna basıldığında küçük bir animasyon eklemek içindir. Eğer animasyon eklemek istemeseydik timer kontrolüne gerek olmayacak ve aşağıdaki kodları Button1_Clik olayına eklememiz yeterli olacaktı.
1 2 3 4 5 6 7 8 | int zar1, zar2; Random rnd = new Random(); zar1 = rnd.Next(0, 6); zar2 = rnd.Next(0, 6); pictureBox1.Image = ımageList1.Images[zar1]; pictureBox2.Image = ımageList1.Images[zar2]; |
Zarların rasgele seçilmesi işlemi için ;
1 2 3 4 5 6 | int zar1, zar2; Random rnd = new Random(); zar1 = rnd.Next(0, 6); zar2 = rnd.Next(0, 6); |
kodlarını kullandık. 0-6 arası (0-1-2-3-4-5) rasgele bir sayı tutulmasını ve tutulan bu sayıların değişkenlere aktarılmasını sağladık. Burada 0 dahil olma nedeni ImageList denetiminin ilk indeks numarasının 0′ dan başlamasıdır.
daha sonra tutulan bu rasgele indek numarasının PictureBox’lar üzerinde görüntülenmesi aşağıdaki kodlar sayesinde gerçekleştirilmiştir.
1 2 3 4 | pictureBox1.Image = ımageList1.Images[zar1]; pictureBox2.Image = ımageList1.Images[zar2]; |
Kodlarımızın diğer kısımları zar çevrilirken verilen animasyon ile ilgili bölümdür.
Örneğe ait Video:
Resimler bulanık gibi çıkıyor
Adım 3 teki ayarları kontrol edebilirsin.
Onlar doğru da resimleri paintten yaptım ondan olabilir mi
evet. resim kalitesiyle ilgilide olabilir.
kaliteyle ilgiliymiş çözdüm teşekkürler