Şimdiden iyi oyunlar arkadaşlar..
        int puan = 0,
sayac = 0;
        Random rnd = new Random();
        private void
Form1_Load(object sender, EventArgs e)
        {
            for (int i = 0; i
< 100; i++)
            {
               
Button btn = new
Button();
               
btn.BackColor = Color.Black;
               
btn.ForeColor = Color.White;
               
btn.Width = 50;
               
btn.Height = 50;
               
btn.Text = (i + 1).ToString();
               
flowLayoutPanel1.Controls.Add(btn);
            }
        }
        private void
timer1_Tick(object sender, EventArgs e)
        {
            int rastgele = rnd.Next(1,100);
            foreach (var b in flowLayoutPanel1.Controls)
            {
              
Button btn = b as Button;
                if
(btn.Text == rastgele.ToString())
               
{
                   
btn.BackColor = Color.Red;
                   
btn.Click += new EventHandler(btn_Click);
               
}
               
else
               
{
                   
btn.BackColor = Color.Black;
               
}
            }
           
lblPuan.Text = "Puan : " +
puan.ToString();
        }
        void btn_Click(object
sender, EventArgs e)
        {
            Button btn = sender as
Button;
            if (btn.BackColor == Color.Red)
               
puan++;
            else
               
puan--;
        }
        private void
btnBaslat_Click(object sender, EventArgs e)
        {
           
timer1.Start();
        }
        private void btnDurdur_Click(object sender, EventArgs
e)
        {
           
timer1.Stop();
        }

Şimdi bu gönderiye 5 yıl sonra yorum yazmak biraz saçma olacak ama, benim gibi sonradan gelen arkadaşlar için yazıyım. Öncelikle örnek için teşekkürler, benim düşünceme göre bu algoritmada bir eksiklik var.
YanıtlaSilif (btn.Text == rastgele.ToString()) - Bu koşul sağlanmadan butonumuza click olayını vermiyoruz. Yani kırmızı olmayan buton tıklandığında puanımız eksilmiyor haliyle. Ve bir buton eğer ki iki defa kırmızı olduysa ben o butona beyazken bastığımda 2 puan eksiliyor. Bu kontrolleri koşullarla sağlayabiliriz, benim gibi çok ayrıntıyı dert edenler için belirtmek istedim.
Koşulda şöyle olabilir;
YanıtlaSilGlobal alanda tanımladığımız int tipinde bir değişkeni timer_Tick olayı içerisinde saniye gibi arttırıp foreach döngüsü içerisinde if(sn==1) koşulunda btn.Click += new EventHandler(btn_Click); yazarak bütün butonlara click olayını vermiş oluruz. Bu şekilde bir sorun almadım.