Çözüldü C# sincap yakalama oyununda sincapların kaybolmasını nasıl sağlarım?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Katılım
3 Haziran 2018
Mesajlar
3.833
Çözümler
31
Öncelikle iyi akşamlar. Yarın NTP ödevimin teslim günü, ödev ise çok boyutlu diziler kullanılarak Image Box lar da ki sincapları yakalama oyunu yapma.

Daha açıklayıcı olursak: 16 tane Image Box'ların rastgele bir tanesine sincap fotoğrafı koyup 1 saniye sonra veya tıklanınca yok olmasını sağlamam lazım, 1 saniye sonra ya da sincap fotoğrafı olan bir Image Box a tıklanınca tekrar başka rastgele bir Image Box a sincap fotoğrafı gelmesini sağlamam lazım.

Her şeyi yaptım fakat sincaplar eklendikten bir saniye sonra silinmesini yapamadım o yüzden buradan yardım alma ihtiyacı duydum.

Kodlar:
[CODE lang="csharp"] private void frmGame_Load(object sender, EventArgs e)
{
timer2.Start();
label1.Text = puan.ToString();
}

private void timer2_Tick(object sender, EventArgs e)
{
Random rastgele = new Random();
int satirRastgele = rastgele.Next(4);
int sutunRastgele = rastgele.Next(4);
int sonuc = satirRastgele;
int sonucİki = sutunRastgele;
byte durum = dizi[sonuc, sonucİki];
dizi[sonuc, sonucİki] = 1;

PictureBox kutu = this.Controls.Find("p" + sonuc + sonucİki, true)[0] as PictureBox;



if (durum == 1)
{
kutu.Image = ımageList1.Images[0];
}
}[/CODE]
[CODE lang="csharp"]private void p00_Click(object sender, EventArgs e)
{
if (p00.Image==null)
{

}
else
{
p00.Image = null;
puan++;
label1.Text = puan.ToString();
}
}[/CODE]

Umarım anlaşılmıştır, şimdiden çok teşekkür ederim.
 
Son düzenleyen: Moderatör:
Çözüm
Şu biçimde.

C#:
async void pictureBox1_Click(object sender, EventArgs e)
{
    if (pictureBox1.Image != null)
    {
        await Task.Delay(1000);
        
        pictureBox1.Image = null;
    }
}
Şu biçimde.

C#:
async void pictureBox1_Click(object sender, EventArgs e)
{
    if (pictureBox1.Image != null)
    {
        await Task.Delay(1000);
        
        pictureBox1.Image = null;
    }
}
 
Çözüm
Şu biçimde.

C#:
async void pictureBox1_Click(object sender, EventArgs e)
{
    if (pictureBox1.Image != null)
    {
        await Task.Delay(1000);
       
        pictureBox1.Image = null;
    }
}

Başka bir timer ile çözmüştüm ama sizin yönteminiz daha mantıklı, teşekkür ederim.

await Task.Delay(X); kodunu öğrendiğim de iyi oldu, bu komutu geçenlerde merak edip araştırdığımda karşıma hep işime yaramayan System.Threading.Thread.Sleep(X); kodu çıkıyordu.
 
Yeri geldiğinde onu da kullanacaksınız. Hemen yabana atmayın
  • Her ikisi de hemen hemen aynı işlevi yerine getiriyor.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…