home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib12.dsk
/
APPLETRATION.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
7KB
|
186 lines
10 REM **********************
11 REM * APPLETRATION *
12 REM * BY ROB SMYTHE *
13 REM * COPYRIGHT (C) 1982 *
14 REM * BY MICRO-SPARC INC *
15 REM * LINCOLN, MA. 01773 *
16 REM **********************
17 IF PEEK(768) + PEEK(769) = PEEK(770) THEN 20: REM INITIALIZE HRCG ON FIRST RUN
18 GOSUB 10000
19 POKE 768,1: POKE 769,2: POKE 770,3: REM SPECIFIC GARBAGE POKED WHERE LINE 10 CAN DETECT IT AND SKIP INITIALIZING AND PICTURE-LOADING ROUTINES
20 PRINT CHR$(16); CHR$(11)
30 HGR : POKE -16302,0
40 KB = -16384: REM KEYPRESS
50 G$ = CHR$(7): REM BELL
70 GOSUB 61000: REM INITIALIZE HRCG CURSOR CONTROLS
80 DIM SH$(8),SPOT(16)
97 :
98 REM CREATE SHAPE ARRAY
99 :
100 FOR I = 1 TO 8:J = 9 *I
110 SH$(I) = CB$ + CHR$(J +45) + CHR$(J +46) + CHR$(J +47) +CC$ + CHR$(J +48) + CHR$(J +49) + CHR$(J +50) +CC$ + CHR$(J +51) + CHR$(J +52) + CHR$(J +53) +CD$
115 SH$(I) = CA$ +"1" +SH$(I) +CA$ +"0"
120 NEXT
130 SH$(0) = CB$ +" " +CC$ +" " +CC$ +" " +CD$
140 GOTO 1000
147 :
148 REM GAME BOARD OUTLINE
149 :
150 VTAB 4: FOR I = 1 TO 17: HTAB 12: PRINT CI$" "CN$: NEXT
160 HCOLOR= 6: FOR I = 0 TO 3
170 HPLOT 77 +I,24 +I TO 195 -I,24 +I TO 195 -I,160 -I TO 77 +I,160 -I TO 77 +I,24 +I
180 NEXT
190 HPLOT 76,24 TO 76,160: HPLOT 196,24 TO 196,160: HPLOT 75,24 TO 75,160: HPLOT 197,24 TO 197,160
200 RETURN
497 :
498 REM DRAW CLOSED DOOR DR
499 :
500 HCOLOR= 5: HTAB 1: VTAB 1: PRINT
505 ON DR GOTO 510,515,520,525,530,535,540,545,550,555,560,565,570,575,580,585
510 X = 14:Y = 6:A$ = "A": GOTO 590
515 X = 18:Y = 6:A$ = "B": GOTO 590
520 X = 22:Y = 6:A$ = "C": GOTO 590
525 X = 26:Y = 6:A$ = "D": GOTO 590
530 X = 14:Y = 10:A$ = "E": GOTO 590
535 X = 18:Y = 10:A$ = "F": GOTO 590
540 X = 22:Y = 10:A$ = "G": GOTO 590
545 X = 26:Y = 10:A$ = "H": GOTO 590
550 X = 14:Y = 14:A$ = "I": GOTO 590
555 X = 18:Y = 14:A$ = "J": GOTO 590
560 X = 22:Y = 14:A$ = "K": GOTO 590
565 X = 26:Y = 14:A$ = "L": GOTO 590
570 X = 14:Y = 18:A$ = "M": GOTO 590
575 X = 18:Y = 18:A$ = "N": GOTO 590
580 X = 22:Y = 18:A$ = "O": GOTO 590
585 X = 26:Y = 18:A$ = "P": GOTO 590
590 FOR I = 0 TO 23
591 A = (X -2) *7:B = (X +1) *7 -1:C = (Y -2) *8:
592 HPLOT A,C +I TO B,C +I
593 NEXT
595 HTAB X: VTAB Y: PRINT CK$A$: RETURN
597 :
598 REM PRINT SHAPE A$ IN OPEN DOOR DR
599 :
600 A$ = SH$(SPOT(DR))
605 ON DR GOTO 610,615,620,625,630,635,640,645,650,655,660,665,670,675,680,685
610 HTAB 13: VTAB 5: PRINT A$: RETURN
615 HTAB 17: VTAB 5: PRINT A$: RETURN
620 HTAB 21: VTAB 5: PRINT A$: RETURN
625 HTAB 25: VTAB 5: PRINT A$: RETURN
630 HTAB 13: VTAB 9: PRINT A$: RETURN
635 HTAB 17: VTAB 9: PRINT A$: RETURN
640 HTAB 21: VTAB 9: PRINT A$: RETURN
645 HTAB 25: VTAB 9: PRINT A$: RETURN
650 HTAB 13: VTAB 13: PRINT A$: RETURN
655 HTAB 17: VTAB 13: PRINT A$: RETURN
660 HTAB 21: VTAB 13: PRINT A$: RETURN
665 HTAB 25: VTAB 13: PRINT A$: RETURN
670 HTAB 13: VTAB 17: PRINT A$: RETURN
675 HTAB 17: VTAB 17: PRINT A$: RETURN
680 HTAB 21: VTAB 17: PRINT A$: RETURN
685 HTAB 25: VTAB 17: PRINT A$: RETURN
995 :
996 REM *** MAIN PROGRAM ***
997 :
998 REM CREATE PATTERN
999 :
1000 FOR I = 1 TO 8:SPOT(I) = I:SPOT(I +8) = I: NEXT
1010 FOR I = 1 TO 16:X = INT( RND(1) *16 +1)
1020 A = SPOT(I):SPOT(I) = SPOT(X):SPOT(X) = A
1030 NEXT I
1040 PRINT CP$CK$: VTAB 5: INPUT "PLAYER'S NAME: ";N1$
1045 VTAB 15: PRINT "("CS$"JUST "CK$"RETURN"CL$" IF A ONE PERSON GAME)"
1050 VTAB 10: PRINT CK$;: INPUT "OTHER PLAYER'S NAME: ";N2$
1060 NUM = 1: IF N2$ < >"" THEN NUM = 2
1070 PRINT CP$: VTAB 3: PRINT N1$;: HTAB 31: PRINT N2$
1080 GOSUB 150: REM DRAW GAME BOARD
1085 GOTO 1110: REM PUT A REM IN FRONT, OR DELETE, IF YOU WISH TO SEE ANSWERS FIRST
1090 FOR DR = 1 TO 16: GOSUB 600: NEXT
1100 VTAB 20: GET A$
1110 FOR DR = 1 TO 16: GOSUB 500: NEXT
1117 :
1118 REM START OF GAME
1119 :
1120 SC(1) = 0:SC(2) = 0:PLAYER = 1
1130 PLAYER = 1: IF NUM = 1 THEN 1205
1140 X = RND(1): IF X <.5 THEN PLAYER = 2
1200 GOSUB 1500: REM ERASE TEXT
1205 VTAB 8: HTAB 1 +30 *(PLAYER = 2): PRINT "DOOR 1: ";
1210 GET A$:D1 = ASC(A$) -64: REM CONVERT DOOR'S LETTER TO NUMBER
1217 :
1218 REM CHECK IF VALID ENTRY
1219 :
1220 IF D1 <0 OR D1 >16 THEN PRINT G$: GOTO 1205
1230 IF SPOT(D1) = 0 THEN PRINT G$: GOTO 1205
1237 :
1238 REM ENTRY ALLOWED
1239 :
1240 PRINT A$;:DR = D1: GOSUB 600: REM OPEN DOOR
1247 :
1248 REM GET AND CHECK SECOND PICK
1249 :
1250 VTAB 11: HTAB 1 +30 *(PLAYER = 2): PRINT "DOOR 2: ";
1260 GET A$:D2 = ASC(A$) -64
1270 IF D2 <0 OR D2 >16 OR D2 = D1 THEN PRINT G$: GOTO 1250
1280 IF SPOT(D2) = 0 THEN PRINT G$: GOTO 1250
1290 PRINT A$:DR = D2: GOSUB 600
1310 IF SPOT(D1) < >SPOT(D2) THEN 1380
1317 :
1318 REM IT'S A MATCH
1319 :
1320 PRINT G$G$G$: FOR I = 1 TO 2000: NEXT
1330 SC(PLAYER) = SC(PLAYER) +1: VTAB 17: HTAB 1 +30 *(PLAYER = 2): PRINT SC(PLAYER)" PAIR";: IF SC(PLAYER) >1 THEN PRINT "S";
1340 PRINT : FOR I = 1 TO 1000: NEXT
1347 :
1348 REM REMOVE PICTURE FROM EACH SPOT
1349 :
1350 SPOT(D1) = 0:SPOT(D2) = 0:DR = D1: GOSUB 600:DR = D2: GOSUB 600
1360 IF SC(1) +SC(2) = 8 THEN 2000: REM 2000 IF GAME OVER
1370 GOTO 1200: REM NEXT TURN
1377 :
1378 REM IT'S NOT A MATCH
1379 :
1380 FOR I = 1 TO 3000: NEXT
1390 DR = D1: GOSUB 500:DR = D2: GOSUB 500: REM CLOSE THE DOORS
1400 IF NUM = 1 THEN 1200
1410 PLAYER = 3 -PLAYER: GOTO 1200: REM SWITCH PLAYERS
1497 :
1498 REM ERASE PREVIOUS PICKS
1499 :
1500 VTAB 8: HTAB 1: PRINT " ";: HTAB 31: PRINT " "
1510 VTAB 11: HTAB 1: PRINT " ";: HTAB 31: PRINT " ": RETURN
1997 :
1998 REM POSTMORTEM
1999 :
2000 GOSUB 1500
2010 HTAB 16: VTAB 22: PRINT "GAME OVER"
2020 POKE -16368,0: END
9997 :
9998 REM INITIALIZE HRCG
9999 :
10000 ONERR GOTO 10130
10010 TEXT : HOME : HGR :ADRS = 0
10020 PRINT CHR$(4);"BLOAD RBOOT": CALL 520
10030 ADRS = USR(0),"HRCG"
10040 POKE 216,0
10050 IF ADRS <0 THEN ADRS = ADRS +65536
10060 CS = ADRS -768: HIMEM: CS
10070 D$ = CHR$(4)
10080 PRINT D$;"BLOAD CONC.SET,A";CS
10090 CH = INT(CS/256):CL = CS -CH *256
10100 POKE ADRS +7,CL: POKE ADRS +8,CH: CALL ADRS +3
10110 RETURN
10130 TEXT
10140 PRINT "ERROR IN RLOAD OR RBOOT"
10150 POKE 216,0
10160 STOP
60997 :
60998 REM CURSOR CONTROL VARIABLES
60999 :
61000 CA$ = CHR$(1):CB$ = CHR$(2):CC$ = CHR$(3):CD$ = CHR$(4):CE$ = CHR$(5):CF$ = CHR$(6):CI$ = CHR$(9):CK$ = CHR$(11):CL$ = CHR$(12):CN$ = CHR$(14):CO$ = CHR$(15):CP$ = CHR$(16):CS$ = CHR$(19):CT$ = CHR$(20)
61010 CV$ = CHR$(22):CW$ = CHR$(23):CY$ = CHR$(25):CZ$ = CHR$(26)
61020 P1$ = CO$ +CA$:P2$ = CO$ +CB$:PT$ = CO$ +CT$:PN$ = CO$ +CP$
61030 PRINT CP$CK$"(JUNIOR) CONCENTRATION"
61040 HCOLOR= 5: HPLOT 0,9 TO 153,9
61050 VTAB 10: PRINT CS$"BY "CS$"ROB "CS$"SMYTHE"
61060 FOR I = 1 TO 3000: NEXT : RETURN