Porting BlitzBasic code to BlitzMax

BlitzMax Forums/BlitzMax Programming/Porting BlitzBasic code to BlitzMax

Many thanks to all you assisted, the ported code is below.
' Ported to BlitzMax by scsicork@... August 2006
' Thanks to all at the BlitzMax forums for their help
' Version 2.0
' Februar 2001
' Made by Einar Wedoe
' Programtype: Novell server screensaver look-a-like
' Use arrow-keys to change speed and length of tail !

Import "bbtype.bmx"
Import "bbvkey.bmx"
AppTitle ="Novell screensaver"

Graphics 800,600,32															' Sett Grphics mode
SetColor 255,0,0																	' Set Color
HideMouse()
Global x=400																	' Leader-dot-x-pos
Global y=300																	' Leader-dot-y-pos
Global direction=1																' Direction variable
Global directiontmp=0															' Temporary direction variable
Global round=10																	' How long between every change of direction ?
Global roundcount=0																' Counter for the rounds
Global speed#=3																	' Speed
Global speedcount=1																' Counter for speed
Global length=35																' Initial tail-length
Global show=0																	' Variable for showing speed and length on screen

Global tailX[100+1]																	' Tail x can be up to 1000 blocks long
Global tailY[100+1]																	' Tail y can be up to 1000 blocks long

For a=1 To 100																	' Set the current tail off the screen
 tailx(a)=-20
 taily(a)=-20
Next

SeedRnd MilliSecs()																' Make random even more random 
Global frametimer=CreateTimer(75)												' Set up timer to make everything run nice on all PC's



'-----------------------------------------	MAIN -----------------------------
#start																			' Mainloop

While Not VKeyHit(1)																' Loop until ESC is pressed
	WaitTimer(frametimer)															' Wait....
	Cls																				' Clean up
	novell()																			' Do stuff
	changespeedortail()																' Wanna change speed or/and tail ?
	Flip																			' Change buffer
Wend																			' Next round please
End	


'-----------------------------------------	NOVELL ----------------------------
Function novell()																' Start the function to actually put something on the screen
speedcount=speedcount+1
 If speed > speedcount Then Goto draw

Select direction																' Moving blocks about
		Case 1 
		x=x-11
		y=y-13
		
		Case 2
		y=y-13
		
		Case 3
		y=y-13
		x=x+11
		
		Case 4
		x=x+11
	
		Case 5
		x=x+11
		y=y+13
		
		Case 6
		y=y+13
		
		Case 7
		x=x-11
		y=y+13
		
		Case 8
		x=x-11	
End Select

speedcount=0
border																			' Check if we hit the border
	If direction=100 Then  roundcount=round+1									' If we did, do something about it !
directiontest																	' Check if time for change of direction

For a=length To 1 Step-1														' Move the x and y down the line
	tailx(a+1)=tailx(a)
	taily(a+1)=taily(a)
Next
tailx(1)=x																		' Put x in the end of the line
taily(1)=y																		' Put y in the end of the line
			
			
#draw


colordrop=255/length															' Find how much to drop color pr. rect
colortmp=0																		' Set color to 0
For a=length To 1 Step -1														' Draw tail											
SetColor colortmp,0,0															' Set color for current rect
  DrawRect tailx(a),taily(a),10,12											' Draw current rect
  colortmp=colortmp+colordrop													' Count up color
Next 


End Function


'-----------------------------------------	BORDER ----------------------
Function border()																' Set direction to 100 if border is reached
Select direction
		Case 1 
		If 	x < 15 Or y < 5 Then direction=100
		Case 2
		If y < 5 Then direction=100
		Case 3
		If x > 780 Or y < 5 Then direction=100
		Case 4
		If x > 780 Then direction=100
		Case 5
		If x > 780 Or y > 585 Then direction=100
		Case 6
		If y > 585 Then direction=100
		Case 7
		If x < 15 Or y > 585 Then direction=100
		Case 8
		If x < 15 Then direction=100
End Select
End Function
'-----------------------------------------
Function directiontest()														' Find new direction if it's time
roundcount=roundcount+1				
	If roundcount > round Then													' Time for a change
						  directiontmp=direction								' Temporary store old direction
#findnewdirection		  direction=Rand(8)										' Find new direction
					      If direction=directiontmp Then Goto findnewdirection	' If it's the same then try again
						  border												' Check for border
						  If direction=100 Then Goto findnewdirection			' Bounce border
						  roundcount=0											' Reset counter
						  round=Rand(20)										' Set new point for change of direction again
						  EndIf		
						
						
End Function
'-----------------------------------------
Function changespeedortail()													' Change things	
	If VKeyDown(200) And length < 99 Then 										' Add length of tail if arrow-up is pressed
									length=length+1								' All length by 1
									tailx(length)=-20							' Set new x-part of tail offscreen
									taily(length)=-20							' Set new x-part of tail offscreen
									show=255									' Set show variable to print to scren for 200 rasters
									EndIf
	If VKeyDown(208) And length > 5 Then 										' Decrease length of tail if arrow down is pressed
									length=length-1								' Dec by 1
									show=255									' Set show variable to print to scren for 200 rasters
									EndIf
	If VKeyDown(203) And speed < 10 Then 										' Add speed if arrow-right is pressed
									speed=speed+0.05							' Add speed by 0.05
									show=255									' Set show variable to print to scren for 200 rasters
									EndIf							
	If VKeyDown(205) And speed > 1 Then 											' Dec speed if arrow-left is pressed		
									speed=speed-0.05							' Dec speed by 0.05
									show=255									' Set show variable to print to scren for 200 rasters
									EndIf
show=show-1																		' Decrease show-variable
If show < 0 Then show=0															' If show drops below zero keep it on zero
If show > 0 Then 																' If show-variable is activated
			SetColor show,0,0														' Fade away text
			DrawText "Length: "+length,0,0											' Show length
			DrawText "Speed:  "+Int(10-speed+1),0,12							' Show speed but since speed is oposite of normal recalculate it
			EndIf								
									
End Function
'-----------------------------------------