2 Şub 2016

C#''ta Labirent Oyunu Nasıl Yapılır?


Bu oyunda mouse imlecimizi kırmızı engelleri aşmaycak şekilde Bitiş yazısına ulaştırmaya çalışıyoruz. Eğer imleç bu kırmızı engelleri aşarsa yeniden başlangıç noktasına dönmektedir.
Bunu sağlamak için lblBasla.Location'u kullanarak bunu bir Point nesnesine atadım ve her defasında buraya dönmesini sağladım. Oyun bittiği zaman program bize tekrar oynamak isteyip istemediğimizi de sormaktadır. Kaynak dosya buradan indirilebilir. Ya da aşağıdaki kodları incelenebilir. Not: MouseEnter metodu Bitiş ve Başlangıç labelleri hariç tüm labellar işaretlenerek açılmıştır. Böylece aşağıdaki label18_MouseEnter metodu sadece label18 için değil tüm kırmızı engeller için geçerli olmuştur.

Kodlar;
        int sure = 0;
        Point p;
        DialogResult sonuc;

        private void Form1_Load(object sender, EventArgs e)
        {
            timer1.Interval = 1000;
            p = lblBasla.Location; // lblBasla'nın konumu X ve Y olarak alınarak p değişkenine atandı.
            //Oyun açıldığında mouse konum olarak başla yazısının üstünde olması için aşağıdaki kod yazılır
            Cursor.Position = PointToScreen(p);
            timer1.Start();
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            sure++;
            lblSure.Text = sure.ToString();
            if (sure == 40)
            {
                timer1.Stop();
                sonuc = MessageBox.Show("Süre doldu. Tekrar oynamak ister misiniz?", "Soru", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (sonuc == DialogResult.Yes)
                {
                    Cursor.Position = PointToScreen(p);
                    sure = 0;
                    timer1.Start();
                }
                else
                {
                    this.Close();
                }
            }
        }
        private void label18_MouseEnter(object sender, EventArgs e)
        {
            Cursor.Position = PointToScreen(p);
        }
        private void lblBitis_MouseEnter(object sender, EventArgs e)
        {
            timer1.Stop();
            sonuc = MessageBox.Show("Tebrikler, oyunu tamamladınız. Tekrar oynamak ister misiniz?", "Soru", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (sonuc == DialogResult.Yes)
            {
                Cursor.Position = PointToScreen(p);
                sure = 0;
                timer1.Start();
            }
            else
            {
                this.Close();
            }
        }
        private void Form1_MouseEnter(object sender, EventArgs e)
        {
            p = lblBasla.Location;
            Cursor.Position = PointToScreen(p);
        }

3 yorum:

  1. biraz daha gelişmeli
    BİLİŞİM OKUYORUM BENDE
    10-B
    labellardan çıkınaca kabul ediyor onun gelişmesi lazım

    YanıtlaSil
  2. teşekkür ederim eğlenceli olmuş :)

    YanıtlaSil
  3. Burda labelı nasıl dikey yaptınız

    YanıtlaSil