C Sharp Kaplumbağa Tavşan Yarışı - Visual Studio





 


Bu projede bilgisayara küçük bir yarış oyunu yaptırıyoruz.

Hikâyeyi biliyorsunuz:
Kaplumbağa yavaş ama sabırlı, tavşan ise hızlı ama bazen duruyor 😊
Biz de bunu bilgisayarda canlandırıyoruz.

💻 Ne Yapıyoruz?

Ekranda kaplumbağa ve tavşan var
Bir başlat butonuna basıyoruz
Yarış başlıyor
İkisi de ileri doğru hareket ediyor
İlk bitiş çizgisine gelen kazanıyor 🎉

⚙️ Bu Nasıl Çalışıyor?

Programda bir timer (zamanlayıcı) var
👉 Bu, oyunun sürekli ilerlemesini sağlar (yani hareket ederler)
Her “tik” geldiğinde:
Kaplumbağa biraz ilerler 🐢
Tavşan bazen hızlı gider, bazen durur 🐇

🏁 Yarış Nasıl Bitiyor?

Kim en sona (bitiş çizgisine) önce ulaşırsa: 
Program “Kazanan: Kaplumbağa” veya “Kazanan: Tavşan” yazar

🎯 Bu Projede Ne Öğreniyoruz?

Buton kullanmayı
Timer (zamanlayıcı) mantığını
Nesneleri hareket ettirmeyi
Basit oyun mantığı kurmayı

EKLENECEKLER (TOOLBOXTAN):

PictureBox 2 Adet - Panel 1 Adet - Buton 1 Adet - Timer 1 Adet

NESNE İSİMLERİ:

Timer: timer1
PictureBox1: pbKaplumbaga
PictureBox2: pbTavsan

PROGRAMIN KODU:

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 CartoonRace
{
    public partial class Form1 : Form
    {
        private Random rastgele = new Random();
        
        // Bitiş çizgisi pozisyonu
        private int bitisCizgisi =750; 

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            YarisiSifirla();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            YarisiSifirla();
            timer1.Start(); 
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            // --- KAPLUMBAĞA HAREKETİ (Sola gitme kaldırıldı) ---
            int kSans = rastgele.Next(1, 11);
            if (kSans <= 5)       pbKaplumbaga.Left += 4;  // %50 Hızlı yürüyüş
            else if (kSans <= 7)  pbKaplumbaga.Left += 0;  // %20 Duraksama/Takılma (Eski hali geriye kayıyordu)
            else                  pbKaplumbaga.Left += 2;  // %30 Yavaş yürüyüş

            // --- TAVŞAN HAREKETİ (Sola gitme kaldırıldı) ---
            int tSans = rastgele.Next(1, 11);
            if (tSans <= 3)       pbTavsan.Left += 0;      // %30 Uyuma/Durma
            else if (tSans <= 5)  pbTavsan.Left += 9;      // %20 Büyük sıçrama
            else if (tSans <= 8)  pbTavsan.Left += 3;      // %30 Küçük sıçrama
            else                  pbTavsan.Left += 1;      // %20 Çok yavaş ilerleme (Eski hali geriye kayıyordu)

            // Güvenlik önlemi: Pistin solundan dışarı çıkmalarını engelle
            if (pbKaplumbaga.Left < 0) pbKaplumbaga.Left = 0;
            if (pbTavsan.Left < 0) pbTavsan.Left = 0;

            // --- BİTİŞ KONTROLÜ ---
            if (pbKaplumbaga.Left >= bitisCizgisi || pbTavsan.Left >= bitisCizgisi)
            {
                timer1.Stop(); // Yarışı durdur

                if (pbKaplumbaga.Left >= bitisCizgisi && pbTavsan.Left >= bitisCizgisi)
                {
                    MessageBox.Show("İnanılmaz! Beraberlik!", "Yarış Bitti");
                }
                else if (pbKaplumbaga.Left >= bitisCizgisi)
                {
                    MessageBox.Show("KAPLUMBAĞA KAZANDI! 🐢\nYavaş ve kararlı olan kazandı.", "Yarış Sonucu");
                }
                else if (pbTavsan.Left >= bitisCizgisi)
                {
                    MessageBox.Show("TAVŞAN KAZANDI! 🐇\nHızlı olan kazandı.", "Yarış Sonucu");
                }
            }
        }

        private void YarisiSifirla()
        {
            pbKaplumbaga.Left = 0;
            pbTavsan.Left = 0;
        }
    }
}

Program.Cs Dosyasına Dikkat Name Aynı Olmalı:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace CartoonRace
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}