Respond to this messageReturn to Index
Original Message
  • Sweet,
    • 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
    Your Name
    Your Email
    (Optional)
    Message Title
    Message Text
    Image Services Photobucket.com
    Options Enable formatted text (Huh?)
    Also send responses to my email address