566570779d37c82bff63ddddcb40b2f30c5bdb60
[qbasicapps.git] / graphics / animations / snow.bas
1 ' Svjatoslav Agejenko 2003.04\r
2 \r
3 DEFINT A-Z\r
4 DECLARE SUB fall (a)\r
5 DECLARE SUB start ()\r
6 \r
7 amo = 500\r
8 \r
9 DIM SHARED fx(1 TO amo)\r
10 DIM SHARED fy(1 TO amo)\r
11 \r
12 FOR a = 1 TO amo\r
13 fx(a) = RND * 300 + 10\r
14 fy(a) = RND * 100 + 10\r
15 NEXT a\r
16 \r
17 start\r
18 \r
19 1\r
20 FOR b = 1 TO 100\r
21 a = INT(RND * amo) + 1\r
22 fall a\r
23 NEXT b\r
24 SOUND 0, .1\r
25 IF INKEY$ <> "" THEN SYSTEM\r
26 GOTO 1\r
27 \r
28 SUB fall (a)\r
29 \r
30 t = 0\r
31 2\r
32 PSET (fx(a), fy(a)), 0\r
33 \r
34 ny = fy(a) + 1\r
35 nx = fx(a) + INT(RND * 3) - 1\r
36 IF POINT(nx, ny) > 0 THEN\r
37   IF t < 10 THEN t = t + 1: GOTO 2\r
38   PSET (fx(a), fy(a)), 15\r
39   nx = RND * 300 + 10\r
40   ny = 1\r
41 END IF\r
42 \r
43 IF fy(a) > 198 THEN\r
44   PSET (fx(a), fy(a)), 15\r
45   nx = RND * 300 + 10\r
46   ny = 1\r
47 END IF\r
48 \r
49 fx(a) = nx\r
50 fy(a) = ny\r
51 PSET (fx(a), fy(a)), 15\r
52 END SUB\r
53 \r
54 DEFSNG A-Z\r
55 SUB start\r
56 SCREEN 13\r
57 \r
58 LOCATE 1, 1\r
59 PRINT "SNOW"\r
60 \r
61 FOR y = 0 TO 15 STEP .2\r
62   xp = SIN(y / 1) * 3 + 65\r
63   FOR x = 0 TO 30 STEP .1\r
64     ys = 4 + COS(x / 5)\r
65     yp = COS(x / 4 + 3) * 5 + 130\r
66     c = POINT(x, y)\r
67     IF c > 0 THEN\r
68     LINE (x * 6 + xp, y * ys + yp)-(x * 6 + xp + 1, y * ys + yp + 1), 11, BF\r
69     END IF\r
70   NEXT x\r
71 NEXT y\r
72 \r
73 LOCATE 1, 1\r
74 PRINT "      "\r
75 \r
76 END SUB\r
77 \r