2013-03-13 83 views
0

我正在設計一個使用Windows窗體的小遊戲,其中有5個標籤,每個標籤都與指定圖像列表中的骰子圖像(1 - 6)相似。該遊戲被「滾動」3次,在滾動結束時,您可以選擇不通過更改其背景顏色進行滾動的標籤。在每次滾動結束時,計算並顯示模具面的總和。Imagelist總是返回-1

現在的問題...

我知道我的標籤可以達到圖像列表爲骰子的「滾動」功能,效果非常好。每個標籤被設置爲通過計時器滴答事件運行,該事件將發生10次,其中從圖像列表中選擇隨機圖像,產生滾動骰子的幻覺。但是,當我希望在滾動週期結束時使用圖像列表索引添加模具面的總數時,每個索引都會返回-1。需要注意的是,每個骰子的指數比骰子的數量少一個。同樣,如果你有一個類似於一個的死亡,它的索引將爲零。我通過在索引中加1來解釋這一點。所以...雖然我可能有一個5,5,6,4,3 - 我的得分計數器爲0,而不是說23.

爲什麼當imgaelist指數給出值-1時,最低可用索引是0?

這是我的代碼。在else語句中進行模面的總和的實際計算。在評估總和之前,我將m_iScore(分數計數器)設置爲零,因爲我希望總和在每次滾動之後代表面部。

private void timer1_Tick(object sender, EventArgs e) 
     { 
      Label[] labelArray = new Label[] { label1, label2, label3, label4, label5 }; 
      Random randnum = new Random(); 
      if (m_iAnimations < 10) 
      { 
       for (int iCount = 0; iCount < labelArray.Length; iCount++) 
       { 
        if ((labelArray[iCount]).BackColor == Color.Lime) 
        { 
         (labelArray[iCount]).Image = imageList1.Images[randnum.Next(0, 6)]; 
        } 
       } 
       m_iAnimations++; 
      } 
      else 
      { 
       timer1.Enabled = false; 
       m_iAnimations = 0; 
       m_iScore = 0; 
       for (int iCount = 0; iCount < labelArray.Length; iCount++) 
       { 
        m_iScore = m_iScore + ((labelArray[iCount]).ImageIndex + 1); 
       } 
       scoreval.Text = m_iScore.ToString(); 
      } 

     } 

如果我不給圖像索引添加1,scoreval.Text顯示-5。

回答

1

設置Image屬性不會更改ImageIndex屬性 - 它們或多或少完全不相關。

一般來說,UI應該顯示程序狀態,而不是保存它。做所有的計算,然後將計算結果推入UI;不要將UI元素用作變量。