10 REM *** HAUKI BASIC V1.0 - JUPITER LANDER ***
20 SCREEN VGA_320x200
30 PALETTE VIC20
40
50 REM --- DEFINE ASSETS ---
60 DEF SPRITE 1, 8, 8, "00BBBB000B9999B0B999999B..." REM Cyan Ship Hex
70 DEF SPRITE 2, 8, 8, "0000000000EEEE0000CEEC00..." REM Flame Hex
80
90 REM --- INIT ENGINE VARIABLES ---
100 SCORE = 0
110 GRAVITY 15 REM Engine automatically applies this to Y velocity
120 THRUST = 40
130
140 REM --- LEVEL START ---
150 FUEL = 1000
160 X = 160000 : Y = 20000
170 VX = 0 : VY = 0
180 SEED TIMER
190 GENERATE MOONSCAPE, MULTIPAD 3, COLOR 14, PADCOLOR 13
200
210 REM --- MAIN GAME LOOP ---
220 CLS
230 DRAW MOONSCAPE
240
250 REM --- INPUT & PHYSICS ---
260 IF KEY("W") AND FUEL > 0 THEN VY = VY - THRUST : FUEL = FUEL - 1 : DRAW
SPRITE 2, X/1000-4, Y/1000+4
270 IF KEY("A") AND FUEL > 0 THEN VX = VX - (THRUST/2) : FUEL = FUEL - 1
280 IF KEY("D") AND FUEL > 0 THEN VX = VX + (THRUST/2) : FUEL = FUEL - 1
290
300 VY = VY + GRAVITY
310 X = X + VX
320 Y = Y + VY
330 WRAP X, 0, 320000 REM Instantly handles screen wrap math!
340
350 DRAW SPRITE 1, X/1000-4, Y/1000-4
360 PRINT 10, 10, "SCORE", SCORE, COLOR 10
370 PRINT 10, 20, "FUEL", FUEL, COLOR 14
380
390 REM --- COLLISIONS ---
400 HIT = COLLIDE(X/1000, Y/1000+3, MOONSCAPE)
410 IF HIT = 0 THEN GOTO 500
420 IF HIT = SAFE_PAD AND VY < 25000 THEN GOTO 600
430 GOTO 700
440
450 REM --- RENDER FRAME ---
460 500 VSYNC REM Swaps the backbuffer and pauses for 60FPS
470 GOTO 220 REM Loop back to start
480
490 REM --- WIN STATE ---
500 600 PRINT 100, 50, "PERFECT LANDING", COLOR 10
510 SCORE = SCORE + PAD_VALUE + FUEL
520 IF KEY("W") THEN GOTO 140 ELSE GOTO 620
530
540 REM --- LOSE STATE ---
550 700 PRINT 108, 50, "MISSION FAILED", COLOR 12
560 SCORE = 0
570 IF KEY("W") THEN GOTO 140 ELSE GOTO 720