36 lines
1.5 KiB
QBasic
36 lines
1.5 KiB
QBasic
10 GOSUB 9000
|
|
100 G=50:T=1:GOSUB 500
|
|
110 PRINT CHR$(147):PRINT "ORBIT LAB GRAVITY";G;" 1/2/3"
|
|
120 PRINT "T=TRAIL SPACE=PAUSE R=RESET Q=QUIT"
|
|
130 IF T=1 THEN 140
|
|
135 O=1024+INT(12+Y)*40+INT(20+X):IF O>=1024 AND O<2024 THEN POKE O,32
|
|
140 R=SQR(X*X+Y*Y):IF R<2 OR R>19 THEN GOSUB 500:GOTO 130
|
|
150 AX=-G*X/(R*R*R):AY=-G*Y/(R*R*R)
|
|
160 VX=VX+AX*.08:VY=VY+AY*.08:X=X+VX*.08:Y=Y+VY*.08
|
|
170 POKE 1024+12*40+20,42:POKE 55296+12*40+20,7
|
|
180 P=1024+INT(12+Y)*40+INT(20+X)
|
|
190 IF P>=1024 AND P<2024 THEN POKE P,81:POKE P+54272,3
|
|
200 GET A$:IF A$="1" THEN G=35
|
|
210 IF A$="2" THEN G=50
|
|
220 IF A$="3" THEN G=70
|
|
230 IF A$="T" THEN T=1-T
|
|
250 IF A$="R" THEN GOSUB 500
|
|
260 IF A$=" " THEN GOSUB 600
|
|
270 IF A$<>"Q" THEN 130
|
|
280 GOTO 9900
|
|
500 X=12:Y=0:VX=0:VY=2.05:RETURN
|
|
600 GET A$:IF A$="" THEN 600
|
|
610 IF A$="Q" THEN 9900
|
|
620 RETURN
|
|
9000 POKE 53280,0:POKE 53281,0:PRINT CHR$(147);CHR$(154)
|
|
9010 PRINT:PRINT:PRINT " ORBIT LAB":PRINT
|
|
9020 PRINT CHR$(5);" WATCH VELOCITY BEND AROUND GRAVITY":PRINT:PRINT
|
|
9030 PRINT CHR$(153);" CONTROLS":PRINT
|
|
9040 PRINT CHR$(158);" 1-3";CHR$(5);" GRAVITY ";CHR$(158);"T";CHR$(5);" TRAIL ";CHR$(158);"R";CHR$(5);" RESET"
|
|
9050 PRINT " ";CHR$(158);"SPACE";CHR$(5);" PAUSE ";CHR$(158);"Q";CHR$(5);" QUIT":PRINT:PRINT
|
|
9060 PRINT " HTTPS://C64.P20.DEV":PRINT
|
|
9070 PRINT CHR$(152);" RELEASED 22 OCTOBER 2026":PRINT:PRINT
|
|
9080 PRINT CHR$(158);" PRESS SPACE TO START"
|
|
9090 GET A$:IF A$<>" " THEN 9090
|
|
9100 RETURN
|
|
9900 POKE 53280,14:POKE 53281,6:PRINT CHR$(147):END
|