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);
}
biraz daha gelişmeli
YanıtlaSilBİLİŞİM OKUYORUM BENDE
10-B
labellardan çıkınaca kabul ediyor onun gelişmesi lazım
teşekkür ederim eğlenceli olmuş :)
YanıtlaSilBurda labelı nasıl dikey yaptınız
YanıtlaSil