C# Dersleri – Köstebek Oyunu

C# derslerimize köstebek oyunu ile devam ediyoruz, peki nedir köstebek oyunu diyorsanız aşağıdaki resim hatırlamanıza yardımcı olur 🙂
whack-a-mole
şimdi yapacağımız uygulama bu kadar görsel veya detaylı değil ama işin mantığını kavrama açısında önemli ilk olarak aşağıdaki form görüntüsünü oluşturuyoruz..
kostebek1
neler var form üzerinde iki buton, iki label, bir flowLayoutPanel, bir Timer ve bir groupbox içine eklenmiş üç radio buton şimdi kodları yazmadan önce mantığını anlatayım sonra kodları incelersiniz..
Eklediğiniz flowLayoutPanel genişliğine göre belli bir sayıda buton üretmemiz gerekiyor benim uygulamam da 42, üretilen her butona kostebekyuvasi ismini verdim, yine 1 ile 42 arasında rastgele bir değer üretiliyor buna karşılık gelen kostebekyuvasi hangisi ise o butonun zemin rengi kırmızı oluyor, daha eğer kullanıcı rengi tekrar siyah olmadan basarsa skor bir artıyor yanlış butona basarsa bir azalıyor..
kostebekyuvasi

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 kostebekyakalama
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int skor = 0;
Random rnd = new Random();
//www.bilisimogretmeni.com
private void Form1_Load(object sender, EventArgs e)
{
for (int i = 0; i < 42; i++)
{
Button kostebekyuvasi = new Button();
kostebekyuvasi.BackColor = Color.Black;
kostebekyuvasi.ForeColor = Color.White;
kostebekyuvasi.Width = 50;
kostebekyuvasi.Height = 50;
kostebekyuvasi.Text = (i + 1).ToString();
flowLayoutPanel1.Controls.Add(kostebekyuvasi);
}
}
private void timer1_Tick(object sender, EventArgs e)
{
int rastgele = rnd.Next(1, 42);
//www.bilisimogretmeni.com    
foreach (var b in flowLayoutPanel1.Controls)
{
Button kostebekyuvasi = b as Button;
if (kostebekyuvasi.Text == rastgele.ToString())
{
kostebekyuvasi.BackColor = Color.Red;
kostebekyuvasi.Click += new EventHandler(kostebekyuvasi_Click);
}
else
{
kostebekyuvasi.BackColor = Color.Black;
}
}
label2.Text = skor.ToString();
}
void kostebekyuvasi_Click(object sender, EventArgs e)
{
Button kostebekyuvasi = sender as Button;
if (kostebekyuvasi.BackColor == Color.Red)
skor++;
else
skor--;
}
//www.bilisimogretmeni.com
private void button1_Click(object sender, EventArgs e)
{
if (radioButton1.Checked) timer1.Interval = 1000;
if (radioButton2.Checked) timer1.Interval = 500;
if (radioButton3.Checked) timer1.Interval = 200;
timer1.Start();
}
private void button2_Click(object sender, EventArgs e)
{
timer1.Stop();
}
}
}

Pin It on Pinterest