2016-11-30 51 views
0

我試圖創建一個快照遊戲,但是當涉及到檢查圖片框是否包含正確的圖像時,它只是不起作用,我已經做了一些研究這並實施了這些想法。它不會拋出任何類型的錯誤,但我不應該收到增加的價值時,我應該。請看看這段代碼,並告訴我,如果你知道我哪裏出錯了。如果語句和圖片框值問題

嘗試1:

Dim BirdPics() As Image = {My.Resources.Image_1} 
If tbxAnimal_Group.Text = "Birds" And BirdPics.Contains(pbxPicture.Image) Then 

    CurrentPoints += 1 
    lblScore.Text = "Score:" & CurrentPoints 
End If 

嘗試2

 Dim BirdPics() As Image = {My.Resources.Image_1} 
If tbxAnimal_Group.Text = "Birds" And pbxPicture Is BirdPics Then 

    CurrentPoints += 1 
    lblScore.Text = "Score:" & CurrentPoints 
End If 
+0

您需要跟蹤每個PB可能使用'.Tag'屬性(或變量!)所擁有的圖像。你不能比較圖像而不費力地比較每個像素 – Plutonix

回答

0

不使用 「BirdPics.Contains」;它不這樣工作。

無法在圖像上進行簡單的比較。

如果ThisImage = ThatImage THEN'即使編譯也不一定會工作。

創建一個結構或類並將它們存儲在一個列表中。

Structure gameObjects 
BirdPic as Image 
BirdPicName as string 
Position as Point 
End Structure 

DIM GamePictures(0) AS gameObjects 

SUB Main() 

    ' Create a new object 
    DIM newObj as New gameObjects 
    With newObj 
     .BirdPic = Image.FromFile("pics/bluejay.jpg") 
     .BirdPicName = "BlueJay" 
     .Position = new point(10, 20) 
    End With 
    AddObject(newObj) 




    for index = 0 to gamepictures.count - 1 
     If tbxAnimal_Group.Text = "Birds" AND GamePictures(index).BirdPicName = "BlueJay" THEN 
      ' Do Something 
     End If 
    next 
END SUB 


Public Sub AddObject(obj as GameObjects) 
     DIM thisObjIndex as integer = GamePictures.Count 
     ReDim preserve GamePictures(thisObjIndex + 1) 

     GamePictures(thisObjIndex) = obj 
End Sub 
+0

謝謝,這是有道理的,我將不得不對我的代碼做一些修改,以便這個工作,但希望它會! – Brandontom

+0

沒問題。一旦你開始把所有東西當作一個物體來對待,生活變得如此簡單。您可以在這些結構中存儲任何東西,包括精靈位置(AS點)或精靈邊界(AS Rectangle),精靈動畫可以通過在遊戲對象內創建一個列表(SpriteImages)並使用增量間隔等等。 – Matth3w

+0

請記住,使用LIST時,不能修改這些對象。添加後它們是隻讀的。如果您需要不斷修改列表中某個對象的狀態,最好在添加/從陣列中刪除時使用像「DIM GamePictures()AS gameObjects」和ReDim Preserve的陣列。 – Matth3w