C# Top Toplama Oyunu

İbrahim     28 Mart 2017     1299     0    
Csharp top toplama oyunuBu makalede yapmış olduğum top(nesne) toplama oyununu sizinle paylaşıyorum.Amacı bariz, topları yakalamayı çalışıyoruz.Toplanan her toptan 10 puan geliyor.Başlangıç olarak 3 can veriliyor ve yere değdiğince bir can eksiliyor.3 canı da kaybettiğinizde oyun bitiyor.Ayrıca skor tabelası da var.En yüksek puan isminizle beraber skor tabelasına kaydediliyor.Projeyi indirerek kodlarını inceleyebilirsiniz.Ayrıca üstüne kendi düşüncelerinizi katarak projeyi geliştirebilir, daha zevkli bir hale getirebilirsiniz.

Kaynak Kodlar

Değişkenlerimizi tanımlıyoruz.

        public Random Rndm { get; } = new Random();
        public Button[] Sayi { get; private set; }
        public static object Puan { get; set; }

        private int _x, _y, _sure, _sayac, _can = 3, _nesneHareketHizi = 15, _puan;
        private const int ButonSayi = 1;

Yuvarlak buton oluşturmak için sınıfımızı yazıyoruz.

public class YuvarlakButon : Button
        {
            protected override void OnResize(EventArgs e)
            {
                base.OnResize(e);
                var gp = new GraphicsPath();
                gp.AddEllipse(new Rectangle(Point.Empty, Size));
                Region = new Region(gp);
            }
        }

Form yüklendiğinde nesneyi oluşturması için metodu çağırıyoruz

 private void FormOyun_Load(object sender, EventArgs e)
        {
            lblCan.Text = _can.ToString();
            timerNesneOlustur.Start();
        }

Yukarıdan düşecek nesnemizi(topları) oluşturuyoruz.

private void timerNesneOlustur_Tick(object sender, EventArgs e)
        {
            Sayi = new Button[ButonSayi];
            if (_sayac == 0)
            {
                _sayac++;
                _sure = Rndm.Next(1, 4);
            }
            if (_sure == 0)
            {
                _x = Rndm.Next(0, 861);
                _y = 50;
                var yb = new YuvarlakButon
                {
                    Enabled = false,
                    Size = new Size(30, 30),
                    Location = new Point(_x, _y),
                    BackColor = Color.Yellow
                };
                yb.FlatAppearance.BorderSize = 11;
                yb.FlatStyle = FlatStyle.Flat;
                yb.FlatAppearance.BorderColor = Color.Thistle;
                Controls.Add(yb);
                Sayi[ButonSayi-1] = yb;
                _sayac = 0;
                timerNesneDusur.Start();
            }
            else _sure--;
        }

Nesnemizi(topları) düşüyoruz.

private void timerNesneDusur_Tick(object sender, EventArgs e)
        {
            foreach (Control item in Controls)
            {
                if (item is Button)
                {
                    item.Top += 5;
                }
            }
            timerNesneOlustur.Enabled = true;
        }

Kendi nesnemizi hareket ettirmek için gereken kodları ve yukarıdan düşen nesneler, kendi nesnemize değdiğinde ne yapması gerektiğini yazıyoruz

private void FormOyun_KeyDown(object sender, KeyEventArgs e)
        {
            var sagSol = lblNesnem.Location.X;

            if (e.KeyCode == Keys.Right && sagSol <= 810)
                sagSol += _nesneHareketHizi;
            else if (e.KeyCode == Keys.Right && sagSol > 810)
                sagSol = 825;

            if (e.KeyCode == Keys.Left && sagSol >= 15)
                sagSol -= _nesneHareketHizi;
            else if (e.KeyCode == Keys.Left && sagSol < 15)
                sagSol = 0;

            lblNesnem.Location = new Point(sagSol, 505);

            //temas olduysa
            foreach (Control item in Controls)
            {
                if (!(item is Button)) continue;
                if (item.Bottom >= lblNesnem.Top && item.Right >= lblNesnem.Left && item.Left <= lblNesnem.Right)
                {
                    Controls.Remove(item);
                    _puan += 10;
                    label5.Text = _puan.ToString();
                    if (_puan % 90 != 0 || timerNesneDusur.Interval == 5) continue;
                    timerNesneDusur.Interval -= 4;
                    _nesneHareketHizi += 2;
                }
                else if (item.Bottom >= 600)
                {
                    Controls.Remove(item);
                    _can--;
                    lblCan.Text = _can.ToString();
                    if (_can != 0) continue;
                    timerNesneOlustur.Stop();
                    timerNesneDusur.Stop();
                    if (Convert.ToInt32(FormGiris.Puan) < _puan-1)
                    {
                        FormGiris.Puan = _puan.ToString();
                        MessageBox.Show(@"Tebrikler En Yüksek Puan!Puanınız : " + _puan, @"Oyun Bitti!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        var kayit = new FormSkorKayit();
                        kayit.Show();
                    }
                    else
                        MessageBox.Show(@"Puanınız : " + _puan, @"Oyun Bitti!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    var gecis = new FormGiris();
                    gecis.Show();
                    Hide();
                }
            }
        }

Oyun için yazılacan kodlar bu kadar arkadaşlar.Giriş formu için yada skor tablosu formu için yazılan kodları buraya eklemedim.

İyi kodlamalar!

İNDİR


Etiketler:  
csharp
top-toplama-oyunu
dusen-top-oyunu
top-toplama


Paylaş:  

Bir Cevap Yazın