BrightSign BrightScript 2 Reference Guide User Manual
Page 57

57
snake.TurnWest=snkTurnWest
snake.MoveForward=snkMoveForward
snake.MakeLonger=snkMakeLonger
snake.AddSegment=snkAddSegment
snake.EraseEndBit=snkEraseEndBit
REM
REM a "snake" is a list of line segments
REM a line segment is an roAssociativeArray that conains a length and direction (given by the x,y
delta needed to move as it is drawn)
REM
snake.seg_list = CreateObject(
"roList"
)
snake.AddSegment(1,0,3)
REM
REM The X,Y pos is the position of the head of the snake
REM
snake.snake_X=x
snake.snake_Y=y
snake.body=191
' use asc("*") if graphics not enabled.
snake.dx=1
' default snake direction / move offset
snake.dy=0
' default snake direction / move offset
return
snake
End
Function
Sub
snkDraw(text_field
As
Object
)
x=m.snake_X
y=m.snake_Y
for
each
seg
in
m.seg_list
xdelta=seg.xDelta
ydelta=seg.yDelta
for
j=1
to
seg.Len
text_field.SetCursorPos(x, y)
text_field.SendByte(m.body)
x=x+xdelta
y=y+ydelta
next
next
End
Sub
Sub
snkEraseEndBit(text_field
As
Object
)
x=m.snake_X
y=m.snake_Y
for
each
seg
in
m.seg_list
x=x+seg.Len*seg.xDelta
y=y+seg.Len*seg.yDelta
next
text_field.SetCursorPos(x, y)
text_field.SendByte(32)
' 32 is ascii space, could use asc(" ")
End
Sub
Function
snkMoveForward(text_field
As
Object
)
As
Boolean
m.EraseEndBit(text_field)
tail=m.seg_list.GetTail()
REM
REM the following shows how you can use an AA's member functions to perform the same
REM functions the BrightScript . operator does behind the scenes for you (when used on an AA).
REM there is not point to this longer method other than illustration
REM
len=tail.Lookup(
"Len"
)
' same as len = tail.Len (or tail.len, BrightScript syntax is not
case sensative)
len = len-1
if
len=0
then