2014-02-16 80 views
0

我做了一個謎題的應用程序,你首先從你的電腦中選擇一個圖像,然後你點擊開始,它將圖像的一部分,並將它們添加到列表視圖。然後你從列表視圖中的圖像,並把它們放在自由空間。但問題是在列表視圖中,圖像是有序的(圖像部分從右到左和從上到下)。VB.net混合項目的列表視圖

我在這裏的問題是如何在我的列表視圖中隨機混合項目(圖像)?

+1

你有* *洗牌之前,你的作品將它們添加到列表視圖。就像你洗牌一樣。只是谷歌,查詢「vb.net隨機隨機播放」 –

回答

0

謝謝大家,我發現如何做到這一點: 我創建了一個新的列表視圖並將其命名爲listview2(第一個是listview1)。 然後我添加完所有圖像listview2不LV1,之後我隨意添加LV2的項目LV1和它的工作

對於i = 0到ListView2.Items.Count - 1 昏暗的值作爲整數= CINT (INT((ListView2.Items.Count - 1)*賽第一輪()))

 ListView1.Items.Add(ListView2.Items(value).Text, ListView2.Items(value).ImageIndex) 
     ListView2.Items(value).Remove() 
    Next i 

問候

2

以隨機順序拆開拼圖然後將其存儲在LV中會更容易。要做到這一點,你必須爲每個拼圖塊分配一個索引值,如ID。用它來分開這個難題,並知道他們選擇了哪一個。

這將創建一個列表(整數),這將是這一難題的標識,並打亂它:

Function RandomList(MaxVal As Integer) As List(Of Integer) 
    Dim rand As New Random() 

    Dim list As New List(Of Integer) 
    Dim temp As Integer 
    Dim ndxRand As Integer 

    For n As Integer = 0 To MaxVal - 1 
     list(n) = n 
    Next 

    For thisNDX As Integer = 0 To MaxVal - 1 
     ndxRand = rand.Next(thisNDX, MaxVal) 
     temp = list(ndxRand) 
     list(ndxRand) = list(thisNDX) 
     list(thisNDX) = temp 
    Next thisNDX 

    Return list 
End Function 

使用它是這樣的:

Dim list As List(Of Integer) = RandomList(PieceCount) 

For n As Integer = 0 To PieceCount - 1 
    puzzlePiece = Puzzle.ReMovePiece(List(n)) 

    AddPieceToLV(puzzlePiece) 
Next n 

當然,這僅僅是一個因爲我們不知道代碼是什麼樣子。

由於各種原因,直接隨機化LV是有問題的。我想象這些作品是圖像,我不知道如何分類圖像;你必須爲它們分配一個值來進行排序。接下來,LV原生只按Item而不是SubItems排序,這是圖像可能在LgIcon視圖(?...猜測)中顯示的位置。接下來,LV只做一個文本排序(除非你還寫了一個ListViewItemSorter),這將成爲一個超過10的計數問題。更容易將它拆開並隨機存儲。