77 lines
2.0 KiB
QBasic
77 lines
2.0 KiB
QBasic
DEFINT A-Z
|
|
' QB2 Version of Sound Effects Demo Program
|
|
' (works under most other BASIC compilers)
|
|
|
|
' Sound effects menu
|
|
WHILE Q$ <> "Q"
|
|
CLS
|
|
PRINT "Sound effects": PRINT
|
|
COLOR 15, 0: PRINT " B"; : COLOR 7, 0: PRINT "ouncing"
|
|
COLOR 15, 0: PRINT " F"; : COLOR 7, 0: PRINT "alling"
|
|
COLOR 15, 0: PRINT " K"; : COLOR 7, 0: PRINT "laxon"
|
|
COLOR 15, 0: PRINT " S"; : COLOR 7, 0: PRINT "iren"
|
|
COLOR 15, 0: PRINT " Q"; : COLOR 7, 0: PRINT "uit"
|
|
PRINT : PRINT "Select: ";
|
|
|
|
' Get valid key
|
|
Q$ = " "
|
|
WHILE INSTR("BFKSQbfksq", Q$) = 0
|
|
Q$ = INPUT$(1)
|
|
WEND
|
|
|
|
' Take action based on key
|
|
CLS
|
|
IF Q$ = "B" OR Q$ = "b" THEN
|
|
PRINT "Bouncing . . . "
|
|
CALL Bounce(32767, 246)
|
|
ELSEIF Q$ = "F" OR Q$ = "f" THEN
|
|
PRINT "Falling . . . "
|
|
CALL Fall(2000, 550, 500)
|
|
ELSEIF Q$ = "S" OR Q$ = "s" THEN
|
|
PRINT "Wailing . . ."
|
|
PRINT " . . . press any key to end."
|
|
CALL Siren(780, 650)
|
|
ELSEIF Q$ = "K" OR Q$ = "k" THEN
|
|
PRINT "Oscillating . . ."
|
|
PRINT " . . . press any key to end."
|
|
CALL Klaxon(987, 329)
|
|
ELSEIF Q$ = "q" THEN
|
|
Q$ = "Q"
|
|
END IF
|
|
WEND
|
|
END
|
|
|
|
' Loop two sounds down at decreasing time intervals
|
|
SUB Bounce (Hi, Low) STATIC
|
|
FOR Count = 60 TO 1 STEP -2
|
|
SOUND Low - Count / 2, Count / 20
|
|
SOUND Hi, Count / 15
|
|
NEXT
|
|
END SUB
|
|
|
|
' Loop down from a high sound to a low sound
|
|
SUB Fall (Hi, Low, Del) STATIC
|
|
FOR Count = Hi TO Low STEP -10
|
|
SOUND Count, Del / Count
|
|
NEXT
|
|
END SUB
|
|
|
|
' Alternate two sounds until a key is pressed
|
|
SUB Klaxon (Hi, Low) STATIC
|
|
WHILE INKEY$ = ""
|
|
SOUND Hi, 5
|
|
SOUND Low, 5
|
|
WEND
|
|
END SUB
|
|
|
|
' Loop a sound from low to high to low
|
|
SUB Siren (Hi, Rng) STATIC
|
|
WHILE INKEY$ = ""
|
|
FOR Count = Rng TO -Rng STEP -4
|
|
SOUND Hi - ABS(Count), .3
|
|
Count = Count - 2 / Rng
|
|
NEXT
|
|
WEND
|
|
END SUB
|
|
|