| Original Message |
Unseen Machine (no login) Posted Jun 22, 2011 7:30 AM
I would never be able to do graphics like that using the built in stuff, I am far to spoiled with QB64 and it's _LOADIMAGE capabilites.
Hope you don't mind but i tweaked the code a bit (I can't resit it) I just changed the thunder soundfile loading and playback to an array to eliminate the need for the SELECT CASE.
John
CHDIR "Other Peoples Demos\Thunderstorm\"
TYPE DropType
x AS INTEGER
y AS INTEGER
Speed AS INTEGER
Colr AS INTEGER
Length AS INTEGER
END TYPE
DIM Rain(1 TO 120) AS DropType
CONST Blue = 65536
CONST Tin = 131329
CONST Shadows = 65536 + 256
Rain& = _SNDOPEN("RainBk.ogg", "SYNC")
DIM T(1 TO 8) AS LONG
FOR i% = 1 TO 8
T(1) = _SNDOPEN("Thunder" + LTRIM$(STR$(i%)) + ".ogg", "SYNC")
NEXT
DEFINT A-Z
SCREEN 12
'_FULLSCREEN
PALETTE 0, 65536 * 8
PALETTE 1, 0
PALETTE 2, 0
PALETTE 3, 256
PALETTE 4, 131586
PALETTE 6, 728123
PALETTE 8, 657155
PALETTE 9, 131586
PALETTE 10, 0
LINE (0, 350)-(639, 374), 3, BF
LINE (36, 300)-(110, 330), 9, BF
FOR x = 36 TO 106 STEP 10
LINE (x, 300)-(x, 330), 10
NEXT x
LINE (100, 260)-(260, 320), 9, BF
FOR x = 100 TO 260 STEP 10
LINE (x, 260)-(x, 320), 10
NEXT x
LINE (40, 330)-(110, 400), 1, BF
LINE (0, 380)-(639, 479), 1, BF
FOR x = 110 TO 250 STEP 35
LINE (x, 240)-(x, 260), 9
LINE (x - 1, 245)-(x + 1, 248), 9, BF
NEXT x
LINE (110, 321)-(250, 400), 1, BF
LINE (250, 330)-(280, 340), 1
LINE (250, 338)-(280, 348), 1
LINE (280, 340)-(280, 348), 1
PAINT (278, 342), 1
LINE (250, 330)-(280, 340), 9
LINE (274, 344)-(276, 400), 1, BF
LINE (181, 340)-(187, 354), 6, BF
LINE (189, 340)-(195, 354), 6, BF
LINE (181, 357)-(195, 360), 6, BF
CIRCLE (700, 470), 400, 0, , , .06
PAINT (639, 479), 0
FOR x = 400 TO 600 STEP 36
nn = nn + 1
LINE (x + nn ^ 2, 374 - nn * 8)-(x + nn ^ 2 + nn, 400), 1, BF
NEXT x
nn = 0
FOR n = 1 TO 120
SELECT CASE n
CASE IS < 40
Rain(n).Speed = 16
Rain(n).Colr = 9
Rain(n).Length = 16
CASE 40 TO 80
Rain(n).Speed = 32
Rain(n).Colr = 8
Rain(n).Length = 32
CASE 81 TO 120
Rain(n).Speed = 48
Rain(n).Colr = 8
Rain(n).Length = 48
END SELECT
NEXT n
FOR n = 1 TO 120
Rain(n).x = FIX(RND * 800) - 160
Rain(n).y = FIX(RND * 479)
NEXT n
RANDOMIZE TIMER
_SNDLOOP Rain&
TPlay = 1
DO
_LIMIT 60
FOR n = 1 TO 120
LINE (Rain(n).x, Rain(n).y)-(Rain(n).x, Rain(n).y + Rain(n).Length), 0
GOSUB RainDrop
LINE (Rain(n).x, Rain(n).y)-(Rain(n).x, Rain(n).y + Rain(n).Length), 8
NEXT n
Lightning = Lightning + 1
IF (Lightning > Flash) AND (Lightning < Flash + 10) THEN
IF TPlay = 0 THEN
NumOGG = FIX(RND * 8) + 1
_SNDPLAY T(NumOGG)
TPlay = 1
END IF
IF Hue < 10 THEN
Hue = Hue + 5
ELSE
Hue = 0
END IF
PALETTE 0, 65536 * 8 + (Blue * Hue)
PALETTE 8, 657155 + (Hue * 196865)
PALETTE 9, 131586 + (Tin * Hue)
PALETTE 10, Shadows * Hue
LINE (36, 300)-(110, 330), 9, BF
LINE (100, 260)-(260, 320), 9, BF
ELSE
Back = Back + 1
IF Back MOD 3 THEN
LINE (0, 350)-(639, 374), 3, BF
LINE (36, 300)-(110, 330), 9, BF
FOR x = 36 TO 106 STEP 10
LINE (x, 300)-(x, 330), 10
NEXT x
LINE (100, 260)-(260, 320), 9, BF
FOR x = 100 TO 260 STEP 10
LINE (x, 260)-(x, 320), 10
NEXT x
LINE (40, 330)-(110, 400), 1, BF
LINE (0, 380)-(639, 479), 1, BF
FOR x = 110 TO 250 STEP 35
LINE (x, 240)-(x, 260), 9
LINE (x - 1, 245)-(x + 1, 248), 9, BF
NEXT x
LINE (110, 321)-(250, 400), 1, BF
FOR y = 330 TO 340
LINE (250, y)-(280, y + 10), 1
NEXT y
'LINE (250, 330)-(280, 340), 1
'LINE (250, 338)-(280, 348), 1
'LINE (280, 340)-(280, 348), 1
'PAINT (278, 342), 1
LINE (250, 330)-(280, 340), 9
LINE (274, 344)-(276, 400), 1, BF
LINE (181, 340)-(187, 354), 6, BF
LINE (189, 340)-(195, 354), 6, BF
LINE (181, 357)-(195, 360), 6, BF
CIRCLE (700, 470), 400, 0, , , .06
PAINT (639, 479), 0
FOR x = 400 TO 600 STEP 36
nn = nn + 1
LINE (x + nn ^ 2, 374 - nn * 8)-(x + nn ^ 2 + nn, 400), 1, BF
NEXT x
nn = 0
END IF
END IF
IF Lightning > Flash + 10 THEN
Lightning = 0
Flash = FIX(RND * 1000)
TPlay = 0
END IF
IF POINT(SplunkX, SplunkY + 6) = 8 THEN CIRCLE (SplunkX, SplunkY), 6, 0, , , .45
SplunkX = FIX(RND * 360) + 280
SplunkY = FIX(RND * 20) + 459
IF POINT(SplunkX, SplunkY + 6) = 0 THEN CIRCLE (SplunkX, SplunkY), 6, 8, , , .45
LINE (0, 420)-(639, 440), 4, BF
LINE (0, 420)-(639, 421), 9, BF
FOR x = 15 TO 615 STEP 40
LINE (x, 430)-(x + 8, 479), 4, BF
NEXT x
LINE (520, 0)-(560, 479), 4, BF
FOR Reps = 1 TO 3
WAIT &H3DA, 8
WAIT &H3DA, 8, 8
NEXT Reps
_DISPLAY
LOOP UNTIL INKEY$ <> ""
SYSTEM
'------------------------SUBROUTINE SECTION BEGINS----------------------------
RainDrop:
IF Rain(n).y < 440 THEN
Rain(n).y = Rain(n).y + Rain(n).Speed
Rain(n).x = Rain(n).x + 2
ELSE
Rain(n).x = FIX(RND * 800) - 160
Rain(n).y = FIX(RND * 25) - 25
END IF
RETURN
|
|