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=lpl617' /> </object>
' Challenge of the month October 2012 Crescent area by NaochanON
gui
(
)
While
"true"
For
k
=
0
to
9
plot
(
)
GraphicsWindow
.
Title
=
" Lap % = "
+
math
.
Floor
(
XLap
*
100
*
10
)
/
10
+
" %"
+
" Crescent area = "
+
math
.
Round
(
Yarea
*
100
*
10
)
/
10
+
" % "
Shapes
.
Animate
(
DMoon
,
260
+
45
*
(
1
-
math
.
cos
(
rad
)
)
*
2
,
5
,
2000
)
Program
.
Delay
(
2000
)
endfor
scatter
(
)
Program
.
Delay
(
3000
)
Shapes
.
Animate
(
DMoon
,
250
,
5
,
3000
)
endwhile
Sub
plot
rad
=
Math
.
GetRadians
(
10
*
k
)
XLap
=
(
1
-
Math
.
Cos
(
rad
)
)
X
=
130
+
45
*
2
*
XLap
*
6
Yarea
=
(
1
-
2
*
(
rad
-
math
.
Cos
(
rad
)
*
math
.
Sin
(
rad
)
)
/
math
.
Pi
)
Y
=
100
+
100
*
(
1
-
Yarea
)
*
4
GraphicsWindow
.
BrushColor
=
"Yellow"
GraphicsWindow
.
PenColor
=
"Yellow"
Shapes
.
Remove
(
mark
[
k
]
)
mark
[
k
]
=
Shapes
.
AddEllipse
(
10
,
10
)
Shapes
.
Animate
(
mark
[
k
]
,
X
,
Y
,
1500
)
EndSub
sub
scatter
For
k
=
0
To
9
Shapes
.
Animate
(
mark
[
k
]
,
600
-
Math
.
GetRandomNumber
(
1200
)
,
500
+
Math
.
GetRandomNumber
(
1200
)
,
1500
)
EndFor
EndSub
sub
gui
GraphicsWindow
.
Top
=
50
GraphicsWindow
.
Width
=
800
GraphicsWindow
.
Height
=
600
GraphicsWindow
.
BackgroundColor
=
"darkgreen"
GraphicsWindow
.
BrushColor
=
"Black"
GraphicsWindow
.
PenColor
=
"Black"
GraphicsWindow
.
FillRectangle
(
100
,
100
,
600
,
400
)
GraphicsWindow
.
BrushColor
=
"Yellow"
GraphicsWindow
.
PenColor
=
"Yellow"
' ---------------- show message ------------------------------------
LF
=
Text
.
GetCharacter
(
10
)
msg
=
" s=( Πr^2/2*θ/Π - rcos(θ)*rsin(θ)/2 )"
+
LF
msg
=
msg
+
" CS=Πr^2 - 4*s"
+
LF
+
LF
msg
=
msg
+
" =r^2*( Π - 2*(θ-cos(θ)*sin(θ)) )"
+
LF
msg
=
msg
+
" Crescent %= CS/Πr^2 *100"
+
LF
msg
=
msg
+
" = ( Π-2*(θ-cos(θ)*sin(θ)) ) /Π*100"
+
LF
msg
=
msg
+
" = ( 1- 2*(θ-cos(θ)*sin(θ)) /Π )*100"
+
LF
+
LF
msg
=
msg
+
" X Lap = r*(1-cos(θ))*2/2r*100"
+
LF
msg
=
msg
+
" = (1-cos(θ))*100"
smsg
=
Shapes
.
AddText
(
msg
)
Shapes
.
Move
(
smsg
,
450
,
120
)
' ---------------- graph ------------------------------------
GraphicsWindow
.
FontSize
=
20
For
i
=
0
To
5
GraphicsWindow
.
DrawText
(
50
,
90
+
i
*
80
,
100
-
i
*
20
)
GraphicsWindow
.
fillRectangle
(
100
,
100
+
i
*
80
,
10
,
4
)
EndFor
GraphicsWindow
.
DrawText
(
50
,
60
,
" (%)"
)
For
J
=
0
To
10
GraphicsWindow
.
DrawText
(
120
+
j
*
60
*
90
/
100
,
500
,
j
*
10
)
GraphicsWindow
.
fillRectangle
(
130
+
j
*
60
*
90
/
100
,
490
,
4
,
10
)
EndFor
GraphicsWindow
.
DrawText
(
250
,
530
,
" Lap (%) "
)
' ---------------- Light Moon and Dark Moon --------------------------
Lmoon
=
Shapes
.
AddEllipse
(
90
,
90
)
Shapes
.
Move
(
Lmoon
,
350
,
5
)
GraphicsWindow
.
BrushColor
=
"Black"
GraphicsWindow
.
PenColor
=
"Black"
Dmoon
=
Shapes
.
AddEllipse
(
90
,
90
)
Shapes
.
SetOpacity
(
Dmoon
,
70
)
Shapes
.
Move
(
Dmoon
,
250
,
5
)
EndSub
Copyright (c) Microsoft Corporation. All rights reserved.