Microsoft Small Basic

Program Listing: ZTM411
'alarm clock
'jalpc November 2014
fps=50
data_()
GraphicsWindow.Hide()
updateClock()
form_()
objs_()
btns_()
objectClear_()
draws_()
GraphicsWindow.Show()
Controls.ButtonClicked=OnButtonClicked
Timer.Tick=OnTick
Timer.Interval=500
'
'Loop
While "True"
start = Clock.ElapsedMilliseconds' recoge hora entrada en loop
Update()
delay = 1000/fps - (Clock.ElapsedMilliseconds - start)' retraso
If (delay > 0) Then
Program.Delay(delay)
EndIf
Endwhile
'
Sub Update
If flag_alarmaSound Then
if dat["btnAlarm"]="True" Then
flag_alarmaSound="False"
Shapes.SetOpacity(object["boxState3"],100)
Goto EXIT_LOOP
EndIf
For k = 1 To 5
Sound.PlayBellRingAndWait()
Program.Delay(500)
If btnClick=btnName["btnStop"] Then
flag_alarmaSound="False"
Shapes.SetOpacity(object["boxState3"],100)
btnClick=""
Goto EXIT_LOOP
EndIf
EndFor
flag_alarmaSound="False"
Shapes.SetOpacity(object["boxState3"],100)
Goto EXIT_LOOP
EndIf
If btnClick=btnName["VFast"] Then
Timer.Interval=250
pm="1=VFast;2=Fast;3=0;4=100;5=100;"
updateState2()
btnClick=""
Goto EXIT_LOOP
EndIf
If btnClick=btnName["Fast"] Then
Timer.Interval=500
pm="1=Fast;2=VFast;3=0;4=0;5=100;"
updateState2()
btnClick=""
Goto EXIT_LOOP
EndIf
If btnClick=btnName["Help"] Then
showHelp()
btnClick=""
Goto EXIT_LOOP
EndIf
If btnClick=btnName["End"] Then
Program.End()
EndIf
If btnClick=btnName["btnOnOff"] And dat["btnAlarm"]="False" Then
If dat["alarmOnOff"]="on" then
dat["alarmOnOff"]="off"
pm="1=T;2=*;3=off;"
updateState()
Else
dat["alarmOnOff"]="on"
pm="1=T;2=A;3=on;"
updateState()
EndIf
btnClick=""
Goto EXIT_LOOP
EndIf
If btnClick=btnName["btnModeA"] Then
dat["btnAlarm"]="True"
Shapes.HideShape(object["clearSet1"])
Shapes.HideShape(object["clearSet2"])
Shapes.HideShape(object["clearSet3"])
Shapes.ShowShape(object["clearBtnA"])
Shapes.SetText(object["boxState1"],"A")
Shapes.SetText(object["boxState2"],">")
While lapBlink <> 0
EndWhile
Program.Delay(delay)
updateClock()
btnClick=""
Goto EXIT_LOOP
EndIf
If btnClick=btnName["btnModeSet"] And dat["btnAlarm"]="True" Then
dat["btnAlarm"]="False"
Shapes.ShowShape(object["clearSet1"])
Shapes.ShowShape(object["clearSet2"])
Shapes.ShowShape(object["clearSet3"])
Shapes.HideShape(object["clearBtnA"])
dat["alarmOnOff"]="on" '
Shapes.SetText(object["boxState1"],"T")
Shapes.SetText(object["boxState2"],"A")
updateClock()
pm="1=T;2=A;3=on;"
updateState()
btnClick=""
Goto EXIT_LOOP
EndIf
If btnClick=btnName["btnChangeH1"] And dat["btnAlarm"]="True" Then
dat["hourAlarm"]=dat["hourAlarm"]-1
If dat["hourAlarm"] = -1 Then
dat["hourAlarm"] = 23
EndIf
updateClock()
pm="1=T;2=A;3=on;"
updateState()
btnClick=""
Goto EXIT_LOOP
EndIf
If btnClick=btnName["btnChangeH2"] And dat["btnAlarm"]="True" Then
dat["hourAlarm"]=dat["hourAlarm"]+1
If dat["hourAlarm"] = 24 Then
dat["hourAlarm"] = 0
EndIf
updateClock()
pm="1=T;2=A;3=on;"
updateState()
btnClick=""
Goto EXIT_LOOP
EndIf
If btnClick=btnName["btnChangeM1"] And dat["btnAlarm"]="True" Then
dat["minuteAlarm"]=dat["minuteAlarm"]-1
If dat["minuteAlarm"] = -1 Then
dat["minuteAlarm"] = 59
EndIf
updateClock()
pm="1=T;2=A;3=on;"
updateState()
btnClick=""
Goto EXIT_LOOP
EndIf
If btnClick=btnName["btnChangeM2"] And dat["btnAlarm"]="True" Then
dat["minuteAlarm"]=dat["minuteAlarm"]+1
If dat["minuteAlarm"] = 60 Then
dat["minuteAlarm"] = 0
EndIf
updateClock()
pm="1=T;2=A;3=on;"
updateState()
btnClick=""
Goto EXIT_LOOP
EndIf
'
EXIT_LOOP:
EndSub
'
Sub OnButtonClicked
btnClick=Controls.LastClickedButton
EndSub
'
Sub OnTick
If dat["HelpMsg"] Then
dat["contLapMsg"]=dat["contLapMsg"]+1
If dat["contLapMsg"] >= 10 Then
dat["contLapMsg"]=0
hideHelp()
EndIf
EndIf
dat["minute"]=dat["minute"]+1
If dat["minute"]>=60 Then
dat["minute"]=0
dat["hour"]=dat["hour"]+1
If dat["hour"] >= 24 Then
dat["hour"]=0
EndIf
EndIf
updateClock()
updateTitle()
showBlink()
If (dat["hour"] = dat["hourAlarm"]) And (dat["minute"]= dat["minuteAlarm"]) And dat["alarmOnOff"]="on" Then
flag_alarmaSound="True"
EndIf
EndSub
'
Sub form_
GraphicsWindow.BackgroundColor="LightBlue"
GraphicsWindow.Width=dim["pgW"]
GraphicsWindow.Height=dim["pgH"]
GraphicsWindow.Top=dim["pgTop"]
GraphicsWindow.Left=dim["pgLeft"]
GraphicsWindow.CanResize="False"
GraphicsWindow.Title=dat["title"]
EndSub
'
Sub btns_
For bt=1 To Array.GetItemCount(btn)
pm=btn[bt]
pmFormat()
n=Array.GetItemCount(numBtn)+1
numBtn[n]=Controls.AddButton(pm["caption"],pm["x"],pm["y"])
Shapes.SetOpacity(numBtn[n],pm["opacity"])
Controls.SetSize(numBtn[n],pm["w"],pm["h"])
If pm["hide"]="yes" Then
Controls.HideControl(numBtn[bt])
EndIf
btnName[pm["name"]]=numBtn[bt]
pm=""
EndFor
EndSub
'
Sub draws_
arrayTemp=draW
typeObject="draw"
loopIndex()
arrayTemp=draw2
typeObject="draw"
loopIndex()
EndSub
'
Sub loopIndex
listIndex1=Array.GetAllIndices(arrayTemp)
For index1 = 1 To Array.GetItemCount(listIndex1)
listIndex2=Array.GetAllIndices(arrayTemp[listIndex1[index1]])
For index2= 1 To Array.GetItemCount(listIndex2)
pm=arrayTemp[listIndex1[index1]][listIndex2[index2]]
If typeObject = "draw" Then
genDraw()
Else
genObject()
EndIf
pm=""
EndFor
EndFor
arrayTemp=""
EndSub
'
Sub genObject
pmFormat()
If pm["type"]="Ellipse" Then
object[pm["name"]]= Shapes.AddEllipse(pm["w"],pm["h"])
Shapes.SetOpacity(object[pm["name"]],pm["opacity"])
Shapes.Move(object[pm["name"]],pm["x"],pm["y"])
If pm["hide"]="True" Then
Shapes.HideShape(object[pm["name"]])
EndIf
EndIf
If pm["type"]="Triangle" Then
object[pm["name"]]= Shapes.AddTriangle(pm["x1"],pm["y1"],pm["x2"],pm["y2"],pm["x3"],pm["y3"])
Shapes.SetOpacity(object[pm["name"]],pm["opacity"])
If pm["hide"]="True" Then
Shapes.HideShape(object[pm["name"]])
EndIf
EndIf
If pm["type"]="Rectangle" Then
object[pm["name"]]= Shapes.AddRectangle(pm["w"],pm["h"])
Shapes.SetOpacity(object[pm["name"]],pm["opacity"])
Shapes.Move(object[pm["name"]],pm["x"],pm["y"])
If pm["hide"]="True" Then
Shapes.HideShape(object[pm["name"]])
EndIf
EndIf
If pm["type"]="Text" Then
object[pm["name"]]= Shapes.AddText(pm["text"])
Shapes.SetOpacity(object[pm["name"]],pm["opacity"])
Shapes.Move(object[pm["name"]],pm["x"],pm["y"])
If pm["hide"]="True" Then
Shapes.HideShape(object[pm["name"]])
EndIf
EndIf
EndSub
'
Sub genDraw
pmFormat()
If pm["type"]="drawRect" Then
GraphicsWindow.DrawRectangle(pm["x"],pm["y"],pm["w"],pm["h"])
EndIf
If pm["type"]="fillRect" Then
GraphicsWindow.FillRectangle(pm["x"],pm["y"],pm["w"],pm["h"])
EndIf
If pm["type"]="drawText" Then
GraphicsWindow.DrawBoundText(pm["x"],pm["y"],pm["w"],pm["value"])
EndIf
EndSub
'
Sub objs_
arrayTemp=shap
loopIndex()
arrayTemp=shap1
loopIndex()
arrayTemp=shap2
loopIndex()
arrayTemp=shap4
loopIndex()
EndSub
'
Sub objectClear_
arrayTemp=shap3
loopIndex()
EndSub
'
Sub pmFormat
If pm["color"] <> "" Then
GraphicsWindow.BrushColor=pm["color"]
EndIf
If pm["penColor"] <> "" Then
GraphicsWindow.PenColor=pm["penColor"]
EndIf
If pm["penSize"] <> "" Then
GraphicsWindow.PenWidth=pm["penSize"]
EndIf
If pm["fontSize"] <> "" Then
GraphicsWindow.FontSize=pm["fontSize"]
EndIf
If pm["fontName"] <> "" Then
GraphicsWindow.FontName=pm["fontName"]
EndIf
EndSub
'
Sub showHelp
dat["HelpMsg"]="True"
For j = 1 To 100 Step 5
For k =1 to Array.GetItemCount(shap["msg"])
Shapes.SetOpacity(object["msg"+k],j)
EndFor
Program.Delay(20)
EndFor
EndSub
'
Sub hideHelp
dat["HelpMsg"]="False"
For k =1 to Array.GetItemCount(shap["msg"])
Shapes.SetOpacity(object["msg"+k],0)
EndFor
EndSub
'
Sub showBlink
If lapBlink=0 Then
lapBlink=1
draw2["box"][2]["value"]=" "
If flag_alarmaSound Then
Shapes.SetOpacity(object["boxState3"],0)
EndIf
Else
lapBlink=0
draw2["box"][2]["value"]=":"
If flag_alarmaSound Then
Shapes.SetOpacity(object["boxState3"],100)
EndIf
EndIf
arrayTemp=draw2
typeObject="draw"
loopIndex()
EndSub
'
Sub updateClock
hourTextT=dat["hour"]
minuteTexTt=dat["minute"]
If dat["hour"]<10 Then
hourTextT=Text.Append("0",dat["hour"])
EndIf
If dat["minute"]<10 Then
minuteTextT=Text.Append("0",dat["minute"])
EndIf
hourTextA=dat["hourAlarm"]
minuteTextA=dat["minuteAlarm"]
If dat["hourAlarm"]<10 Then
hourTextA=Text.Append("0",dat["hourAlarm"])
EndIf
If dat["minuteAlarm"]<10 Then
minuteTextA=Text.Append("0",dat["minuteAlarm"])
EndIf
If dat["btnAlarm"]="True" Then
Shapes.SetText(object["boxNumber1"],hourTextA)
Shapes.SetText(object["boxNumber2"],minuteTextA)
Else
Shapes.SetText(object["boxNumber1"],hourTextT)
Shapes.SetText(object["boxNumber2"],minuteTextT)
EndIf
timeText=hourTextT+":"+minuteTextT
Shapes.SetText(object["boxState4"],timeText)
if dat["btnAlarm"]="True" Then
Shapes.SetOpacity(object["boxState4"],100)
Else
Shapes.SetOpacity(object["boxState4"],0)
EndIf
EndSub
'
Sub updateTitle
h=Clock.Hour
m=Clock.Minute
If h<10 Then
h=Text.Append("0",h)
EndIf
If m<10 Then
m=Text.Append("0",m)
EndIf
GraphicsWindow.Title=dat["title"] + " "+h +" : "+m
EndSub
'
Sub updateState
Shapes.SetText(object["boxState1"],pm[1])
Shapes.SetText(object["boxState2"],pm[2])
hourTextA=dat["hourAlarm"]
If dat["hourAlarm"] <10 Then
hourTextA=Text.Append("0",hourTextA)
EndIf
minuteTextA=dat["minuteAlarm"]
If dat["minuteAlarm"] <10 Then
minuteTextA=Text.Append("0",minuteTextA)
EndIf
text1=hourTextA + ":" + minuteTextA + " " + pm[3]
Shapes.SetText(object["boxState3"],text1)
pm=""
EndSub
'
Sub updateState2
Controls.HideControl(btnName[pm[1]])
Controls.ShowControl(btnName[pm[2]])
Shapes.SetOpacity(object["REAL"],pm[3])
Shapes.SetOpacity(object["VERY"],pm[4])
Shapes.SetOpacity(object["FAST"],pm[5])
EndSub
'
Sub data_
dat="title=alarm (demo fast) Time Real:;HelpMsg=False;contLapMsg=0;hourAlarm=0;minuteAlarm=0;btnAlarm=False;alarmOnOff=on;hour=0;minute=0;"
dat["hour"]=Clock.Hour
dat["minute"]=Clock.Minute
dim="pgW=350;pgH=350;pgLeft=50;pgTop=30;"
shap["msg"][1]="type=Ellipse;color=Gold;penColor=Gold;x=38;y=213;w=290;h=90;opacity=0;name=msg1;"
shap["msg"][2]="type=Triangle;color=Gold;penColor=Gold;x1=67;y1=317;x2=83;y2=290;x3=142;y3=300;opacity=0;name=msg2;"
shap["msg"][3]="type=Triangle;color=Yellow;penColor=Yellow;x1=64;y1=314;x2=80;y2=287;x3=139;y3=297;opacity=0;name=msg3;"
shap["msg"][4]="type=Ellipse;color=Yellow;penColor=Yellow;x=35;y=210;w=290;h=90;opacity=0;name=msg4;"
shap["msg"][5]="type=Text;color=Red;fontSize=12;x=95;y=217;text=1.Click 'A' to change alarm;opacity=0;name=msg5;"
shap["msg"][6]="type=Text;color=Red;fontSize=12;x=95;y=237;text=2.Click '+/-' to change time alarm;opacity=0;name=msg6;"
shap["msg"][7]="type=Text;color=Red;fontSize=12;x=95;y=257;text=3.Click 'Set' to confirm change;opacity=0;name=msg7;"
shap["msg"][8]="type=Text;color=Red;fontSize=12;x=95;y=277;text=4.on/off -> activate alarm;opacity=0;name=msg8;"
shap1["hour"][1]="type=Text;color=DarkSlateGray;fontSize=65;x=90;y=50;text=88;opacity=100;name=boxNumber1;"
shap1["minute"][1]="type=Text;color=DarkSlateGray;fontSize=65;x=195;y=50;text=88;opacity=100;name=boxNumber2;"
shap2["boxState"][1]="type=Text;color=DarkSlateGray;fontSize=20;x=55;y=70;text=T;opacity=100;name=boxState1;"
shap2["boxState"][2]="type=Text;color=DarkSlateGray;fontSize=20;x=55;y=90;text=*;opacity=100;name=boxState2;"
shap2["boxState"][3]="type=Text;color=DarkSlateGray;fontSize=10;x=50;y=55;text=00:00 on;opacity=100;name=boxState3;"
shap2["boxState"][4]="type=Text;color=DarkSlateGray;fontSize=10;x=50;y=111;text=00:00;opacity=0;name=boxState4;"
shap2["boxState"][5]="type=Text;color=DarkSlateGray;fontSize=10;x=210;y=55;text=VERY;opacity=0;name=VERY;"
shap2["boxState"][6]="type=Text;color=DarkSlateGray;fontSize=10;x=245;y=55;text=FAST;opacity=100;name=FAST;"
shap3["clear"][1]="type=Rectangle;color=OrangeRed;penColor=OrangeRed;x=75;y=145;w=55;h=40;opacity=70;name=clearSet1;"
shap3["clear"][2]="type=Rectangle;color=OrangeRed;penColor=OrangeRed;x=160;y=145;w=55;h=40;opacity=70;name=clearSet2;"
shap3["clear"][3]="type=Rectangle;color=OrangeRed;penColor=OrangeRed;x=240;y=145;w=55;h=40;opacity=70;name=clearSet3;"
shap3["clear"][4]="type=Rectangle;hide=True;color=OrangeRed;penColor=OrangeRed;x=35;y=145;w=40;h=40;opacity=70;name=clearBtnA;"
shap4["text"][1]="type=Text;color=DarkRed;fontSize=20;x=135;y=152;text=H:;opacity=60;name=textH;"
shap4["text"][2]="type=Text;color=DarkRed;fontSize=20;x=214;y=152;text=M:;opacity=60;name=textM;"
btn[1]="color=Red;fontSize=12;x=20;y=310;w=50;h=30;caption=Help;opacity=100;name=Help;"
btn[2]="color=Blue;fontSize=12;x=80;y=310;w=50;h=30;caption=VFast;opacity=100;name=VFast;"
btn[3]="color=Blue;fontSize=12;x=140;y=310;w=50;h=30;caption=Fast;hide=yes;opacity=100;name=Fast;"
btn[4]="color=Black;fontSize=12;x=280;y=310;w=50;h=30;caption=END;opacity=100;name=End;"
btn[5]="color=Black;fontSize=8;x=40;y=23;w=200;h=20;caption=STOP;opacity=40;name=btnStop;"
btn[6]="color=Black;fontSize=8;x=250;y=23;w=50;h=20;caption=OnOff;opacity=40;name=btnOnOff;"
btn[7]="color=Black;fontSize=20;x=37;y=147;w=35;h=35;caption=A;opacity=50;name=btnModeA;"
btn[8]="color=Black;fontSize=15;x=77;y=147;w=50;h=35;caption=Set;opacity=50;name=btnModeSet;"
btn[9]="color=Black;fontSize=10;x=163;y=154;w=21;h=21;caption=-;opacity=50;name=btnChangeH1;"
btn[10]="color=Black;fontSize=10;x=188;y=154;w=21;h=21;caption=+;opacity=50;name=btnChangeH2;"
btn[11]="color=Black;fontSize=10;x=242;y=154;w=21;h=21;caption=-;opacity=50;name=btnChangeM1;"
btn[12]="color=Black;fontSize=10;x=268;y=154;w=21;h=21;caption=+;opacity=50;name=btnChangeM2;"
draw["box"][1]="type=fillRect;color=Gray;x=25;y=20;w=300;h=185;"
draw["box"][2]="type=fillRect;color=OrangeRed;x=20;y=15;w=300;h=185;"
draw["box"][3]="type=drawRect;penColor=Black;penSize=4;x=20;y=15;w=300;h=185;"
draw["box"][4]="type=fillRect;color=Aquamarine;x=40;y=50;w=260;h=80;"
draw["box"][5]="type=drawRect;penColor=Black;penSize=3;x=40;y=50;w=260;h=80;"
draw["btnStop"][1]="type=fillRect;color=Gray;x=42;y=25;w=200;h=20;"
draw["btnStop"][2]="type=fillRect;color=Silver;x=40;y=23;w=200;h=20;"
draw["btnStop"][3]="type=drawRect;penColor=Black;penSize=1;x=40;y=23;w=200;h=20;"
draw["btnOnOff"][1]="type=fillRect;color=Gray;x=252;y=25;w=50;h=20;"
draw["btnOnOff"][2]="type=fillRect;color=Silver;x=250;y=23;w=50;h=20;"
draw["btnOnOff"][3]="type=drawRect;penColor=Black;penSize=1;x=250;y=23;w=50;h=20;"
draw["btnModeA"][1]="type=fillRect;color=Gray;x=43;y=153;w=30;h=30;"
draw["btnModea"][2]="type=fillRect;color=SandyBrown;x=40;y=150;w=30;h=30;"
draw["btnModea"][3]="type=drawRect;penColor=Black;penSize=3;x=40;y=150;w=30;h=30;"
draw["btnModeSet"][1]="type=fillRect;color=Gray;x=83;y=153;w=45;h=30;"
draw["btnModeSet"][2]="type=fillRect;color=SandyBrown;x=80;y=150;w=45;h=30;"
draw["btnModeSet"][3]="type=drawRect;penColor=Black;penSize=3;x=80;y=150;w=45;h=30;"
draw["boxChange"][1]="type=drawRect;penColor=Gray;penSize=2;x=30;y=142;w=280;h=45;"
draw["boxChange"][3]="type=fillRect;color=Gray;x=165;y=156;w=20;h=20;"
draw["boxChange"][4]="type=fillRect;color=SandyBrown;x=163;y=154;w=20;h=20;"
draw["boxChange"][5]="type=fillRect;color=Gray;x=190;y=156;w=20;h=20;"
draw["boxChange"][6]="type=fillRect;color=SandyBrown;x=188;y=154;w=20;h=20;"
draw["boxChange"][8]="type=fillRect;color=Gray;x=245;y=156;w=20;h=20;"
draw["boxChange"][9]="type=fillRect;color=SandyBrown;x=243;y=154;w=20;h=20;"
draw["boxChange"][10]="type=fillRect;color=Gray;x=270;y=156;w=20;h=20;"
draw["boxChange"][11]="type=fillRect;color=SandyBrown;x=268;y=154;w=20;h=20;"
draw2["box"][1]="type=fillRect;color=Aquamarine;penSize=4;x=175;y=60;w=16;h=60;"
draw2["box"][2]="type=drawText;color=DarkSlateGray;fontSize=35;x=177;y=65;w=50;value=:;"
EndSub