initial cammit
[qbasicapps.git] / graphics / presentations / KHK j6ulud / khkdemo2.bas
1 DECLARE SUB playsound (a$)\r
2 DECLARE SUB start ()\r
3 DECLARE SUB turnoff ()\r
4 DECLARE SUB dispimg (a$)\r
5 DECLARE SUB turnon ()\r
6 DECLARE SUB ellips (x!, y!, s!, v!, t!)\r
7 DECLARE SUB prn (x!, y!, msg$, siz!, col1!)\r
8 DECLARE SUB timerAdd (element!, time!, value!)\r
9 DECLARE SUB timerdisp ()\r
10 DECLARE SUB timerinit ()\r
11 DECLARE SUB timerprocess ()\r
12 DECLARE SUB mo (x!, y!, an!, s!, w!)\r
13 DIM SHARED depth\r
14 DIM SHARED pi\r
15 \r
16 DIM SHARED sh1, sh2, sv1, sv2, hp, vp\r
17 DIM SHARED timerTime(0 TO 50, 0 TO 100)\r
18 DIM SHARED timerValue(0 TO 50, 0 TO 100)\r
19 \r
20 DIM SHARED timerCplace(0 TO 50)\r
21 DIM SHARED timerCtime(0 TO 50)\r
22 DIM SHARED timerCvalue(0 TO 50)\r
23 DIM SHARED timerLast\r
24 \r
25 \r
26 pi = 3.14128\r
27 \r
28 playsound "luule.mp3"\r
29 SCREEN 13\r
30 start\r
31 \r
32 timerinit\r
33 2\r
34 \r
35 \r
36 timerprocess\r
37 IF timerCtime(0) > 0 THEN\r
38   IF im1 = 0 THEN\r
39     dispimg "pikk.i01"\r
40     im1 = 1\r
41   END IF\r
42 END IF\r
43 \r
44 \r
45 \r
46 IF timerCtime(0) > 1.5 THEN\r
47   IF im2 = 0 THEN\r
48     dispimg "pikk4.i01"\r
49     im2 = 1\r
50   END IF\r
51 END IF\r
52 \r
53 \r
54 IF timerCtime(0) > 9 THEN\r
55   IF im3 = 0 THEN\r
56     dispimg "pikk3.i01"\r
57     im3 = 1\r
58   END IF\r
59 END IF\r
60 \r
61 IF timerCtime(0) > 17 THEN\r
62   IF im4 = 0 THEN\r
63     dispimg "pikk2.i01"\r
64     im4 = 1\r
65   END IF\r
66 END IF\r
67 \r
68 IF timerCtime(0) > 24 THEN\r
69   IF im5 = 0 THEN\r
70     dispimg "pikk1.i01"\r
71     im5 = 1\r
72   END IF\r
73 END IF\r
74 \r
75 IF timerCtime(0) > 33 THEN\r
76   IF im6 = 0 THEN\r
77     dispimg "pikk5.i01"\r
78     im6 = 1\r
79   END IF\r
80 END IF\r
81 \r
82 IF timerCtime(0) > 41 THEN\r
83   IF im7 = 0 THEN\r
84     dispimg "pikk.i01"\r
85     im7 = 1\r
86   END IF\r
87 END IF\r
88 \r
89 \r
90 IF timerCtime(0) > 43 THEN\r
91   turnoff\r
92 END IF\r
93 \r
94 'LOCATE 1, 1\r
95 'PRINT timerCtime(0)\r
96 GOTO 2\r
97 SYSTEM\r
98 \r
99 SUB dispimg (a$)\r
100 \r
101 \r
102 OPEN a$ FOR INPUT AS #1\r
103 INPUT #1, xs\r
104 INPUT #1, ys\r
105 \r
106 FOR y = 1 TO ys\r
107 FOR x = 1 TO xs\r
108 INPUT #1, a\r
109 PSET (x - 1, 200 - y), a\r
110 NEXT x\r
111 NEXT y\r
112 \r
113 \r
114 CLOSE #1\r
115 END SUB\r
116 \r
117 SUB ellips (x, y, s, v, t)\r
118 \r
119 IF x > 0 THEN\r
120 IF y > 0 THEN\r
121 \r
122 CIRCLE (x, y), s, v, , , t\r
123 PAINT (x, y), v\r
124 \r
125 END IF\r
126 END IF\r
127 \r
128 END SUB\r
129 \r
130 SUB playsound (a$)\r
131 \r
132 SHELL "c:\progra~1\winamp\winamp.exe " + a$\r
133 SCREEN 0\r
134 SCREEN 7, , , 1\r
135 \r
136 END SUB\r
137 \r
138 SUB prn (x, y, msg$, siz, col1)\r
139 IF x < 0 THEN GOTO prn1\r
140 IF x > 319 THEN GOTO prn1\r
141 \r
142 DIM bck(10000)\r
143 \r
144 GET (0, 0)-(100, 7), bck\r
145 LOCATE 1, 1\r
146 PRINT msg$\r
147 \r
148 col = col1\r
149 \r
150 FOR x1 = 0 TO LEN(msg$) * 8 - 1\r
151 FOR y1 = 0 TO 7\r
152   IF POINT(x1, y1) > 0 THEN\r
153     rx = x1 * siz + x\r
154     ry = y1 * siz + y\r
155     IF col1 > 100 THEN col = RND * 4 + 10\r
156     IF col1 > 200 THEN\r
157       LINE (rx, ry)-(rx + siz - 1, ry + siz - 1), col, B\r
158     ELSE\r
159       LINE (rx, ry)-(rx + siz - 1, ry + siz - 1), col, BF\r
160     END IF\r
161 '      LINE (rx, ry)-(rx + siz - 1, ry + siz - 1), col, BF\r
162   END IF\r
163 NEXT y1\r
164 NEXT x1\r
165 \r
166 \r
167 PUT (0, 0), bck, PSET\r
168 prn1:\r
169 END SUB\r
170 \r
171 SUB start\r
172 c = 0\r
173 FOR r = 0 TO 5\r
174 FOR g = 0 TO 5\r
175 FOR B = 0 TO 5\r
176 OUT &H3C8, c\r
177 c = c + 1\r
178 OUT &H3C9, r * 12\r
179 OUT &H3C9, g * 12\r
180 OUT &H3C9, B * 12\r
181 NEXT B\r
182 NEXT g\r
183 NEXT r\r
184 \r
185 END SUB\r
186 \r
187 SUB timerAdd (element, time, value)\r
188 \r
189 FOR a = 0 TO 100\r
190   IF (timerTime(element, a) = 0) AND (timerValue(element, a) = 0) THEN GOTO timer3\r
191 NEXT a\r
192 timer3:\r
193 \r
194 timerTime(element, a) = time\r
195 timerValue(element, a) = value\r
196 \r
197 END SUB\r
198 \r
199 SUB timerdisp\r
200 LOCATE 1, 1\r
201 \r
202 FOR a = 0 TO 10\r
203   PRINT timerCplace(a), timerCtime(a), timerCvalue(a)\r
204 NEXT a\r
205 \r
206 END SUB\r
207 \r
208 SUB timerinit\r
209 timerLast = TIMER\r
210 \r
211 paus = 24\r
212 \r
213 ' stuff size\r
214 timerAdd 0, 0, 0\r
215 timerAdd 0, 1000, 1000\r
216 \r
217 END SUB\r
218 \r
219 SUB timerprocess\r
220 \r
221 timerCurrent = TIMER\r
222 timerDiff = timerCurrent - timerLast\r
223 timerLast = timerCurrent\r
224 \r
225 FOR a = 0 TO 50\r
226   ctim = timerCtime(a) + timerDiff\r
227   Cplace = timerCplace(a)\r
228 timer2:\r
229   IF timerTime(a, Cplace + 1) = -1 THEN\r
230     ctim = 0\r
231     Cplace = 0\r
232   END IF\r
233   IF timerTime(a, Cplace + 1) < ctim THEN\r
234     IF timerTime(a, Cplace + 1) = 0 THEN\r
235       timerCvalue(a) = timerValue(a, Cplace)\r
236       GOTO timer1:\r
237     END IF\r
238     Cplace = Cplace + 1\r
239     GOTO timer2\r
240   END IF\r
241 \r
242   v1 = timerValue(a, Cplace)\r
243   t1 = timerTime(a, Cplace)\r
244   v2 = timerValue(a, Cplace + 1)\r
245   t2 = timerTime(a, Cplace + 1)\r
246 \r
247   IF v1 = v2 THEN\r
248     timerCvalue(a) = v1\r
249   ELSE\r
250     Tdiff1 = t2 - t1\r
251     Tdiff2 = ctim - t1\r
252     Vdiff = v2 - v1\r
253     timerCvalue(a) = Tdiff2 / Tdiff1 * Vdiff + v1\r
254   END IF\r
255 timer1:\r
256   timerCplace(a) = Cplace\r
257   timerCtime(a) = ctim\r
258 NEXT a\r
259 \r
260 END SUB\r
261 \r
262 SUB turnoff\r
263 x = 160\r
264 \r
265 FOR y = 100 TO 1 STEP -1\r
266 \r
267   LINE (160 - x - 5, 90 - y - 5)-(160 + x + 5, 110 + y + 5), 0, B\r
268   LINE (160 - x - 3, 90 - y - 3)-(160 + x + 3, 110 + y + 3), 3, B\r
269   LINE (160 - x, 90 - y)-(160 + x, 110 + y), 15, B\r
270 \r
271   SOUND 0, .1\r
272 NEXT y\r
273 \r
274 \r
275 \r
276 FOR x = 160 TO 0 STEP -1\r
277  \r
278   LINE (160 - x - 5, 90 - 5)-(160 + x + 5, 110 + 5), 0, B\r
279   LINE (160 - x - 3, 90 - 3)-(160 + x + 3, 110 + 3), 1, B\r
280   LINE (160 - x, 90)-(160 + x, 110), 15, B\r
281   SOUND 0, .05\r
282 NEXT x\r
283 \r
284 playsound "silent.mp3"\r
285 SCREEN 10\r
286 SCREEN 13\r
287 CLS\r
288 1\r
289 a$ = INPUT$(1)\r
290 GOTO 1\r
291 \r
292 \r
293 END SUB\r
294 \r