2016-01-14 120 views
0

我想獲得一張卡片的隨機圖片生成器。我正在嘗試使用數組爲五個圖片框生成五個不同的圖片。我目前使用if語句,但想要使用數組。這是到目前爲止我的代碼,如何在陣列中生成隨機圖片

Dim rndnumber As Integer 

Randomize() 

rndnumber = Int(Rnd() * 52) + 1 
If ListBox1.Items.Contains(rndnumber) Then 
    rndnumber = Int(Rnd() * 52) + 1 
End If 
ListBox1.Items.Add(rndnumber) 

If rndnumber = 1 Then 
    Me.playerhand1.Image = My.Resources.aceclubs 
ElseIf rndnumber = 2 Then 
    Me.playerhand1.Image = My.Resources.acediamonds 
ElseIf rndnumber = 3 Then 
    Me.playerhand1.Image = My.Resources.acehearts 
ElseIf rndnumber = 4 Then 
    Me.playerhand1.Image = My.Resources.acespades 
ElseIf rndnumber = 5 Then 
    Me.playerhand1.Image = My.Resources._2clubs 
ElseIf rndnumber = 6 Then 
    Me.playerhand1.Image = My.Resources._2diamonds 
ElseIf rndnumber = 7 Then 
    Me.playerhand1.Image = My.Resources._2hearts 
ElseIf rndnumber = 8 Then 
    Me.playerhand1.Image = My.Resources._2spades 
ElseIf rndnumber = 9 Then 
    Me.playerhand1.Image = My.Resources._3clubs 
ElseIf rndnumber = 10 Then 
    Me.playerhand1.Image = My.Resources._3diamonds 
ElseIf rndnumber = 11 Then 
    Me.playerhand1.Image = My.Resources._3hearts 
ElseIf rndnumber = 12 Then 
    Me.playerhand1.Image = My.Resources._3spades 
ElseIf rndnumber = 13 Then 
    Me.playerhand1.Image = My.Resources._4clubs 
ElseIf rndnumber = 14 Then 
    Me.playerhand1.Image = My.Resources._4diamonds 
ElseIf rndnumber = 15 Then 
    Me.playerhand1.Image = My.Resources._4hearts 
ElseIf rndnumber = 16 Then 
    Me.playerhand1.Image = My.Resources._4spades 
ElseIf rndnumber = 17 Then 
    Me.playerhand1.Image = My.Resources._5clubs 
ElseIf rndnumber = 18 Then 
    Me.playerhand1.Image = My.Resources._5diamonds 
ElseIf rndnumber = 19 Then 
    Me.playerhand1.Image = My.Resources._5hearts 
ElseIf rndnumber = 20 Then 
    Me.playerhand1.Image = My.Resources._5spades 
End If 
End Sub 
+0

當你做,你遇到什麼問題,該指數開始?正如你已經注意到的那樣,使用數組或字典來擺脫你的多個if-else語句要好得多 – Ian

+0

問題是,我希望它是這樣5個不同的圖片框獲得不同的圖像。到目前爲止,所有的代碼只是一個圖片框。 –

+0

[This answer](http://stackoverflow.com/a/26532939/1070452)可能會讓人感興趣,它將更容易從ImageList中讀取圖像,您可以通過從套裝中創建的密鑰引用它們並排名 – Plutonix

回答

0

堅持你的隨機數發生器,這樣的事情就可以了:

Dim rndnumber As Integer 
Randomize() 
Dim rndNumberList As New List(Of Integer) 
Do 
    rndnumber = Int(Rnd() * 52) + 1 
    If Not rndNumberList.Contains(rndnumber) Then 
     rndNumberList.Add(rndnumber) 
    End If 
Loop Until rndNumberList.Count >= 5 'Basically you loop until you find 5 unique number 

基本上你循環,直到你找到5個獨特的數字

但更好的是我認爲是製作一個由1-52組成的列表,並且每次循環時,都會從列表中獲取該元素,使其僅包含-1(如52到51)元素。然後重複從1到剩餘卡片數量的過程(前一次嘗試爲-1)。這樣,你確保你永遠不會重複兩個相同的數字(你只會選擇一個數字一次)。

側面說明:也許你想從0開始過你的指數在VB.Net(在51結束),因爲從0

+0

只是爲了確保,這將工作與5個不同的圖片框。如果是的話,我將如何使它與5個不同的圖片框一起工作。 –

+0

@ k.low是的,因爲它所做的只是獲得5個隨機數字並將它們放到List中。這取決於你如何處理列表中的數字。例如,從列表中的5個數字開始,您可以使用您的數組/字典(當前if-else),您可以首先獲得5個圖像,並將其放入5個圖片框中。然後你使用for循環把5個圖像,每個圖像放在1個圖片框中,或者只用5個語句,因爲只有5個。但你明白了...... – Ian

+0

好吧,最後一個問題,我將如何分別提及圖片框的5個數字。 –