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=ngm188' /> </object>
init
(
)
Timer
.
Tick
=
demo
Timer
.
Interval
=
1000
Timer
.
Resume
(
)
DEMO
(
)
Sub
DEMO
sANGLE
=
360
*
Clock
.
Second
/
w_mAX
Move_second
(
)
mANGLE
=
360
*
(
Clock
.
minute
+
Clock
.
Second
/
w_max
)
/
w_mAX
Move_minute
(
)
hANGLE
=
5
*
360
*
(
Clock
.
Hour
+
Clock
.
minute
/
w_max
+
Clock
.
Second
/
w_max
/
w_max
)
/
w_mAX
Move_Hour
(
)
GraphicsWindow
.
Title
=
(
clock
.
Date
+
" "
+
Clock
.
Time
)
If
clock
.
second
=
0
Then
photo
(
)
endif
ENDSUB
Sub
Move_second
dsx
=
(
DR
/
4
-
DR
/
2
*
0.1
)
*
math
.
Cos
(
Math
.
GetRadians
(
sangle
-
90
)
)
' 44/2 ..... center of arrow length
dsy
=
(
DR
/
4
-
DR
/
2
*
0.1
)
*
math
.
sin
(
Math
.
GetRadians
(
sangle
-
90
)
)
Shapes
.
Move
(
blc
[
4
]
,
x
+
DR
/
2
+
dsx
-
wr
,
y
+
dsy
+
0.1
*
DR
/
2
+
DR
/
4
-
wr
)
Shapes
.
Rotate
(
blc
[
4
]
,
sangle
)
EndSub
Sub
Move_minute
dmx
=
0.75
/
0.8
*
(
DR
/
4
-
DR
/
2
*
0.125
)
*
math
.
Cos
(
Math
.
GetRadians
(
mangle
-
90
)
)
' 44/2 ..... center of arrow length
dmy
=
0.75
/
0.8
*
(
DR
/
4
-
DR
/
2
*
0.125
)
*
math
.
sin
(
Math
.
GetRadians
(
mangle
-
90
)
)
Shapes
.
Move
(
blc
[
3
]
,
x
+
DR
/
2
+
dmx
-
wr
,
y
+
dmy
+
0.125
*
DR
/
2
+
DR
/
4
-
wr
)
Shapes
.
Rotate
(
blc
[
3
]
,
mangle
)
EndSub
Sub
Move_hour
dhx
=
0.7
/
0.8
*
(
DR
/
4
-
DR
/
2
*
0.15
)
*
math
.
Cos
(
Math
.
GetRadians
(
hangle
-
90
)
)
' 44/2 ..... center of arrow length
dhy
=
0.7
/
0.8
*
(
DR
/
4
-
DR
/
2
*
0.15
)
*
math
.
sin
(
Math
.
GetRadians
(
hangle
-
90
)
)
Shapes
.
Move
(
blc
[
2
]
,
x
+
DR
/
2
+
dhx
-
wr
,
y
+
dhy
+
0.15
*
DR
/
2
+
DR
/
4
-
wr
)
Shapes
.
Rotate
(
blc
[
2
]
,
hangle
)
EndSub
Sub
scaling
GraphicsWindow
.
BrushColor
=
"Yellow"
GraphicsWindow
.
FontSize
=
12
For
j
=
1
To
60
angle
=
360
/
60
*
j
scx
=
DR
/
2
*
math
.
Cos
(
math
.
GetRadians
(
angle
-
90
)
)
scY
=
DR
/
2
*
math
.
sin
(
math
.
GetRadians
(
angle
-
90
)
)
scm
[
j
]
=
Shapes
.
AddRectangle
(
2
,
5
)
' narrow mark
If
Math
.
Remainder
(
j
,
5
)
=
0
Then
' 5 pitch
Shapes
.
Remove
(
scm
[
j
]
)
scm
[
j
]
=
Shapes
.
AddRectangle
(
5
,
5
)
' wide mark
sct
[
j
]
=
Shapes
.
AddText
(
math
.
Floor
(
j
/
5
)
)
Shapes
.
Move
(
sct
[
j
]
,
X
+
DR
/
2
+
0.85
*
scx
-
6
,
Y
+
DR
/
2
+
0.85
*
scy
-
7
)
EndIf
Shapes
.
Move
(
scm
[
j
]
,
X
+
DR
/
2
+
scx
-
1
,
Y
+
DR
/
2
+
scy
-
1
)
Shapes
.
Rotate
(
scm
[
j
]
,
angle
)
EndFor
EndSub
Sub
init
X
=
20
Y
=
20
DR
=
208
GraphicsWindow
.
Hide
(
)
GraphicsWindow
.
BackgroundColor
=
"Teal"
photo
(
)
GraphicsWindow
.
Width
=
250
GraphicsWindow
.
Height
=
250
GraphicsWindow
.
Top
=
20
GraphicsWindow
.
Left
=
50
GraphicsWindow
.
BrushColor
=
"Red"
w_mAX
=
60
' full scale
face
(
)
' draw analoguebalance
scaling
(
)
GraphicsWindow
.
Show
(
)
EndSub
Sub
face
wr
=
3
'------------------------ Hour Arrow -------------------------
GraphicsWindow
.
BrushColor
=
"DarkGreen"
GraphicsWindow
.
PenColor
=
"DarkGreen"
blc
[
2
]
=
Shapes
.
AddTriangle
(
wr
,
0
,
0
,
DR
/
2
*
0.7
,
2
*
wr
,
DR
/
2
*
0.7
)
' <----- Hour arrow
'------------------------ Minute Arrow -------------------------
GraphicsWindow
.
BrushColor
=
"Navy"
GraphicsWindow
.
PenColor
=
"Navy"
blc
[
3
]
=
Shapes
.
AddTriangle
(
wr
,
0
,
0
,
DR
/
2
*
0.75
,
2
*
wr
,
DR
/
2
*
0.75
)
' <----- Minute arrow
'------------------------ second Arrow -------------------------
GraphicsWindow
.
BrushColor
=
"Red"
GraphicsWindow
.
PenColor
=
"Red"
blc
[
4
]
=
Shapes
.
AddTriangle
(
wr
,
0
,
0
,
DR
/
2
*
0.8
,
2
*
wr
,
DR
/
2
*
0.8
)
' <----- Second arrow
blc
[
5
]
=
Shapes
.
AddEllipse
(
15
,
15
)
GraphicsWindow
.
BrushColor
=
"Yellow"
'---------------------------------------------------------
Shapes
.
Move
(
blc
[
4
]
,
X
+
DR
/
2
-
wr
,
Y
)
' arrow
Shapes
.
Move
(
blc
[
5
]
,
X
+
DR
/
2
-
7.5
,
Y
+
DR
/
2
-
7.5
)
GraphicsWindow
.
PenColor
=
"Yellow"
EndSub
Sub
photo
a
=
Flickr
.
GetRandomPicture
(
"cat"
)
' get a photo from Flickr
GraphicsWindow
.
DrawResizedImage
(
a
,
0
,
0
,
250
,
250
)
EndSub
Copyright (c) Microsoft Corporation. All rights reserved.