28651190dc6cde2379803bf11cc3d050bbba2fcc
[qbasicapps.git] / graphics / animations / water2.bas
1 ' Wave simulation\r
2 ' made by Svjatoslav Agejenko\r
3 ' in 2003.12\r
4 ' H-Page: svjatoslav.eu\r
5 ' E-Mail: svjatoslavagejenko@gmail.com\r
6  \r
7 SCREEN 13\r
8 \r
9 DIM SHARED yh(1 TO 300)\r
10 DIM SHARED yhs(1 TO 300)\r
11 \r
12 \r
13 FOR x = 1 TO 300\r
14 yhs(x) = 0\r
15 yh(x) = 50\r
16 NEXT x\r
17 \r
18 \r
19 \r
20 1\r
21 \r
22 CLS\r
23 FOR x = 1 TO 300\r
24 '  LINE (x, 0)-(x, 200 - yh(x)), 0\r
25 '  LINE (x, 200 - yh(x))-(x, 200), 15\r
26   PSET (x, 200 - yh(x)), 31\r
27 NEXT x\r
28 \r
29 \r
30 FOR x = 10 TO 290\r
31   hk = (yh(x - 1) + yh(x + 1) + yh(x + 2) + yh(x - 2)) / 4\r
32   yhs(x) = yhs(x) + (hk - yh(x)) / 5\r
33   yhs(x) = yhs(x) / 1.01\r
34 NEXT x\r
35 \r
36 FOR x = 10 TO 290\r
37   yh(x) = yh(x) + yhs(x)\r
38 '  yh(x - 1) = yh(x - 1) + yhs(x) / 2\r
39 '  yh(x + 1) = yh(x + 1) + yhs(x) / 2\r
40 'SOUND 0, .05\r
41 NEXT x\r
42 \r
43 'FOR x = 10 TO 290\r
44 '  yh(x) = (yh(x) * 100 + yh(x + 1) + yh(x - 1)) / 102\r
45 'NEXT x\r
46 \r
47 IF RND * 100 < 2 THEN\r
48   p = RND * 200\r
49   s = RND * 10 + 2\r
50   FOR x = 0 TO 3.14 STEP 3.14 / s\r
51      yh(p) = yh(p) + SIN(x) * s * 3\r
52      p = p + 1\r
53   NEXT x\r
54 END IF\r
55 \r
56 IF INKEY$ <> "" THEN SYSTEM\r
57 GOTO 1\r
58 \r
59 \r