Páginas

sábado, 25 de fevereiro de 2023

sábado, 25 de fevereiro de 2023

Type-in: Efeitos sonoros (1989)

Ao longo da sua existência, a revista portuguesa RS232 publicou inúmeros type-ins de pequenos programas e jogos. Apresentamos um desses type-ins, enviado por Fernando Preces para RS232 nº14, que demonstra alguns efeitos sonoros obtidos a partir da instrução SOUND. A listagem pode ser inserida no GW-BASIC original, e também no PC-BASIC, um interpretador moderno que emula o GW-BASIC e o BASICA.

Segue a listagem:

5 DEFINT A-Z
10 ' Programa demonstraçao dos Efeitos Sonoros
12 ' PLANETA MS-DOS: Type-in de Fernando Preces na RS232 #14
15 ' GWBASIC/BASICA
20 ' Menu de efeitos de som
25 Q = 2: a$ = "Prima uma tecla para terminar"
30 WHILE Q >= 1
35      CLS
40      PRINT "Efeitos sonoros": PRINT
45      COLOR 15, 0: PRINT "  C"; : COLOR 7, 0: PRINT "rescente"
50      COLOR 15, 0: PRINT "  D"; : COLOR 7, 0: PRINT "ecrescente"
55      COLOR 15, 0: PRINT "  B"; : COLOR 7, 0: PRINT "uzina"
60      COLOR 15, 0: PRINT "  S"; : COLOR 7, 0: PRINT "irene"
65      COLOR 15, 0: PRINT "  Q"; : COLOR 7, 0: PRINT "uit"
70      PRINT : PRINT "Select: ";
75      Q$ = INPUT$(1): Q = INSTR ("CDBSQcdbsq", Q$) ' Dá uma tecla válida
80      IF Q = 0 GOTO 75
85      CLS     ' Mostra a acçao baseada na tecla
90      ON Q GOSUB 100, 200, 300, 400, 500, 100, 200, 300, 400, 500
95 WEND
100 ' Crescente com dois sons decrementando o intervalo de tempo
105     HTONE = 32767: LTONE = 246
110     PRINT "Crescente . . ."
111     PRINT : PRINT a$
112     WHILE INKEY$ = ""
115         FOR COUNT = 60 TO 1 STEP -2
120             SOUND LTONE - COUNT / 2, COUNT / 20
125             SOUND HTONE, COUNT / 15
130         NEXT COUNT
131         FOR n = 1 to 5000: NEXT n
132     WEND
135 RETURN
200 ' Decrescente - de tom agudo para tom baixo
205     HTONE = 2000: LTONE = 550: DELAY = 500
210     PRINT "Decrescente . . ."
211     PRINT: PRINT a$
212     WHILE INKEY$ = ""
215         FOR COUNT = HTONE TO LTONE STEP -10
220             SOUND COUNT, DELAY / COUNT
225         NEXT COUNT
226         FOR n = 1 to 5000: NEXT n
227     WEND
230 RETURN
300 ' Buzina - dois sons alternados até tecla premida
305     HTONE = 987: LTONE = 329
310     PRINT "Buzinando . . ."
315     PRINT: PRINT a$
320     WHILE INKEY$ = ""
325         SOUND HTONE, 5: SOUND LTONE, 5
330     WEND
335 RETURN
400 ' Sirene - dois sons até tecla premida
405     HTONE = 780: RANGE = 650
410     PRINT "Sirenando . . ."
415     PRINT: PRINT a$
420     WHILE INKEY$ = ""
425         FOR COUNT = RANGE TO -RANGE STEP -4
430             SOUND HTONE - ABS(COUNT), .3
435             COUNT = COUNT - 2 / RANGE
440         NEXT COUNT
445     WEND
450 RETURN
500 ' Terminar
505 END