Microsoft Small Basic

Program Listing: TWD975
ss="800,376,800,298,820,289,835,289,853,296,853,376|990,610,992,544,1001,536,1001,514,994,506,996,296,1090,281,1100,262,1102,247,778,252,779,273,789,284,786,345,763,341,756,295,765,282,733,261,733,249,699,253,699,265,683,280,674,287,681,298,676,327,671,348,597,370,572,369,568,351,566,325,572,314,531,282,499,311,487,317,498,328,499,350,486,371,306,373,299,349,249,348,243,367,224,373,197,435,221,486,220,507,326,502,326,530,452,541,493,597,977,606|251,347,253,231,237,203,257,186,292,184,313,202,297,224,296,345|129,525,129,619,19,619,114,529|132,519,130,543,234,542,229,596,314,596,317,543,408,545,393,536,320,533,299,506,242,507,225,522,140,518|217,386,162,373,166,292,183,277,181,250,203,254,202,269,214,296,214,355,217,370,238,377
sh=LDText.Split (ss "|")
vv="739,357,737,316,718,292,704,292,702,226,716,203,157,198,144,208,139,223,106,222,106,329,70,333,69,353,228,354,224,383,277,384,274,356,545,356,545,385,597,383,596,358|335,392,326,384,308,385,292,403,210,403,194,386,175,384,174,392,187,394,205,411,295,412,322,393,
vg=LDText.Split (vv "|")
GraphicsWindow.Title="Trains
GraphicsWindow.Width=1400
GraphicsWindow.Height=900
GraphicsWindow.Left=5
GraphicsWindow.Top=5
GraphicsWindow.BackgroundColor ="teal
GraphicsWindow.PenWidth=0

m[1]="1=0;2=0"
m[2]="1=0;2=2"
m[3]="1=5;2=0"
s=LDShapes.AddPolygon (m)
Shapes.Remove (s)
GraphicsWindow.MouseMove =mww
GraphicsWindow.BrushColor="black
e=Shapes.AddEllipse (100 100)
Shapes.Move (e 130 540)
e=Shapes.AddEllipse (100 100)
Shapes.Move (e 320 540)
e=Shapes.AddEllipse (160 160)
Shapes.Move (e 800 476)
e=Shapes.AddEllipse (160 160)
Shapes.Move (e 540 476)
GraphicsWindow.BrushColor="gold

For x=1 To 6
shh=LDText.Split (sh[x] ",")
m=0

For r=1 To Array.GetItemCount (shh) Step 2
m[i][1]=shh[r]
m[i][2]=shh[r+1]
i=i+1
EndFor
If x=1 Then
oc=3
Else
oc=1
EndIf
For o=0 to oc-1
p= LDShapes.AddPolygon (m)
LDShapes.ZIndex (p, 1-x)
If x=1 Then
LDShapes.BrushColour (p "blue")
LDShapes.Move (p 800+o*64 290)

elseif x>=3 then
LDShapes.BrushColour (p "black")
endif
endfor
EndFor
GraphicsWindow.BrushColor="brown
rr=Shapes.AddRectangle (290 15)
Shapes.Move (rr 610 574)
vf=670
For v=0 to 5
For x=1 To 2
shh=LDText.Split (vg[x] ",")
m=0

For r=1 To Array.GetItemCount (shh) Step 2
m[i][1]=shh[r]
m[i][2]=shh[r+1]
i=i+1
EndFor

p= LDShapes.AddPolygon (m)

If x=2 Then
LDShapes.BrushColour (p "brown")
LDShapes.Move (p 1120+v*vf 580)
p= LDShapes.AddPolygon (m)
LDShapes.BrushColour (p "brown")
LDShapes.Move (p 1430+v*vf 580)
Else
LDShapes.BrushColour (p "gold")
LDShapes.Move (p 1010+v*vf 380)
EndIf

EndFor
GraphicsWindow.BrushColor="black
o400=320
For o=0 to 1
e=Shapes.AddEllipse (100 100)
Shapes.Move (e 1065+o*o400+v*vf 540)
LDShapes.ZIndex (e, -5)
e=Shapes.AddEllipse (100 100)
Shapes.Move (e 1225+o*o400+v*vf 540)
LDShapes.ZIndex (e, -5)
endfor
endfor
GraphicsWindow.PenWidth =15
GraphicsWindow.PenColor ="brown

While "true
For x=1600 to -5600 step -4
LDGraphicsWindow.Reposition (.6 .6 x, -50 0)
Program.Delay (10)
lx=610+LDMath.Cos(an)*50
ly=550+50*LDMath.Sin (an)
Shapes.Move (rr lx ly)
Shapes.Remove (l)
l=Shapes.AddLine( lx+5 ly+8 385 541)
an=an-5
endfor
Program.Delay (2222)
endwhile

Sub mww
' GraphicsWindow.Title=math.Floor (GraphicsWindow.MouseX) +" : "+math.Floor (GraphicsWindow.MouseY)
EndSub