refactored code for better readability
[qbasicapps.git] / simulation / liquid.bas
1 ' Rounds up sharp edges\r
2 ' made by Svjatoslav Agejenko\r
3 ' in 2003.12\r
4 ' homepage: svjatoslav.eu\r
5 ' email:    svjatoslav@svjatoslav.eu\r
6  \r
7 DEFINT A-Z\r
8 WIDTH 80, 50\r
9 VIEW PRINT 1 TO 50\r
10 RANDOMIZE TIMER\r
11 CLS\r
12 DIM SHARED buf1(1 TO 80, 1 TO 50)\r
13 DIM SHARED buf2(1 TO 80, 1 TO 50)\r
14 \r
15 FOR y = 1 TO 50\r
16     FOR x = 1 TO 80\r
17         buf1(x, y) = INT(RND * 2)\r
18     NEXT x\r
19 NEXT y\r
20 \r
21 1\r
22 FOR y = 2 TO 49\r
23     FOR x = 2 TO 79\r
24         c = buf1(x - 1, y - 1)\r
25         c = c + buf1(x, y - 1)\r
26         c = c + buf1(x + 1, y - 1)\r
27         c = c + buf1(x - 1, y)\r
28         c = c + buf1(x + 1, y)\r
29         c = c + buf1(x - 1, y + 1)\r
30         c = c + buf1(x, y + 1)\r
31         c = c + buf1(x + 1, y + 1)\r
32         IF buf1(x, y) = 1 THEN\r
33             IF c > 3 THEN buf2(x, y) = 1 ELSE buf2(x, y) = 0\r
34         ELSE\r
35             IF c > 4 THEN buf2(x, y) = 1 ELSE buf2(x, y) = 0\r
36         END IF\r
37     NEXT x\r
38 NEXT y\r
39 \r
40 FOR y = 1 TO 50\r
41     FOR x = 1 TO 80\r
42         b = buf2(x, y)\r
43         buf1(x, y) = b\r
44         LOCATE y, x\r
45         IF b = 0 THEN PRINT "."; ELSE PRINT "#"\r
46     NEXT x\r
47 NEXT y\r
48 SOUND 0, 3\r
49 GOTO 1\r
50 \r