Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SCREEN 13
- DIM SHARED wp(320) AS SINGLE
- DIM SHARED wn(320) AS SINGLE
- DIM SHARED bt(320) AS INTEGER
- ' Empty
- FOR i = 0 TO 319: wp(i) = 0: NEXT
- Atmo
- DO
- k$ = INKEY$
- ' Water effect
- IF k$ = " " OR id > nx THEN
- FOR i = 0 TO 4
- x = INT(RND * 320)
- wp(x) = wp(x) - 8 * RND
- NEXT
- id = 0
- nx = INT(RND * 25 + 15)
- END IF
- ' Redraw
- Update
- ' Time effect
- id = id + 1
- LOOP UNTIL k$ = CHR$(27)
- SUB Atmo
- RANDOMIZE TIMER
- LINE (0, 0)-(320, 100), 1, BF
- CIRCLE (300, 20), 13, 14: PAINT (300, 20), 14
- ' Beach level
- FOR x = 0 TO 320: bt(x) = 200: NEXT
- ' Draw simple beach
- FOR x = 0 TO 128
- h = INT(x ^ 2 / 128)
- s = 150 + h
- bt(x) = s
- FOR y = s TO 199
- l = y - 149
- IF RND > l / 75 THEN cl = 14 ELSE cl = 6
- PSET (x, y), cl
- NEXT
- NEXT
- END SUB
- SUB Update
- omega = .995
- relax = .995
- FOR i = 0 TO 319
- IF i = 0 THEN a = wn(1) ELSE a = wn(i - 1)
- IF i = 319 THEN b = wn(318) ELSE b = wn(i + 1)
- laplas = (a + b) / 2
- ' Difference between previous (wn) and current (wp) level
- wp(i) = laplas + omega * (wn(i) - wp(i))
- ' Relax
- wp(i) = wp(i) * relax
- NEXT
- ' Line level
- WU = 100
- WL = 170
- ' Swap fields
- FOR i = 0 TO 319
- SWAP wp(i), wn(i)
- lv = WL - INT(wn(i))
- ' Draw
- IF lv <= bt(i) THEN
- LINE (i, WU)-(i, lv - 2), 1 ' Sky
- LINE (i, lv)-(i, bt(i)), 3 ' Water
- ' Lighting
- nx = wn(i + 1) - wn(i)
- IF nx < 0 THEN cl = 15 ELSE cl = 11
- PSET (i, lv - 1), cl
- ELSE
- LINE (i, WU)-(i, bt(i)), 1' Sky
- END IF
- NEXT
- END SUB
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement