2015-04-25 83 views
0

開始我不善於編程,我完全不熟悉它。這就是說,我正在嘗試製作一個遊戲,在其中顯示標籤圖案(通過特定標籤更改顏色),然後用戶必須在顯示後單擊該特定圖案。我已經進行了模式展示,並將其列入清單。我現在面臨的問題是如何根據已經制作的隨機模式來檢查是否舔了正確的標籤。很抱歉,如果我的代碼看起來笨拙,但在這裏它是(遺憾的是,沒有commemts但也):檢查是否點擊了正確的標籤?

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


namespace Spil 
{ 
    public partial class Form1 : Form 
    { 
     Random rnd = new Random(); 
     Label[] labelArray; 
     int turn = 1; 
     int lives = 3; 
     List<Label> orderList = new List<Label>(); 

     public Form1() 
     { 
      InitializeComponent(); 

      labelArray = new Label []{ label1, label2, label3, label4, label5, label6, label7, label8, label9 }; 
     } 

     private void DisplayOrder() 
     { 
      for (int i = 0; i < labelArray.Length; i++) 
      { 
       labelArray[i].BackColor = Color.Blue; 
      } 

      for (int i = -2; i < turn; i++) 
      { 
       int chosenNumber = rnd.Next(0, 9); 
       labelArray[chosenNumber].BackColor = Color.Green; 
       Thread.Sleep(1000); 
       labelArray[chosenNumber].BackColor = Color.Blue; 
       orderList.Add(labelArray[chosenNumber]); 
      } 
     } 


     private void Click0(object sender, EventArgs e) 
     { 

     } 

     private void Click1(object sender, EventArgs e) 
     { 

     } 

     private void Click2(object sender, EventArgs e) 
     { 

     } 

     private void Click3(object sender, EventArgs e) 
     { 

     } 

     private void Click4(object sender, EventArgs e) 
     { 

     } 

     private void Click5(object sender, EventArgs e) 
     { 

     } 

     private void Click6(object sender, EventArgs e) 
     { 

     } 

     private void Click7(object sender, EventArgs e) 
     { 

     } 

     private void Click8(object sender, EventArgs e) 
     { 

     } 

     private void Click9(object sender, EventArgs e) 
     { 

     } 

     private void Form1_Shown(object sender, EventArgs e) 
     { 
      System.Timers.Timer t = new System.Timers.Timer(100); 

      t.Elapsed += t_Elapsed; 

      t.Start(); 
     } 

     void t_Elapsed(object sender, System.Timers.ElapsedEventArgs e) 
     { 
      ((System.Timers.Timer)sender).Stop(); 

      DisplayOrder(); 
     } 
    } 
} 

回答

1

你可以有相同的點擊事件註冊的所有的標籤和使用發送參數來識別點擊的標籤。

for (int i = 0; i < labelArray.Length; i++) 
{ 
    labelArray[i].BackColor = Color.Blue; 
    labelArray[i].Click += label_Click; 
} 

void label_Click(object sender, EventArgs e) 
{ 
    string name = ((Label)sender).Name; 
} 
+0

謝謝你,但我不能完全肯定這行做: 「字符串名稱=((標籤)發送方),請將.Name;」 – Neebz

+0

它可以幫助您獲取被點擊的標籤的名稱。例如。標籤1 –

+0

對不起,但我仍然不明白我應該檢查被點擊的標籤是否是標籤圖案的一部分。 – Neebz

0

你需要生成的點擊,甚至爲每個標籤,您可以使用屬性選項卡在這裏找到的事件標籤(如果你不知道).Simply舔你的標籤在設計和導航到label_click事件並雙擊它。

Events tab