While "true"
DH="1="+(100+Clock.Second)+";2="+(100+Clock.Minute)+";3="+(100+Clock.Hour) ' Make clock array DH[ ]
water_drop()
Water_Height()
shapes.SetText(smsg["Date"],Clock.Date)
shapes.SetText(smsg["Sec"],Text.GetSubText(DH[1],2,2)) ' Sec
shapes.SetText(smsg["Min"],Text.GetSubText(DH[2],2,2)) ' Min
shapes.SetText(smsg["Hr"],Text.GetSubText(DH[3],2,2)) ' Hr
crab_Moving()
Program.Delay(50)
endwhile
Sub Crab_Moving
For k=start To end
Shapes.Move(shape[k]["obj"],Shapes.GetLeft(shape[k]["obj"])+cddx,Shapes.Gettop(shape[k]["obj"])+cddy)
EndFor
If shapes.GetLeft(shape[52]["obj"])< Shapes.GetLeft(shape[3]["obj"])+5 Then
cddx=-cddx
elseIf Shapes.GetLeft(shape[2]["obj"])-10<(Shapes.GetLeft(shape[25]["obj"])) Then
cddx=-cddx
elseif shapes.Gettop(shape[52]["obj"])< Shapes.Gettop(shape[3]["obj"])+shape[3]["height"]/2 Then
cddy=-cddy
elseif Shapes.Gettop(shape[3]["obj"])+shape[3]["height"]
cddy=-cddy
EndIf
EndSub
Sub water_drop
'---------------------------------------- second drop -----------------
NN=NN+1
ddy=NN/20*shape[1]["height"]
Shapes.move(drop[1],shapes.GetLeft(shape[11]["obj"]),Shapes.GetTop(shape[11]["obj"])+ddY) ' second drop
'----------------------------------------- Water tank(second) height -------------------
If DH[1]>=130 Then
Shapes.rotate(shape[5]["obj"],-90) ' Open Water faucet 1
Shapes.move(drop[2],shapes.GetLeft(shape[4]["obj"])-4,Shapes.GetTop(shape[4]["obj"])+ddY) ' Minute drop
Shapes.move(drop[3],shapes.GetLeft(shape[4]["obj"])+2,Shapes.GetTop(shape[4]["obj"])+ddY+5) ' Minute drop
else
Shapes.rotate(shape[5]["obj"],0) ' Close Water faucet 1
EndIf
'----------------------------------------- Water tank(Minute) height -------------------
If DH[2]>=130 Then
Shapes.rotate(shape[7]["obj"],-90) ' Open Water faucet 2
For j=4 To 7
Shapes.move(drop[j],shapes.GetLeft(shape[6]["obj"])-9+4*(j-4),Shapes.GetTop(shape[6]["obj"])+ddY+6*(j-3)) ' Hour drop
endfor
else
Shapes.rotate(shape[7]["obj"],0) ' Close Water faucet 2
EndIf
'----------------------------------------- Water tank(Hour) height -------------------
If DH[3]>=112 Then
Shapes.rotate(shape[9]["obj"],-90) ' Open Water faucet 2
For j=8 To 11
Shapes.move(drop[j],shapes.GetLeft(shape[8]["obj"])-9+4*(j-8),Shapes.GetTop(shape[8]["obj"])+ddY+6*(j-7)) ' Hour drop
endfor
else
Shapes.rotate(shape[9]["obj"],0) ' Close Water faucet 3
EndIf
'----------------------------------------- return drops -------------------
If NN=20 Then
Shapes.move(drop[1],shapes.GetLeft(shape[11]["obj"]),Shapes.GetTop(shape[11]["obj"])+10) ' second drop
Shapes.move(drop[2],shapes.GetLeft(shape[4]["obj"])-4,Shapes.GetTop(shape[4]["obj"])+10) ' From second tank
Shapes.move(drop[3],shapes.GetLeft(shape[4]["obj"])-4,Shapes.GetTop(shape[4]["obj"])+10) ' From second tank
For j=4 To 7
Shapes.move(drop[j],shapes.GetLeft(shape[6]["obj"])-4,Shapes.GetTop(shape[6]["obj"])+10) ' From Minute tank
endfor
For j=8 To 11
Shapes.move(drop[j],shapes.GetLeft(shape[8]["obj"])-4,Shapes.GetTop(shape[8]["obj"])+10) ' From Hour tank
endfor
NN=0
EndIf
EndSub
Sub Water_Height
'----------------------- Second water tank -------------------------------
If DH[1]<130 Then ' within 30sec
WH1=DH[1]+30-100
ElseIf DH[1]>=130 then ' over 30sec
WH1=60-(DH[1]-30-100)
endif
Shapes.Zoom(shape[15]["obj"],1,WH1/60)
Shapes.Move(shape[15]["obj"],Shapes.GetLeft(shape[15]["obj"]),shy+shape[1]["y"]+(1-WH1/60)*shape[1]["height"]/2)
'----------------------- Minute water tank -------------------------------
If DH[2]<130 Then ' within 30minute
WH2=DH[2]+30-100
ElseIf DH[2]>=30 then ' over 30minute
WH2=60-(DH[2]-30-100)
endif
Shapes.Zoom(shape[16]["obj"],1,(WH2/60))
Shapes.Move(shape[16]["obj"],Shapes.GetLeft(shape[16]["obj"]),shy+shape[2]["y"]+(1-(WH2/60))*shape[2]["height"]/2)
'----------------------- Hour water tank -------------------------------
If DH[3]<112 Then ' within 12Hour
WH3=DH[3]+12-100
ElseIf DH[3]>=112 then ' over 12Hour
WH3=24-(DH[3]-12-100)
endif
Shapes.Zoom(shape[17]["obj"],1,(WH3/24))
Shapes.Move(shape[17]["obj"],Shapes.GetLeft(shape[17]["obj"]),shy+shape[3]["y"]+(1-(WH3/24))*shape[3]["height"]/2)
EndSub
Sub drops
GraphicsWindow.BrushColor="#00CED1"
GraphicsWindow.PenColor="#00CED1"
drop[1]=Shapes.AddEllipse(5,8)
shapes.Move(drop[1],shapes.GetLeft(shape[10]["obj"]),Shapes.GetTop(shape[10]["obj"])+10) ' Second drop
For j=2 To 3
drop[j]=Shapes.AddEllipse(5,8)
shapes.Move(drop[j],shapes.GetLeft(shape[4]["obj"]),Shapes.GetTop(shape[4]["obj"])+10) ' Minute Drop
endfor
For j=4 To 7
drop[j]=Shapes.AddEllipse(5,8)
shapes.Move(drop[j],shapes.GetLeft(shape[6]["obj"]),Shapes.GetTop(shape[6]["obj"])+10) ' hour Drop
endfor
For j=8 To 11
drop[j]=Shapes.AddEllipse(5,8)
shapes.Move(drop[j],shapes.GetLeft(shape[8]["obj"]),Shapes.GetTop(shape[8]["obj"])+10) ' wasted drop
endfor
EndSub
Sub Shapes_Add
'------------------------------- Water Clock and Crab -------------------------------
For i = start To Array.GetItemCount(shape)
GraphicsWindow.PenWidth = shape[i]["pw"]*s
GraphicsWindow.PenColor = shape[i]["pc"]
GraphicsWindow.BrushColor = shape[i]["bc"]
If shape[i]["func"] = "rect" Then
shape[i]["obj"] = Shapes.AddRectangle(shape[i]["width"]*s, shape[i]["height"]*s)
ElseIf shape[i]["func"] = "ell" Then
shape[i]["obj"] = Shapes.AddEllipse(shape[i]["width"]*s, shape[i]["height"]*s)
ElseIf shape[i]["func"] = "tri" Then
shape[i]["obj"] = Shapes.AddTriangle(shape[i]["x1"]*s, shape[i]["y1"]*s, shape[i]["x2"]*s, shape[i]["y2"]*s, shape[i]["x3"]*s, shape[i]["y3"]*s)
ElseIf shape[i]["func"] = "line" Then
shape[i]["obj"] = Shapes.AddLine(shape[i]["x1"]*s, shape[i]["y1"]*s, shape[i]["x2"]*s, shape[i]["y2"]*s)
EndIf
Shapes.Move(shape[i]["obj"], shX + shape[i]["x"]*s, shY + shape[i]["y"]*s)
Shapes.Rotate(shape[i]["obj"], shape[i]["angle"])
EndFor
EndSub
Sub Crab_enter
cdx=shx+shape[3]["x"]-shape[21]["x"]+shape[3]["width"]/2
cdY=shy+shape[3]["y"]-shape[21]["height"]*s+12
For k=start To end
Shapes.Move(shape[k]["obj"],Shapes.GetLeft(shape[k]["obj"])+cdx,Shapes.Gettop(shape[k]["obj"])+cdy)
EndFor
EndSub