dos33fsprogs/vaporlock/fireworks/fireworks.bas

33 lines
1.5 KiB
QBasic

100 REM Fireworks by FozzTexx, originally written in 1987
110 REM Constants: BT/RT is screen size, MG is margin
120 REM Variables:
130 REM XV/YV are velocity, PK is highest point of rocket
140 REM MS is max steps, CS is current step, X/Y/X1/Y1/X2/Y2 is rocket position
150 REM CL is Apple II hi-res color group
160 HGR:POKE 49234,0:REM Poke hides 4 line text area
170 BT = 191:RT = 280:MG = 24
180 CL = INT(RND(1) * 2):XV = INT(RND(1) * 3) + 1:YV = - (INT(RND(1) * 5) + 3)
190 MS = INT(RND(1) * 25) + 40:X = INT(RND(1) * (RT - MG * 2)) + MG
200 Y = BT:PK = Y:IF X > RT / 2 THEN XV = - XV
210 REM Draw rocket
220 FOR CS = 1 TO MS:Y1 = Y2:Y2 = Y:X1 = X2:X2 = X
230 X = X + XV:Y = Y + YV:YV = YV + .12
240 IF Y < PK THEN PK = Y
250 IF X < = MG OR X > = RT - MG OR Y < = MG OR (YV > 0 AND (Y > BT - INT(BT - PK) / 2 OR Y > = BT - MG)) THEN CS = MS
260 IF CS < MS THEN HCOLOR= CL * 4 + 3:HPLOT X2,Y2 TO X,Y
270 HCOLOR= CL * 4:HPLOT X1,Y1 TO X2,Y2:NEXT CS
280 REM Draw explosion near X2,Y2
290 X2 = INT(X2):Y2 = INT(Y2):X = INT(RND(1) * 20) - 10:Y = INT(RND(1) * 20) - 10
300 HCOLOR= CL * 4 + 3:HPLOT X + X2,Y + Y2
310 FOR I = 1 TO 9
320 IF I < 9 THEN N = I:HCOLOR= CL * 4 + 3:GOSUB 370
330 N = I - 1:HCOLOR= CL * 4:GOSUB 370
340 NEXT
350 IF RND(1) < .5 THEN 290
360 GOTO 180
370 HPLOT X + X2 + N,Y + Y2 + N:HPLOT X + X2 - N,Y + Y2 - N
380 HPLOT X + X2 + N,Y + Y2 - N:HPLOT X + X2 - N,Y + Y2 + N
390 HPLOT X + X2,Y + Y2 + N * 1.5:HPLOT X + X2 + N * 1.5,Y + Y2
400 HPLOT X + X2,Y + Y2 - N * 1.5:HPLOT X + X2 - N * 1.5,Y + Y2
410 RETURN