作者windmax1 (I do my best)
看板C_Sharp
標題[問題] 如何讓timer+imagelist隨機圖不重複?
時間Mon Apr 14 18:19:06 2014
private void timer1_Tick(object sender, EventArgs e)
{
intSpinCount++;
if (intSpinCount <= 20) {
// 轉動中;
Random rnd = new Random();
int intIndex = rnd.Next(imageList1.Images.Count);
//0到imageList1.Images.Count隨機取一;
2~6省略
pictureBox1.Image = imageList1.Images[intIndex];
2~6省略
} else { // 停止; //隨機取值;
Random rnd = new Random();
int myIndex = rnd.Next(imageList1.Images.Count);
//0到imageList1.Images.Count隨機取一;
2~6省略
pictureBox1.Image = imageList1.Images[myIndex];
timer1.Enabled = false;
ifSpin = false;
btnAnimateImage.Enabled = true;
btnAnimateImage.Text = "動態切換圖片"; }
產生結果如圖
http://imgur.com/2AakeZL
想要讓六個號碼彼此之間不重複,GOOGLE研究半天研究不出個所以
拜託高手指點一下方向!!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 124.11.129.171
※ 文章網址: http://webptt.com/m.aspx?n=bbs/C_Sharp/M.1397470749.A.5ED.html
※ 編輯: windmax1 (124.11.129.171), 04/14/2014 18:23:42
1F:→ ssccg:1 建一個所有可能值的list,隨機shuffle後依序取 04/14 20:04
2F:→ ssccg:2 記錄已經用過的值,如果新隨機出來的一樣就重隨機一次 04/14 20:04
3F:推 Harper34:3 做一個hashtable key是亂數 value對應號碼 key排序後 04/15 00:13
4F:→ Harper34:去查hashtable對應的值 就是shuffle過的號碼 04/15 00:14
5F:→ windmax1:感謝兩位大大!! 04/15 15:11
不好意思,小弟是新手,所以遇到問題比較多
請教Ha大 我照你的連結最上面的程式,試著修改後將它套進我的程式碼
放在timer.Tick底下
int n = imageList1.Images.Count;
while (n > 1)
{
n--; int k = rnd.Next(n + 1);
T value = imageList1.Images[k];
imageList1.Images[k] = imageList1.Images[n];
imageList1.Images[n] = value;
}
遇到一個問題,就是T value一定要在Shuffle<T>底下才會過
可是如果把上面這段放在Shuffle<T>底下imageList1.Images就無法過
我現在不知道怎麼做結合 冏
※ 編輯: windmax1 (124.11.129.171), 04/15/2014 18:33:31
再請教H大
我修改後試著放入,可是
shuffledList[i]這段會顯示↓↓
錯誤 1 無法套用有 [] 的索引至類型
'System.Linq.IOrderedEnumerable<System.Windows.Forms.ImageList>' 的運算式
※ 編輯: windmax1 (124.11.129.171), 04/16/2014 18:01:45
8F:→ Harper34:shuffledList.ElementAt(i) 04/16 23:23
9F:→ Harper34:如果錯誤無法自行解決 建議你先多上MSDN看看範例 04/16 23:29
10F:→ windmax1:好的,感謝您 04/17 09:20
11F:→ windmax1:換成imageList1.Images[i]過不了,研究好久還是不知道為 04/17 17:43
12F:→ windmax1:何 冏 真的很抱歉 04/17 17:44