Rastgele Üretilen sayıların butonlarla ilişkilendirilmesi

Başlatan Extreme, 18 Ekim 2014, 08:57:47

Extreme

Merhaba Forum üyeleri

Bir program yapmak istiyorum .Durumu izah etmek için en basit halini hazırladım. resimlere bakarsanız net olarak anlıycaksınız
ve rar olarak yükledim.

Benim yapmak istediğim program tıpkı bu ekrandaki 1-2-3-4-5-6-7-8-9 tuşları olacak kullanıcı bunlara bastığında sırayla rengi değişerek butona basılabilir olacak.
(1e basınca sadece 2 basılabilir durumda olacak. 2 ye basınca sadece 3 basılabilir durumda olacak)

Ben bunu manuel olarak kafamdan butonlara numara vererek yaptım. tek seferlik bir algoritma oldu.programı yeniden başlatınca bu sıra değişsin istiyorum
(örnek button1=2 button2=5 olsun sonrakinde button1=9 button2=2 gibi)

Bu konuda şunları öğrenmek istiyorum
1.Yaratacağım diziyi
Random rnd=new Random();
for(j=0;j<10;j++){dizi[j]=rnd.Next(1,9)};
bunları nasıl sıraya dizebilirim değişken isimleri değişmeden ve aynı rakam olmadan
örnek dizi[7],dizi[8], dizi[2],dizi[3],dizi[4],

2. dizi[1] button1 için dizi[2] button2 için kullanmak istiyorum.
az önce yaratılan sıralamaya göre nasıl enabled=true ( basılabilir ) olma özelliğini kazandırabilirim.








https://www.dropbox.com/s/dw04tzp87d0hb18/FareUygulamasi.rar?dl=0

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace FareUygulamasi
{
    public partial class Form1 : Form
    {
            
        public Form1()
        {
            InitializeComponent();
        }

        int saniye, dakika = 0;
        int[] dizi = new int[10];
        int i, j, k;
        int[] sayi = new int[10];
        Random rast = new Random();
        


   

        private void Form1_Load(object sender, EventArgs e)
        {

            timer1.Enabled = true;


            dizi[1] = 8;
            dizi[2] = 4;
            dizi[3] = 9;
            dizi[4] = 5;
            dizi[5] = 2;
            dizi[6] = 1;
            dizi[7] = 3;
            dizi[8] = 6;
            dizi[9] = 7;


            
            button1.BackColor = Color.Blue;
            button2.BackColor = Color.Blue;
            button3.BackColor = Color.Blue;
            button4.BackColor = Color.Blue;
            button5.BackColor = Color.Blue;
            button6.BackColor = Color.Blue;
            button7.BackColor = Color.Blue;
            button8.BackColor = Color.Blue;
            button9.BackColor = Color.Blue;

            button1.Enabled = false;
            button2.Enabled = false;
            button3.Enabled = false;
            button4.Enabled = false;
            button5.Enabled = false;
            button6.Enabled = true;
            button7.Enabled = false;
            button8.Enabled = false;
            button9.Enabled = false;

            button1.Text = dizi[1].ToString();
            button2.Text = dizi[2].ToString();
            button3.Text = dizi[3].ToString();
            button4.Text = dizi[4].ToString();
            button5.Text = dizi[5].ToString();
            button6.Text = dizi[6].ToString();
            button7.Text = dizi[7].ToString();
            button8.Text = dizi[8].ToString();
            button9.Text = dizi[9].ToString();


        }

       

        private void timer1_Tick(object sender, EventArgs e)
        {

            saniye++;
            label2.Text = Convert.ToString(dakika);
            label3.Text = Convert.ToString(saniye);
            if (saniye == 60)
            {
                dakika++;
                saniye = 0;
            }
        }

      

        private void button3_Click(object sender, EventArgs e)
        {
            button3.Enabled = false;
            button3.BackColor = Color.Red;
       
                timer1.Enabled = false;
                DialogResult soru = MessageBox.Show("Yeniden başlatmak istiyormusun ? ", "Evet mi? Hayır mı?", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (soru == System.Windows.Forms.DialogResult.No) { Application.Exit(); }

                button1.BackColor = Color.Blue;
                button2.BackColor = Color.Blue;
                button3.BackColor = Color.Blue;
                button4.BackColor = Color.Blue;
                button5.BackColor = Color.Blue;
                button6.BackColor = Color.Blue;
                button7.BackColor = Color.Blue;
                button8.BackColor = Color.Blue;
                button9.BackColor = Color.Blue;

                button1.Enabled = false;
                button2.Enabled = false;
                button3.Enabled = false;
                button4.Enabled = false;
                button5.Enabled = false;
                button6.Enabled = true;
                button7.Enabled = false;
                button8.Enabled = false;
                button9.Enabled = false;


                timer1.Enabled = true;
                saniye = 0;
                dakika = 0;

        }

        private void button4_Click(object sender, EventArgs e)
        {
            button4.Enabled = false;
            button8.Enabled = true;
            button4.BackColor = Color.Red;
   
        }

        private void button5_Click(object sender, EventArgs e)
        {
            button5.Enabled = false;
            button7.Enabled = true;
            button5.BackColor = Color.Red;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            button1.Enabled = false;
            button3.Enabled = true;
            button1.BackColor = Color.Red;
  
        }

        private void button2_Click(object sender, EventArgs e)
        {
            button2.Enabled = false;
            button4.Enabled = true;
            button2.BackColor = Color.Red;
        }

        private void button7_Click(object sender, EventArgs e)
        {
            button7.Enabled = false;
            button2.Enabled = true;
            button7.BackColor = Color.Red;
     
        }

        private void button8_Click(object sender, EventArgs e)
        {
            button8.Enabled = false;
            button9.Enabled = true;
            button8.BackColor = Color.Red;
         
        }

        private void button9_Click(object sender, EventArgs e)
        {
            button9.Enabled = false;
            button1.Enabled = true;
            button9.BackColor = Color.Red;
      
        }

        private void button6_Click(object sender, EventArgs e)
        {
            button6.Enabled = false;
            button5.Enabled = true;
            button6.BackColor = Color.Red;
    
        }
       
      

    }
}


Yardımcı olacak arkadaşlara teşekkürler.

duranab

Merhaba

tekrarlamayan rastgele sayılardan bir dizi oluşturmak için şöyle bir fonksiyon kullanılabilir:
        void dizi_olustur()
        {
            int x=0;
            int toplam=0;
            bool farkli=true;

            while (toplam < 45)   //dizideki sayıların toplamı (1'den 9'a) 45 olunca dizi tamam olmus olacak
            {                               // başlangıçta tüm elemanları 0 

              j = rast.Next(1, 10);    //yeni bir random sayı üretiyoruz
              
                for( x=0; x<9 ; x++)         // üretilen random sayı dizide yer alıyor mu ?
                  {
                 
                  if (dizi[x] == j)
                  {
                      
                      farkli = false;
                      break;
                  }
                  else
                      farkli = true;
              }

              if(farkli==true)
              {
                    dizi[i] = j;
                    i++;
                    toplam = dizi[0] + dizi[1] + dizi[2] + dizi[3] + dizi[4] + dizi[5] + dizi[6] + dizi[7] + dizi[8];
                      
              }
       



bu diziye göre sırayla butonları aktif etmek için de


   
   private void button6_Click(object sender, EventArgs e)
        {
            button6.Enabled = false;
            button6.BackColor = Color.Red;
            siradaki_buton(dizi[index]);    //her bir butonun click olayında çağırıyoruz
          
        }
       
        
        void siradaki_buton(int b)
       {
           index++;
            switch (b)
            {
               
                case 1:
                    button1.Enabled = true;
                    break;
                case 2:
                    button2.Enabled = true;
                    break;
                case 3:
                    button3.Enabled = true;
                    break;
                case 4:
                    button4.Enabled = true;
                    break;
                case 5:
                    button5.Enabled = true;
                    break;
                case 6:
                    button6.Enabled = true;
                    break;
                case 7:
                    button7.Enabled = true;
                    break;
                case 8:
                    button8.Enabled = true;
                    break;
                case 9:
                    button9.Enabled = true;
                    break;
                

            }
         


bu yapı kullanılabilir. "index" burada global bir değişken, başlangıç değeri 0. index değeri 9 olunca da reset işlemleri yapılabilir.
Form yüklenirken dizi_olustur() ve siradaki_sayi(dizi[index]) fonksiyonları başlangıç olarak çağırılır.

Ayrıca her butonun "properties" kısmında "tag" diye bir özellik var, orada her bir butona 1,2,3.. diye tag verilip farklı algoritmalar da yazılabilir muhtemelen. Bir araştırabilirsiniz.

Umarım yardımcı olmuşumdur. Kolay gelsin.   



Extreme