1 rem diy_clock for mobilebasic 1.8.4
2 rem made by 不点:rem 2016年9月6日
3 rem QQ:1039022875
6 H=SCREENHEIGHT(0):W=SCREENWIDTH(0)
7 MR=0:MZ=0:FZ=0:XZ=0
8 IF H>W THEN MR=W
9 IF H<W THEN MR=H
10 R=MR/2:PI=3.14:HPR=R/100
11 GH=sqr(3)/2
12 MZ=R*0.8:FZ=R*0.62:XZ=R*0.45
15 CLS
16
18 REM CLOCK START
19 GOTO 166
22
23 SETCOLOR 0,0,0
24 FILLARC 0.15*R,0.15*R,1.75*R,1.75*R,0,360
25 REM PARDON ME,SO STRANGE GRAMMAR,THIS SOFT NOT PERFECT IN DRAW ARC
26
27
28 REM UPDATE SECOND HAND
29 SETCOLOR 255,0,0
30 DRAWLINE R,R,SR1,SR2
31
32 REM UPDATE MINUTE HAND
33 SETCOLOR 0,0,255
34 DRAWLINE R,R,QR1,QR2
35
36 REM UPDATE HOUR HAND
37 SETCOLOR 255,255,0
38 DRAWLINE R,R,WR1,WR2
39 sleep 150
40
41 GOTO 50
42
47
48 REM FUNCTION SS MAKE THE NUMBER OF SECONDS TO REDUCE
49
50 d%=days(0):m%=milliseconds(0)
51 SS%=second(d%,m%):II%=minute(d%,m%):HH%=hour(d%,m%)
52 REM CATCH SECONDS
53 SS%=60-SS%
54
55 IF SS%>0 AND SS%<=15 THEN GOTO 60
56 IF SS%>15 AND SS%<=30 THEN GOTO 67
57 IF SS%>30 AND SS%<=45 THEN GOTO 74
58 IF SS%>45 AND SS%<=60 THEN GOTO 81
59
60 a%=1
61 b%=-1
62 d=(PI/30)*ss%
63 SR1=(R+a%*mz*sin(d))
64 SR2=(R+b%*mz*cos(d))
65 GOTO 90
66
67 a%=1
68 b%=1
69 e=(PI/30)*(ss%-15)
70 SR1=(R+a%*mz*cos(e))
71 SR2=(R+b%*mz*sin(e))
72 GOTO 90
73
74 a%=-1
75 b%=1
76 f=(PI/30)*(ss%-30)
77 SR1=(R+a%*mz*sin(f))
78 SR2=(R+b%*mz*cos(f))
79 GOTO 90
80
81 a%=-1
82 b%=-1
83 g=(PI/30)*(ss%-45)
84 SR1=(R+a%*mz*cos(g))
85 SR2=(R+b%*mz*sin(g))
86 GOTO 90
87
88
89 REM CATCH MINUTES
90 REM THE BUG ABOUT DATA TYPE APPEAR UNDER YOUR EYES
91 IF II%>=0 AND II%<15 THEN GOTO 98
92 IF II%>=15 AND II%<30 THEN GOTO 106
93 IF II%>=30 AND II%<45 THEN GOTO 113
94 IF II%>=45 AND II%<=59 THEN GOTO 120
95 PRINT "SYSTEM ERROR"
96
97
98 a%=1
99 b%=-1
100 d=(PI/30)*II%
101 QR1=(R+a%*fz*sin(d))
102 QR2=(R+b%*fz*cos(d))
103 GOTO 128
105
106 a%=1
107 b%=1
108 e=(PI/30)*(II%-15)
109 QR1=(R+a%*fz*cos(e))
110 QR2=(R+b%*fz*sin(e))
111 GOTO 128
112
113 a%=-1
114 b%=1
115 f=(PI/30)*(II%-30)
116 QR1=(R+a%*fz*sin(f))
117 QR2=(R+b%*fz*cos(f))
118 GOTO 128
119
120 a%=-1
121 b%=-1
122 g=(PI/30)*(II%-45)
123 QR1=(R+a%*fz*cos(g))
124 QR2=(R+b%*fz*sin(g))
125 GOTO 128
126
127
128 REM CATCH HOURS
129
130 IF HH%>=12 THEN HH%=HH%-12
131
132 IF HH%>=0 AND HH%<3 THEN GOTO 137
133 IF HH%>=3 AND HH%<6 THEN GOTO 144
134 IF HH%>=6 AND HH%<9 THEN GOTO 151
135 IF HH%>=9 AND HH%<=11 THEN GOTO 158
136
137 a%=1
138 b%=-1
139 int%=(II%/12):d=(PI/6)*HH%+(PI/30)*int%
140 WR1=(R+a%*xz*sin(d))
141 WR2=(R+b%*xz*cos(d))
142 GOTO 23
143
144 a%=1
145 b%=1
146 int%=(II%/12):e=(PI/6)*(HH%-3)+(PI/30)*int%
147 WR1=(R+a%*xz*cos(e))
148 WR2=(R+b%*xz*sin(e))
149 GOTO 23
150
151 a%=-1
152 b%=1
153 int%=(II%/12):f=(PI/6)*(HH%-6)+(PI/30)*int%
154 WR1=(R+a%*xz*sin(f))
155 WR2=(R+b%*xz*cos(f))
156 GOTO 23
157
158 a%=-1
159 b%=-1
160 int%=(II%/12):g=(PI/6)*(HH%-9)+(PI/30)*int%
161 WR1=(R+a%*xz*cos(g))
162 WR2=(R+b%*xz*sin(g))
163 GOTO 23
164
165 REM DRAW THE SHAPE OF CLOCK
166 SETCOLOR 0,0,0
167 FILLRECT 0,0,W,H
168 SETCOLOR 0,255,0
169
170 REM DRAW THE TIME POINT IN A CLOCK
171 REM BECAUSE THE BUG FROM MOBILEBASIC SELF,I FIXED IT IN LINE 172 TO 183
172 FILLARC R,0,HPR,HPR,0,360:PLOT R,1
173 FILLARC 0,R,HPR,HPR,0,360:PLOT 1,R
174 FILLARC R,MR,HPR,HPR,0,360:PLOT R,(MR-1)
175 FILLARC MR,R,HPR,HPR,0,360:PLOT (MR-1),R
176 FILLARC 1.5*R,(1-GH)*R,HPR,HPR,0,360:PLOT 1.5*R,(1-GH)*R
177 FILLARC (1+GH)*R,0.5*R,HPR,HPR,0,360:PLOT (1+GH)*R,0.5*R
178 FILLARC (1+GH)*R,1.5*R,HPR,HPR,0,360:PLOT (1+GH)*R,1.5*R
179 FILLARC 0.5*R,(1-GH)*R,HPR,HPR,0,360:PLOT 0.5*R,(1-GH)*R
180 FILLARC 0.5*R,(1+GH)*R,HPR,HPR,0,360:PLOT 0.5*R,(1+GH)*R
181 FILLARC (1-GH)*R,1.5*R,HPR,HPR,0,360:PLOT (1-GH)*R,1.5*R
182 FILLARC (1-GH)*R,0.5*R,HPR,HPR,0,360:PLOT (1-GH)*R,0.5*R
183 FILLARC 1.5*R,(1+GH)*R,HPR,HPR,0,360:PLOT 1.5*R,(1+GH)*R
184 GOTO 50