mirror of
https://github.com/tilleul/apple2.git
synced 2024-12-11 02:49:27 +00:00
148 lines
8.8 KiB
QBasic
148 lines
8.8 KiB
QBasic
0 GOTO 5000
|
|
|
|
100 IF (X > = 10 AND X < = 80) AND (Y > = 80 AND Y < = 100) THEN Z=1: GOTO 180
|
|
110 IF (X > = 60 AND X < = 100) AND (Y > = 100 AND Y < = 120) THEN Z=2: GOTO 180
|
|
120 IF (X > = 80 AND X < = 100) AND (Y > = 120 AND Y < = 158) THEN Z=3: GOTO 180
|
|
125 IF (X > = 100 AND X < = 140) AND (Y > = 140 AND Y < = 158) THEN Z=4: GOTO 180
|
|
130 IF (X > = 120 AND X < = 180) AND (Y > = 120 AND Y < = 140) THEN Z=5: GOTO 180
|
|
135 IF (X > = 160 AND X < = 220) AND (Y > = 140 AND Y < = 158) THEN Z=6: GOTO 180
|
|
137 IF (X > = 200 AND X < = 220) AND (Y > = 110 AND Y < = 140) THEN Z=7: GOTO 180
|
|
138 IF (X > = 220 AND X < = 265) AND (Y > = 110 AND Y < = 130) THEN Z=8: GOTO 180
|
|
139 IF (X > = 245 AND X < = 265) AND (Y > = 40 AND Y < = 110) THEN Z=9: GOTO 180
|
|
140 IF (X > = 215 AND X < = 245) AND (Y > = 40 AND Y < = 60) THEN Z=10: GOTO 180
|
|
141 IF (X > = 215 AND X < = 235) AND (Y > = 60 AND Y < = 100) THEN Z=11: GOTO 180
|
|
142 IF (X > = 180 AND X < = 235) AND (Y > = 80 AND Y < = 100) THEN Z=12: GOTO 180
|
|
145 IF (X > = 180 AND X < = 200) AND (Y > = 60 AND Y < = 100) THEN Z=13: GOTO 180
|
|
150 IF (X > = 140 AND X < = 180) AND (Y > = 60 AND Y < = 80) THEN Z=14: GOTO 180
|
|
160 IF (X > = 100 AND X < = 160) AND (Y > = 40 AND Y < = 60) THEN Z=15: GOTO 180
|
|
162 IF (X > = 106 AND X < = 114) AND (Y > = 66 AND Y < = 74) THEN 3000: REM BRANCH TO WIN
|
|
165 IF (X > = 100 AND X < = 120) AND (Y > = 60 AND Y < = 80) THEN Z=16: GOTO 180
|
|
170 GOTO 4000: REM BRANCH TO CRASH...NO FLAGS WERE SET TO INDICATE PRESENCE IN THE MAZE...THEREFORE MUST BE OUTSIDE.
|
|
180 IF J THEN 210
|
|
190 K=PEEK(H): IF K = 201 THEN VV=VV-1: POKE C,0: GOTO 242
|
|
195 IF K = 202 THEN HV=HV-1: POKE C,0: GOTO 242
|
|
200 IF K = 203 THEN VV=VV+1: POKE C,0: GOTO 242
|
|
205 IF K = 204 THEN HV=HV+1: POKE C,0: GOTO 242
|
|
206 GOTO 242
|
|
|
|
210 IF PDL (0) > = 165 THEN HV = HV + 1: REM IF HV> 1 THEN HV=1
|
|
220 IF PDL (0) < = 90 THEN HV = HV - 1: REM IF HV<-1 THEN HV=-1
|
|
230 IF PDL (1) > = 165 THEN VV = VV + 1: REM IF VV>1 THEN VV=1
|
|
|
|
231 IF E THEN 240
|
|
232 IF RND (1) < .05 THEN HV = HV + 1
|
|
233 IF RND (1) > .95 THEN VV = VV + 1
|
|
240 IF PDL (1) < = 90 THEN VV = VV - 1: REM IF VV<-1 THEN VV=-1
|
|
242 X = XO + HV:Y = YO + VV
|
|
|
|
243 TM = TM - 1: VTAB 21: HTAB 25: PRINT TM" "
|
|
245 HTAB 13: PRINT HV" ";: HTAB 38: PRINT VV" "
|
|
|
|
260 HCOLOR= 3: HPLOT X,Y
|
|
|
|
267 IF TM < = 0 THEN HOME: FLASH : PRINT TAB( 10)"OUT OF FUEL";: PRINT TAB( 10)" ": GOTO 4000
|
|
270 IF X = XO AND Y = YO THEN 300
|
|
|
|
|
|
280 HCOLOR= 0: HPLOT XO,YO: IF M THEN 300
|
|
285 POKE D,10: CALL S
|
|
300 XO = X:YO = Y: ON Z GOTO 100, 100, 110, 120, 125,130,135,137,138,139,140,141,142,145,150,160,165: GOTO 210
|
|
|
|
|
|
498 REM THE 500 SUBRTNE SETS UP THE MUSIC. M1=PITCH, M2=DURATION. 700 PLAYS IT.
|
|
499 REM *********** PLAY STAR WARS THEME **********
|
|
500 M1 = 230:M2 = 75: GOSUB 700:M1 = 126:M2 = 250: GOSUB 700:M1 = 170:M2 = 250: GOSUB 700:M1 = 190:M2 = 75: GOSUB 700
|
|
510 M1 = 203:M2 = 75: GOSUB 700:M1 = 230:M2 = 75: GOSUB 700:M1 = 126:M2 = 250: GOSUB 700:M1 = 170:M2 = 250: GOSUB 700
|
|
515 M1 = 190:M2 = 100: GOSUB 700:M1 = 203:M2 = 100: GOSUB 700:M1 = 190:M2 = 100: GOSUB 700:M1 = 230:M2 = 250: GOSUB 700: RETURN
|
|
700 POKE P,M1: POKE D,M2: CALL S: RETURN
|
|
|
|
|
|
|
|
|
|
1999 REM ******** DRAW MAZE **************
|
|
2000 HCOLOR= 3: HPLOT 0,0 TO 279,0 TO 279,159 TO 0,159 TO 0,0
|
|
2001 HPLOT 70,10 TO 60,10 TO 60,20 TO 70,20 TO 70,30 TO 60,30: HPLOT 75,30 TO 75,10 TO 85,10 TO 85,20 TO 75,20: HPLOT 90,30 TO 90,10 TO 100,10 TO 100,30: HPLOT 90,20 TO 100,20
|
|
2002 HPLOT 115,10 TO 105,10 TO 105,30 TO 115,30: HPLOT 130,10 TO 120,10 TO 120,30 TO 130,30: HPLOT 120,20 TO 125,20: HPLOT 140,30 TO 140,10 TO 146,20 TO 152,10 TO 152,30
|
|
2003 HPLOT 158,30 TO 158,10 TO 168,10 TO 168,30: HPLOT 158,20 TO 168,20: HPLOT 173,10 TO 183,10 TO 173,30 TO 183,30: HPLOT 198,10 TO 188,10 TO 188,30 TO 198,30: HPLOT 188,20 TO 193,20
|
|
2005 HPLOT 10,80 TO 80,80 TO 80,100 TO 100,100 TO 100,140 TO 120,140 TO 120,120 TO 180,120
|
|
2010 HPLOT 180,120 TO 180,140 TO 200,140 TO 200,110 TO 245,110 TO 245,60 TO 235,60 TO 235,100 TO 180,100 TO 180,80 TO 140,80 TO 140,60 TO 120,60 TO 120,80 TO 100,80
|
|
2015 HPLOT 100,80 TO 100,40 TO 160,40 TO 160,60 TO 200,60 TO 200,80 TO 215,80 TO 215,40 TO 265,40 TO 265,130 TO 220,130 TO 220,158 TO 160,158
|
|
2020 HPLOT 220,158 TO 160,158 TO 160,140 TO 140,140 TO 140,158 TO 80,158 TO 80,120 TO 60,120 TO 60,100 TO 10,100
|
|
2030 HCOLOR= 3: HPLOT 106,66 TO 114,66 TO 114,74 TO 106,74 TO 106,66
|
|
2033 HPLOT 108,68 TO 112,72: HPLOT 108,72 TO 112,68: RETURN
|
|
|
|
2999 REM ******** WINNER *************
|
|
3000 TEXT : FOR I = 250 TO 0 STEP - 15: PRINT "** WINNER **";: POKE P,I: POKE D,10
|
|
3005 CALL S: NEXT : FOR I = 1 TO 500: NEXT: PRINT : PRINT
|
|
3010 IF TM > PT THEN HOME : VTAB 10: FLASH : PRINT "CONGRATULATIONS!": NORMAL : PRINT "YOU'VE BEATEN THE PREVIOUS HIGH SCORE ": PRINT "OF ";PT;" WITH YOUR SCORE OF ";TM
|
|
3011 GC = GC + 1: IF GC = 1 THEN PRINT : PRINT "IF YOU'VE BEEN PLAYING THE EASY GAME": PRINT "YOU'RE A WINNER! NOW WE'LL ADVANCE TO": PRINT "THE HARD GAME":HD$ = "H"
|
|
3012 IF TM > PT THEN PT = TM
|
|
3015 PRINT: GOTO 4010
|
|
|
|
3999 REM ********** CRASH ! **********
|
|
4000 TEXT : FLASH : FOR I = 1 TO 80: PRINT "** CRASH **";: POKE P,I: POKE D,2: CALL S: NEXT: NORMAL
|
|
4005 FOR I = 1 TO 250 STEP 50: POKE P,I: POKE D,50: CALL S: NEXT
|
|
4006 FOR I = 1 TO 1000: NEXT: HOME
|
|
|
|
4009 REM ********** PLAY AGAIN ? ********
|
|
4010 POKE C,0: PRINT "ANOTHER MISSION (";:INVERSE:?"Y";:NORMAL:?"/N)? ";: GET A$: IF A$<>"N" THEN HGR : GOTO 6000
|
|
4020 END
|
|
|
|
|
|
4098 REM THE FOLLOWING SUBROUTINE GOES INTO MEMORY BLOCK HEX $30E (782), THE TONES RESPOND TO POKE 0 TO 255
|
|
4099 REM PITCH= POKE 780,PITCH DURATION=POKE 781,DURATION
|
|
5000 POKE 782,173: POKE 783,48: POKE 784,192: POKE 785,136: POKE 786,208: POKE 787,5: POKE 788,206: POKE 789,13: POKE 790,3
|
|
5010 POKE 791,240: POKE 792,9: POKE 793,202: POKE 794,208: POKE 795,245: POKE 796,174: POKE 797,12: POKE 798,3: POKE 799,76
|
|
5020 POKE 800,14: POKE 801,3: POKE 802,96
|
|
5030 TEXT: HOME: S=782: P=780: D=781: H= 49152: C=49168
|
|
5040 VTAB 2: INVERSE : HTAB 13: PRINT "** SPACE MAZE **": VTAB 22: HTAB 4: PRINT "COPYRIGHT 1980..MICRO-SPARC, INC.": VTAB 24: HTAB 2: NORMAL: PRINT "*CODE HONORED* IN 2022 BY FVL FOR A2SE";
|
|
5050 FOR I = 250 TO 0 STEP - 15: POKE P, I: POKE D,10: CALL S: NEXT
|
|
5060 VTAB 6: HTAB 1: PRINT "YOU WILL PILOT A SPACE CRUISER THRU THE": PRINT "STAR MAZE TO REACH THE PRIZED DILITHIUM": PRINT "CRYSTALS AT THE CENTER OF THE MAZE": INVERSE : PRINT
|
|
5070 PRINT "BE CAREFUL! IN THE HARD VERSION OF THE": PRINT "GAME YOUR SHIP IS PULLED BY HOSTILE ": PRINT "MAGNETIC FORCES.. SO TAKE CARE "
|
|
5080 PRINT "NOT TO CRASH!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
|
5090 NORMAL : PRINT: PRINT "DO YOU WANT YOUR SHIP SIGNAL": ?"SOUNDS (";:INVERSE:?"Y";:NORMAL:?"/N)? ";: GET A$: M=A$="N": PRINT: PRINT "EASY OR HARD GAME (";:INVERSE: ?"E";: NORMAL: ?"/H)? "; : GET A$: E= A$<>"H"
|
|
5100 PRINT: PRINT "DO YOU WANT STARWARS MUSIC EACH": PRINT "GAME (Y/";:INVERSE:?"N";:NORMAL:?")? ";: GET M$
|
|
5110 PRINT: PRINT "JOYSTICK OR KEYBOARD (J/";:INVERSE:?"K";:NORMAL:?")? ";: GET J$: J=J$="J": IF NOT J THEN PRINT: PRINT "USE I/J/K/L TO MOVE. PRESS ANY KEY. ";: GET A$
|
|
|
|
5999 REM *********** START NEW GAME ************
|
|
6000 HOME: HGR : GOSUB 2000: IF PT>0 THEN VTAB 24: PRINT TAB(7)"PREVIOUS RECORD SCORE IS: ";PT;
|
|
6010 IF M$ = "Y" THEN GOSUB 500
|
|
6020 Z=1: X = 15:Y = 90:HV = 0:VV = 0:TM = 600:XO = X:YO = Y: POKE P,150
|
|
6030 VTAB 21: HTAB 14: PRINT "FUEL LEFT= "TM" "
|
|
6040 PRINT "HORIZONTAL= "HV;: HTAB 28: PRINT "VERTICAL= "VV
|
|
6100 GOTO 180
|
|
|
|
|
|
|
|
|
|
|
|
7000 REM *************************
|
|
7010 REM ** SPACE MAZE **
|
|
7020 REM ** MICRO-SPARC **
|
|
7030 REM ** P.O. BOX 325 **
|
|
7040 REM ** LINCOLN MASS 01773 **
|
|
7050 REM ** COPYRIGHT C 1980 **
|
|
7060 REM ** **
|
|
7070 REM ** HONORING THE CODE **
|
|
7080 REM ** IN 2022 BY FVL **
|
|
7090 REM ** FOR A2SE FB GROUP **
|
|
7100 REM *************************
|
|
|
|
8000 REM VARIABLES
|
|
8010 REM **************
|
|
8020 REM P = ADDRESS FOR PITCH
|
|
8030 REM D = ADDRESS FOR DURATION
|
|
8040 REM K = KEY READ
|
|
8050 REM C = CLEAR KEYBOARD STROBE ADDRESS (49168)
|
|
8060 REM H = READ LAST KEY PRESSED ADDRESS (49152)
|
|
8070 REM Z = ZONE THE SPACESHIP IS IN
|
|
8080 REM X, Y = SPACESHIP POSITION ON SCREEN
|
|
8090 REM XO, YO = SPACESHIP PREVIOUS POSITION
|
|
8100 REM HV, VV = HORIZONTAL AND VERTICAL SPEED
|
|
8110 REM TM = TIME LEFT (FUEL)
|
|
8120 REM PT = HI SCORE
|
|
8130 REM I = GENERIC FOR/NEXT LOOP COUNTER
|
|
8140 REM J = JOYSTICK CONTROL TRUE/FALSE
|
|
8150 REM E = EASY DIFFICULTY TRUE/FALSE
|
|
8160 REM A$ = GENERIC VARIABLE TO HOLD KEY PRESSED WHEN PROMPTING USER FOR OPTIONS
|
|
8170 REM M$ = MUSIC AT THE START OF EACH GAME (Y/N) |