Microsoft Small Basic
Program Listing:
Embed this in your website
<object id='sbapp' data='data:application/x-silverlight-2,' type='application/x-silverlight-2' width='640' height='480'> <param name='source' value='http://smallbasic.com/program/ClientBin/SBWeb.xap'/> <param name='onError' value='onSilverlightError' /> <param name='background' value='white' /> <param name='minRuntimeVersion' value='3.0.40624.0' /> <param name='autoUpgrade' value='true' /> <param name='initParams' value='programId=QFB498' /> </object>
' Challenge of the month December 2012 by NaochanON
' Draw a Christmas tree
GUI
(
)
While
"true"
showstarH2
(
)
Program
.
Delay
(
1000
)
showstarH1
(
)
Program
.
Delay
(
1000
)
blinking
(
)
Program
.
Delay
(
1000
)
showstarV2
(
)
Program
.
Delay
(
1000
)
showstarV1
(
)
Program
.
Delay
(
1000
)
endwhile
Sub
snowing
NN
=
NN
+
1
Shapes
.
Move
(
snow1
[
NN
]
,
Math
.
GetRandomNumber
(
1000
)
,
-
(
100
+
Math
.
GetRandomNumber
(
300
)
)
)
Shapes
.
Move
(
snow2
[
NN
]
,
Math
.
GetRandomNumber
(
1000
)
,
-
(
100
+
Math
.
GetRandomNumber
(
300
)
)
)
ZM
=
(
5
+
Math
.
GetRandomNumber
(
20
)
)
/
10
Shapes
.
Zoom
(
snow1
[
NN
]
,
ZM
,
ZM
)
Shapes
.
Zoom
(
snow2
[
NN
]
,
ZM
,
ZM
)
Shapes
.
Animate
(
snow1
[
NN
]
,
Shapes
.
GetLeft
(
snow1
[
NN
]
)
,
700
-
Math
.
GetRandomNumber
(
250
)
,
2000
+
Math
.
GetRandomNumber
(
2000
)
)
Shapes
.
Animate
(
snow2
[
NN
]
,
Shapes
.
GetLeft
(
snow2
[
NN
]
)
,
700
-
Math
.
GetRandomNumber
(
150
)
,
2000
+
Math
.
GetRandomNumber
(
2000
)
)
If
NN
>
SN
Then
NN
=
0
EndIf
EndSub
Sub
showstarH1
For
i
=
pitch
To
1
Step
-
1
For
j
=
1
To
20
For
k
=
1
to
M
Shapes
.
SetOpacity
(
star1
[
K
]
[
j
]
[
i
]
,
100
)
Shapes
.
SetOpacity
(
star2
[
K
]
[
j
]
[
i
]
,
0
)
EndFor
EndFor
snowing
(
)
EndFor
EndSub
Sub
showstarH2
For
i
=
1
To
pitch
For
j
=
1
To
20
For
k
=
1
to
M
Shapes
.
SetOpacity
(
star1
[
K
]
[
j
]
[
i
]
,
0
)
Shapes
.
SetOpacity
(
star2
[
K
]
[
j
]
[
i
]
,
100
)
EndFor
EndFor
snowing
(
)
EndFor
EndSub
Sub
showstarV1
For
j
=
20
To
1
Step
-
1
For
i
=
1
To
pitch
For
k
=
1
to
M
Shapes
.
SetOpacity
(
star1
[
K
]
[
j
]
[
i
]
,
100
)
Shapes
.
SetOpacity
(
star2
[
K
]
[
j
]
[
i
]
,
0
)
EndFor
EndFor
snowing
(
)
EndFor
EndSub
Sub
showstarV2
For
k
=
1
to
M
For
j
=
1
To
20
For
i
=
1
To
pitch
Shapes
.
SetOpacity
(
star1
[
K
]
[
j
]
[
i
]
,
0
)
Shapes
.
SetOpacity
(
star2
[
K
]
[
j
]
[
i
]
,
100
)
EndFor
EndFor
snowing
(
)
EndFor
EndSub
Sub
blinking
For
i
=
1
To
pitch
For
j
=
1
To
20
For
k
=
1
to
M
PCNT
=
2
-
Math
.
GetRandomNumber
(
2
)
' 1 or 0
Shapes
.
SetOpacity
(
star1
[
K
]
[
j
]
[
i
]
,
100
*
PCNT
)
Shapes
.
SetOpacity
(
star2
[
K
]
[
j
]
[
i
]
,
100
*
(
1
-
PCNT
)
)
EndFor
EndFor
snowing
(
)
EndFor
EndSub
Sub
GUI
GraphicsWindow
.
Hide
(
)
GraphicsWindow
.
Width
=
1000
GraphicsWindow
.
Height
=
700
GraphicsWindow
.
Top
=
10
GraphicsWindow
.
Left
=
50
GraphicsWindow
.
BackgroundColor
=
"Black"
GraphicsWindow
.
BrushColor
=
"Lightcyan"
GraphicsWindow
.
PenColor
=
"Lightcyan"
'-------------------- Snow back -----------------------------------
SN
=
1000
For
L
=
1
To
SN
snow1
[
L
]
=
Shapes
.
AddText
(
"*"
)
Shapes
.
Move
(
snow1
[
L
]
,
100
,
-
100
)
endfor
'-------------------------------------------------------------------------
M
=
4
For
k
=
1
To
M
'-------------------- Position -----------------------------------
X0
=
30
+
(
150
+
Math
.
GetRandomNumber
(
100
)
)
*
(
k
-
1
)
' left position
Top
=
20
+
Math
.
GetRandomNumber
(
120
)
' tree top y-position
Xw
=
200
+
Math
.
GetRandomNumber
(
50
)
' tree width
Height
=
300
+
Math
.
GetRandomNumber
(
100
)
' tree height
XC
=
Xw
/
2
+
X0
' tree top x-position 8center)
Y0
=
Top
+
Height
' tree bottom
Pitch
=
12
' light number
'-------------------- Tree ---------------------------------------
GraphicsWindow
.
BrushColor
=
"saddlebrown"
GraphicsWindow
.
PenColor
=
"saddlebrown"
tree1
[
K
]
=
Shapes
.
AddTriangle
(
0
,
Height
+
90
,
60
,
Height
+
90
,
30
,
0
)
Shapes
.
Move
(
tree1
[
K
]
,
xc
-
30
+
3
,
top
)
GraphicsWindow
.
BrushColor
=
"Darkgreen"
GraphicsWindow
.
PenColor
=
"Darkgreen"
tree2
[
K
]
=
Shapes
.
AddTriangle
(
0
,
Height
,
Xw
-
10
,
Height
,
Xw
/
2
,
0
)
Shapes
.
Move
(
tree2
[
K
]
,
x0
+
3
,
top
)
'-------------------- star Light ---------------------------------------
For
j
=
1
To
pitch
For
i
=
1
To
pitch
y
=
Y0
-
(
height
/
Pitch
)
*
i
dx0
=
Xw
/
Pitch
*
(
j
-
1
)
x
=
x0
+
dx0
+
(
(
Xw
-
2
*
dx0
)
/
2
/
Pitch
)
*
i
GraphicsWindow
.
BrushColor
=
"Yellow"
GraphicsWindow
.
PenColor
=
"yellow"
star1
[
K
]
[
j
]
[
i
]
=
Shapes
.
AddText
(
"★"
)
GraphicsWindow
.
BrushColor
=
"cyan"
GraphicsWindow
.
PenColor
=
"cyan"
star2
[
K
]
[
j
]
[
i
]
=
Shapes
.
AddText
(
"*"
)
Shapes
.
Move
(
star1
[
K
]
[
j
]
[
i
]
,
x
,
y
)
Shapes
.
Move
(
star2
[
K
]
[
j
]
[
i
]
,
x
,
y
)
Shapes
.
SetOpacity
(
star2
[
K
]
[
j
]
[
i
]
,
0
)
EndFor
EndFor
'-------------------------------------------------------------------------
endfor
'-------------------- Snow Front -----------------------------------
GraphicsWindow
.
BrushColor
=
"Lightcyan"
GraphicsWindow
.
PenColor
=
"Lightcyan"
For
L
=
1
To
SN
snow2
[
L
]
=
Shapes
.
AddText
(
"*"
)
Shapes
.
Move
(
snow2
[
L
]
,
100
,
-
100
)
endfor
'-------------------------------------------------------------------------
GraphicsWindow
.
Show
(
)
EndSub
Copyright (c) Microsoft Corporation. All rights reserved.