So I'm making a game in VB for learning purposes and now I'm struggling with this problem:
I'm trying to do a For loop that draws the level map. However, I just can't seem to figure out it. This is an example of what I'm trying to do:
For index as integer = 1 to 192
PictureBox(index).Image = bg(map(x,y)) 'this is causing me problems
x=x+1
if x=16 then
x=0
y=y+1
End If
Next
But since PictureBox(index).Image doesn't seem to be the correct answer, it simply throws me an error.
Is there any way to do this?
EDIT:
Shortly, I need to set PictureBox.Image's from 1 to 192 like this without having 192 lines of code:
PictureBox1.Image = bg(map(0,0))
PictureBox2.Image = bg(map(1,0))
PictureBox3.Image = bg(map(2,0))
PictureBox4.Image = bg(map(3,0))
'etc....
Instead I wan't to set them in a For loop. I don't want to have extra lines of code.
EDIT2:
The PictureBoxes are added in the editor.
In the designer set the property Tag
of each PictureBox
to the string value composed by the x
and y
required to pass to the map
function
For example:
and so on until you have mapped all your pictureboxes with the correct values.
Then your code could be changed to
' Assuming the PictureBox are all childs of the Form
For Each pic in Me.Controls.OfType(Of PictureBox)()
Dim tag = pic.Tag
' You could omit this check if you have only the pictureboxes
' set with a valid Tag property
if Not string.IsNullOrEmpty(tag) Then
Dim xyCoords = tag.ToString().Split(","c)
pic.Image = bg(map(Convert.ToInt32(xyCoords(0),
Convert.ToInt32(xyCoords(1))))
End if
Next