2011-08-14 13 views
0

私は単純なスロットマシンを作っています。開始のための1つのボタン、Pictureboxの各タイルの3つの停止ボタン。私の問題は、それぞれの停止ボタンをクリックするたびにPictureboxが停止しないことです。C#でタイマーを使って画像のシャッフルを止める方法

対応するピクチャボックスの停止ボタンをクリックすると、そのピクチャボックスは停止し、2人はピクチャをシャッフルし続けます。その後、他のストップボタンをクリックすると、別のストップボタンなどが停止します。

は、ここで私は今のところ持っているものです。

namespace SlotMachine 
{ 
    class SlotMac 
    { 
     private Form f; 
     Button btn1 = new Button(); // First stop 
     Button btn2 = new Button(); // Second stop 
     Button btn3 = new Button(); // Third stop 
     Button btn4 = new Button(); // Start 
     Timer Clock; // Tick 
     Timer Clock1; // Tick 
     Timer Clock2; // Tick 
     Int32 tick = 0; 

     public SlotMac() 
     { 
      f = new Form(); 
      f.Text = "Slot Machine"; 
      //f.Size = new Size(800, 700); 
      f.FormBorderStyle = FormBorderStyle.FixedSingle; 
     } 

     PictureBox[] pics = new PictureBox[7]; 
     PictureBox pb = new PictureBox(); 

     public void Launch() 
     { 
      int i = 0; 

      Clock = new Timer(); 
      Clock.Interval = 1000; 
      Clock.Tick += new EventHandler(Clock_Tick); 

      Clock1 = new Timer(); 
      Clock1.Interval = 1000; 
      Clock1.Tick += new EventHandler(Clock1_Tick); 

      Clock2 = new Timer(); 
      Clock2.Interval = 1000; 
      Clock2.Tick += new EventHandler(Clock2_Tick); 

      int x = 50; 
      for (i = 0; i < pics.Length; i++) 
      { 
       pics[i] = new PictureBox(); 
       pics[i].Image = Image.FromFile(i+".jpg"); 
       pics[i].SetBounds(x, 100, 100, 100); 
       x += 150; 
       f.Controls.Add(pics[i]); 
      } 

      f.SetBounds(10, 20, 500, 500); 

      // STOP 
      btn1.Location = new Point(50, 250); 
      btn1.Height = 40; 
      btn1.Width = 100; 
      f.Controls.Add(btn1); 
      btn1.Text = "STOP"; 
      this.btn1.Click += new EventHandler(this.MyButtonClick); 

      // STOP 
      btn2.Location = new Point(200, 250); 
      btn2.Height = 40; 
      btn2.Width = 100; 
      btn2.Text = "STOP"; 
      f.Controls.Add(btn2); 
      this.btn2.Click += new EventHandler(this.MyButtonClick); 

      // STOP 
      btn3.Location = new Point(350, 250); 
      btn3.Height = 40; 
      btn3.Width = 100; 
      btn3.Text = "STOP"; 
      f.Controls.Add(btn3); 
      this.btn3.Click += new EventHandler(this.MyButtonClick); 

      // START 
      btn4.Location = new Point(200, 370); 
      btn4.Height = 40; 
      btn4.Width = 100; 
      btn4.Text = "START"; 
      f.Controls.Add(btn4); 
      this.btn4.Click += new EventHandler(btn4_Click); 
      f.ShowDialog(); 

     } 

     public void Stop_Click(object sender, EventArgs e) 
     { 

     } 

     public void Clock_Tick(object sender, EventArgs e) 
     { 
      tick++; 
      Random r = new Random(); 
      pics[0].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[1].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[2].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[3].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[4].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[5].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[6].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
     } 

     public void Clock1_Tick(object sender, EventArgs e) 
     { 
      tick++; 
      Random r = new Random(); 
      pics[0].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[1].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[2].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[3].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[4].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[5].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[6].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
     } 

     public void Clock2_Tick(object sender, EventArgs e) 
     { 
      tick++; 
      Random r = new Random(); 
      pics[0].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[1].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[2].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[3].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[4].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[5].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
      pics[6].Image = Image.FromFile(r.Next(0, 6) + ".jpg"); 
     } 

     public void MyButtonClick(object sender, EventArgs e) 
     { 
      // I am having troubles in this part 
      if (sender == btn1) 
      { 
       Clock.Stop(); 

      } 
      if (sender == btn2) 
      { 
       Clock1.Stop(); 
      } 
      if (sender == btn3) 
      { 
       Clock2.Stop(); 
      } 
     } 

     public void btn4_Click(object sender, EventArgs e) 
     { 
      Clock.Start(); 
      Clock1.Start(); 
      Clock2.Start(); 
     } 
    } 
} 

答えて

0

私は、クロックごとに別々のPictureBox配列を作成する必要があると思います。それ以外の場合、表示されているものに対するPictureBoxは、他の2つのタイマーによる変更を継続的に反映します。

基本的に、それらがすべて同じアレイに基づいている場合、他のクロックがアレイを変更すると、最初のクロックが変更されたかどうかは関係ありません。それはまだ変わる。

+0

ありがとうございます。私はPictureBoxの3つの配列を作成し、停止ボタンが働いた。しかし、どのようにイメージをランダム化するのですか? – Boogie

2

各ティッカーは写真で7枚のすべての画像を設定します。他の人がすべての画像を更新している場合は、それらのいずれかを停止するのに役立ちません。

関連する問題