For eachln?

BlitzMax Forums/BlitzMax Beginners Area/For eachln?

Hotshot2005(Posted 2014) [#1]
I cant to get it work and just want get some enemys ship coming down

Type Ship
    Field x,y
End Type

Enemy_Ship=LoadImage("Ship.bmp")


' To create 20 Enemys Ship
For i=1 To 20
    a:Ship=New Ship
    a.x=Rand(1,640)
    a.y=-10
Next

Repeat

    For a:Ship=EachIn ship
	    DrawImage(Enemy_Ship,a.x,a.y)
	    a.y=a.y+Rand(1,5)
    Next
    Flip

Until KeyHit(KEY_ESCAPE) 



GfK(Posted 2014) [#2]
It doesn't work like Blitz3D. You need to put your ship objects into a linked list (TList). Something like this (untested, straight into reply box):

Type Ship
  Field x,y
End Type

Enemy_Ship=LoadImage("Ship.bmp")
Local shipList:TList = New TList

' To create 20 Enemys Ship
For i=1 To 20
  Local a:Ship=New Ship
  a.x=Rand(1,640)
  a.y=-10
  shipList.AddLast(a)
Next

Repeat
Cls
For Local a:Ship=EachIn shipList
  DrawImage(Enemy_Ship,a.x,a.y)
  a.y=a.y+Rand(1,5)
Next
Flip

Until KeyHit(KEY_ESCAPE) 



Hotshot2005(Posted 2014) [#3]
thanks for example GFK:)

I get the error saying Unhandled exception: Attempt to access field or method of null object

What does it really mean?


GfK(Posted 2014) [#4]
Possibly because Enemy_Ship is an Int (by default). Change it to:
Local Enemy_Ship:TImage = LoadImage("Ship.bmp")
If not Enemy_Ship
  RuntimeError "Nope, don't like that image you just tried to load.  Either that or it just isn't where you said it was"
EndIf



Hotshot2005(Posted 2014) [#5]
thanks and managed get it working. I think Superstrict make the code more readable and handle better. Do you agree?


Brucey(Posted 2014) [#6]
I think Superstrict make the code more readable and handle better. Do you agree?

Always.