mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-10-30 02:26:58 +00:00
33 lines
1.5 KiB
QBasic
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
|