2015年1月8日 星期四

不重複亂數 方法二

public partial class Form1 : Form
    {
        int i, j,i1,i2,w;
        Button[,] b = new Button[5, 5];
        Random r1 = new Random();
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            for (int j = 0; j < 5; j++)
            {
                for (int i = 0; i < 5; i++)
                {
                    b[i, j] = new System.Windows.Forms.Button();
                 
                    b[i, j].Click += new EventHandler(buttons_Click);
                    b[i, j].Width = 50;
                    b[i, j].Height = 50;
                    b[i, j].Text = "";//一開始不給名子
                 
                }
            }
            for (int j = 0; j < 5; j++)
            {
                for (int i = 0; i < 5; i++)
                {
                    i1 = r1.Next(0, 5);
                    i2 = r1.Next(0, 5);
                    do{
                        i1 = r1.Next(0, 5);
                        i2 = r1.Next(0, 5);

                    }while(b[i1, i2].Text!="");//亂數到再給名子,如果已經有了就在重新亂數
                    b[i1, i2].Location = new Point(200 + 50 * i, 200 + 50 * j);
                    this.Controls.Add(b[i1, i2]);
                    b[i1, i2].Text =""+ (5 * i1 + i2);
                }
            }
            b[0, 0].Enabled = false;

        }//後面是最數字推盤遊戲用的程式碼
        private void buttons_Click(object sender, EventArgs e)
        {

         
            Button but = sender as Button;



            if (((but.Left == b[0, 0].Left + 50 || but.Left == b[0, 0].Left - 50) && but.Top == b[0, 0].Top) || ((but.Top == b[0, 0].Top + 50 || but.Top == b[0, 0].Top - 50) && but.Left == b[0, 0].Left))
            {
                i1 = but.Left;
                i2 = but.Top;
                but.Left = b[0, 0].Left;
                but.Top = b[0, 0].Top;
                b[0, 0].Left = i1;
                b[0, 0].Top = i2;
            }

                w = 0;
                for (i = 0; i < 5; i++)
                {
                    for (j = 0; j < 5; j++)
                    {
                        i2 = (b[i, j].Left - 200) / 50;
                        i1 = (b[i, j].Top - 200) / 50;
                        if (b[i, j].Text == "" + (5 * i2 + i1))
                        {
                            w = w + 1;
                        }
                    }
                }

                if (w == 25) { MessageBox.Show("win"); }
             

        }
    }

沒有留言:

張貼留言