Tekrardan merhaba değerli siber eğitmen okuyucuları. Sizin için eğlenceli olacağını düşündüğüm basit bir oyun tasarladım. C# dilinde Windows Form kullanarak taş kağıt makas oyunu yaptım. Oyuncu bilgisayara karşı yarışıyor. Hadi şimdi oyunu ve kodlarını beraber inceleyelim. Kodları Microsoft Visual Studio 2019 da yazdım.
WİNDOWS FORM KULLANIMI
Windows Form Açılımı
Microsoft Visual Studio 2019 programını açıyoruz. Sonra sırasıyla şu adımları izliyoruz.
-
- Create a new Project
- Windows Form Application(.NET Framework)
- Next
Daha sonra ise aşağıdaki adımları takip ediyoruz.
İlk olarak Windows form üzerine 5 tane Picture Box ,8 tane label ve bir tane button ekliyoruz. Ekleme işlemi için View -> ToolBox seçtikten sonra çıkan arama motoruna label yazıyoruz. Daha sonra windows form üzerine sürekle bırak yoluyla ekleyebilirsiniz. Label’lere şekil vermek için üzerine bir kere tıklayarak boyutlarını ayarlayabilirsiniz ve istediğiniz yere taşıyabilirsiniz. Aynı işlemleri Picture Box’lar ve button içinde uyguluyoruz.
Aşağıda hangisinin ne olduğu yazmaktadır.
-
- Oyuncu→ Label
- Bilgisayar →Label
- Oyuncu Puanı → Label
- Bilgisayar Puanı →Label
- Kazanan → Label
- Taş, Kağıt ve Makas görselleri →Picture Box
- Skor → Label
- Start Butonu → Button
Windows Form Renklendirme
Şimdi gelelim renklendirme işlemlerine;
İlk olarak form üzerine resim ekleme işlemini anlatmak istiyorum. Form üzerine bir kere tıklıyoruz. Daha sonra yan tarafta bulunan Properties kutusundan BackgroundImage seçeneğinden istediğimiz görseli seçiyoruz. Görselin form üzerinde düzgün görünmesi için BackgroundImageLayout seçeneğinden Stretch özelliğini şeçiyoruz. Bu özellik görseli form üzerinde kaymasını engelliyor. Bu özelliği daha sonra Picture Box’lar için ayrı ayrı uygulayacağız. Aynı şekilde buttona da görselimizi ekleyebiliriz.
Picture Boxlara görsel eklemek için box’ın üzerine gelin ve üç noktaya tıklayın. Daha sonra orada bulunan Choose image özelliğini kullanarak ekleyebilirsiniz. Ayrıca aynı yerden stretch özelliğini seçmelisiniz.
Label’leri renklendirme işlemine gelelim. Renklendirmek istediğimiz label’e üzerine geliyoruz. Properties kutusunda bulunan BackColor dan istediğimiz renk seçimini yapıyoruz. Daha sonra Text kısmına label’ın ismini yazıyoruz. Font özelliğiyle yazınızın fontunu değiştirebilir ve ForeColor ile yazının rengini değiştirebiliriz. BorderStyle ile kenarlıklarını seçiyoruz. Ben çoğunlukla Fixed3D özelliğini seçtim. Bu aşamaları tüm label , Picture box ve button için yapıyoruz.
Bu şekilde form üzerinde düzenlemeleri yaptıktan sonra kodları yazmaya başlayabiliriz. Örneğin button için kodları yazacaksak buttonun üzerine çift tıklamamız yeterli olacaktır.
Çalışma Mantığı
İlk olarak oyuncu hamlesini (taş-kağıt-makas) seçer daha sonra start butonuna tıkladığınızda bilgisayar hamlesini seçer.
Bilgisayar puanı ya da oyuncu puanı 10 olduğunda oyun sonlanacak.
KODLAR
Kodlar şu şekildedir:
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Tas_Kagıt_Makas { public partial class Form1 : Form { public Form1() { InitializeComponent(); } string O_Secim; //oyuncu seçimi string B_Secim; //bilgisayar seçimi int Oyncu_Puan; //oyuncu puanı int B_Puan; //bilgisayar puanı int rastgele; Random random = new Random(); //rastgele sayılar üretir. private void Tas_Click(object sender, EventArgs e) { Oyuncu.ImageLocation = "Resimler/tas.jpg"; //Picture Box'a taş resmini ekler O_Secim = "Taş"; } private void Kagıt_Click(object sender, EventArgs e) { Oyuncu.ImageLocation = "Resimler/kagit.jpg";//Picture Box'a kağıt resmini ekler O_Secim = "Kağıt"; } private void Makas_Click(object sender, EventArgs e) { Oyuncu.ImageLocation = "Resimler/makas.jpg"; //Picture Box'a makas resmini ekler O_Secim = "Makas"; } private void Bilgisayar_Hamle() { //3 seçeneğimiz var Taş Kağıt Makas -> 1,2,3 rastgele = random.Next(1, 4); if(rastgele==1) { //Ben görseller için Resimler isminde bir dosya oluşturdum ve oradan görselleri çektim. Bilgisayar.ImageLocation = "Resimler/tas.jpg"; B_Secim = "Taş"; } else if(rastgele==2) { Bilgisayar.ImageLocation = "Resimler/kagit.jpg"; B_Secim = "Kağıt"; } else if(rastgele==3) { Bilgisayar.ImageLocation = "Resimler/makas.jpg"; B_Secim = "Makas"; } } private void btn_oyun_Click(object sender, EventArgs e) { //Start butonuna tıkladığımızda oyuncu ve bilgisayar puanı sıfırsa tümünün içini boşaltır. if(Oyncu_Puan==0 && B_Puan==0) { label5.Visible = false; label6.Visible = false; Oyuncu_Puanı.Text = "0"; Bilgisayar_Puanı.Text = "0"; } //oyuncu seçimi boşken bilgisayar hamle yapmaya çalışırsa uyarı alır. if(O_Secim==null) { MessageBox.Show("Hamle Şeçimi Yapmalısınız.", "Uyarı", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { Bilgisayar_Hamle(); } puanlama(); } private void puanlama() { if(O_Secim == "Taş" && B_Secim == "Kağıt") { B_Puan++; //Taş kağıtı sarar.Bilgisayar puanı 1 artar. Bilgisayar_Puanı.Text = B_Puan.ToString(); // Ekrana puanı yazdırır. } else if(O_Secim == "Taş" && B_Secim == "Makas") { Oyncu_Puan++; //Taş makası kırar.Oyuncu puanı 1 artar. Oyuncu_Puanı.Text = Oyncu_Puan.ToString(); } else if (O_Secim == "Kağıt" && B_Secim == "Taş") { Oyncu_Puan++; //kağıt taşı sarar. Oyuncu_Puanı.Text = Oyncu_Puan.ToString(); } else if (O_Secim == "Kağıt" && B_Secim == "Makas") { B_Puan++; //makas kağıdı keser. Bilgisayar_Puanı.Text = B_Puan.ToString(); } else if (O_Secim == "Makas" && B_Secim == "Taş") { B_Puan++; //taş makası kırar. Bilgisayar_Puanı.Text = B_Puan.ToString(); } else if(O_Secim=="Makas" && B_Secim=="Kağıt") { Oyncu_Puan++; //makas kağıdı keser. Oyuncu_Puanı.Text = Oyncu_Puan.ToString(); } //Bilgisayar puanı ve oyuncu puanı 10 olduğunda kazananı ekrana yazdırır. if(B_Puan==10 || Oyncu_Puan==10) { label5.Visible = true; label6.Visible = true; // kazanan ekrana yazdırıldıktan sonra tüm değerler sıfırlanır. if(B_Puan> Oyncu_Puan) { label6.Text = "BİLGİSAYAR"; Oyncu_Puan = 0; B_Puan = 0; Bilgisayar.ImageLocation = null; Oyuncu.ImageLocation = null; B_Secim = null; O_Secim = null; } else if (Oyncu_Puan> B_Puan) { label6.Text = "OYUNCU"; Oyncu_Puan = 0; B_Puan = 0; Bilgisayar.ImageLocation = null; Oyuncu.ImageLocation = null; B_Secim = null; O_Secim = null; } } } } } |
Kodlara github hesabımdan da erişebilirsiniz. Bağlantı için tıklayınız.
Ben kodları yazarken çok eğlendim. Umarım sizde seversiniz. Kodda anlamadığınız yerleri yorum kısmından sorabilirsiniz. Bir sonraki içerik de görüşmek üzere?.
Diğer içeriklerime yazar sayfamdan ulaşabilirsiniz.
Yazılım dolu günlere 🙂
Eğlenceli duruyor. Kodları denemeye gidiyorum ???
Resimleri Bulamadım Nerede Yardımcı Olur musun?
İyi günler github hesabıma yükledim görselleri. Sayfadaki linkten github hesabıma bakabilirsiniz 🙂
Allah razı olsun Allah tuttuğu altın etsin Allah ne muradın varsa versin Ayağına Kâbe sevabı yazılsın, Allah yavuz dilden kem nazardan saklasın, yolun Hicaz olsun, el kazana sen yiyesin, mutluluk yağmuru altında kaftansız kalasın.
Teşekkür ederim. Kolay gelsin :).