home *** CD-ROM | disk | FTP | other *** search
Wrap
10 REM ******************************* 20 REM * LABIRINTO TRIDIMENSIONALE * 30 REM * PER APPLE II * 40 REM * (C) 1989 * 50 REM * GRUPPO EDITORIALE JCE * 60 REM ******************************* 70 : 80 LOMEM: 24576:MM = PEEK(115) + PEEK(116) *256:KM = MM -55: HIMEM: MM -60 90 KH = INT(KM/256):KL = KM -256 *KH: POKE 232,KL: POKE 233,KH: FOR I = KM TO KM +49: READ EE: POKE I,EE: NEXT 100 DATA 2,255,37,0,8,0,50,0,88,192,27,45,45,45,62,63,63,55,45,45,45,62,63,63,55,45,45,45,62,63,63,55,45,45,45,4,0,219,45,37,88,168,21,23,45,30,30,30,4,0 110 GOSUB 1460 120 GOSUB 970: VTAB 7: HTAB 15: PRINT "IL LABIRINTO": HTAB 15: PRINT "____________" 130 VTAB 12: HTAB 20: PRINT "BY": PRINT : HTAB 7: PRINT "MATTEO GUAGNINI & APPLEDISK." 140 VTAB 22: HTAB 6: PRINT "PREMI <RETURN> PER COMINCIARE.": GOSUB 980 150 : 160 NI = 7:NJ = 7 170 IX = INT((264 -15 *NJ)/2):IY = INT((145 -15 *NI)/2) 180 DIM H(NI,NJ),V(NI,NJ),K(NI,NJ),P((NI +1) *(NJ +1),1),RV$(4),M(4) 190 HOME : HGR : VTAB 22: HTAB 7: PRINT "STO COSTRUENDO IL LABIRINTO...": GOSUB 630 200 IF CC = 0 THEN GOSUB 1010 210 HOME : GOSUB 930: GOSUB 1200 220 GOSUB 970: VTAB 12: HTAB 6: PRINT "VUOI GIOCARE ANCORA (S/N) ? ";: GET A$: IF A$ = "S" OR A$ = "s" THEN CLEAR :CC = 1: GOTO 160 230 GOTO 1560 240 : 250 HCOLOR= H: FOR I = 0 TO 10 STEP 4: HPLOT 130 -I,99 +I TO 169 +I,99 +I:I = I +I/4: NEXT : HPLOT 130,99 TO 120,109: HPLOT 169,99 TO 179,109: RETURN 260 HCOLOR= H: FOR I = 14 TO 50 STEP 4: HPLOT 130 -I,99 +I TO 169 +I,99 +I:I = I +I/4: NEXT : HPLOT 120,109 TO 78,151: HPLOT 179,109 TO 221,151: RETURN 270 HCOLOR= H: HPLOT 120,50 TO 179,50: HPLOT 120,108 TO 179,108: RETURN 280 HCOLOR= H: HPLOT 102,32 TO 120,50: RETURN 290 HCOLOR= H: HPLOT 197,32 TO 179,50: RETURN 300 HCOLOR= H: HPLOT 120,50 TO 130,60 TO 130,99: HPLOT 179,50 TO 169,60 TO 169,99: RETURN 310 HCOLOR= H: HPLOT 102,50 TO 120,50: HPLOT 102,108 TO 120,108: HPLOT 102,32 TO 102,125: RETURN 320 HCOLOR= H: HPLOT 120,50 TO 120,109: RETURN 330 HCOLOR= H: HPLOT 197,50 TO 179,50: HPLOT 197,108 TO 179,108: HPLOT 197,32 TO 197,125: RETURN 340 HCOLOR= H: HPLOT 179,50 TO 179,109: RETURN 350 H = 3: FOR I = 0 TO 8: HCOLOR= H:H = 3 -H: HPLOT 70 +I,I TO 229 -I,I TO 229 -I,159 -I TO 70 +I,159 -I TO 70 +I,I: NEXT 360 HPLOT 78,8 TO 102,32: HPLOT 221,8 TO 197,32: RETURN 370 H = 0: GOSUB 270: GOSUB 280: GOSUB 290:H = 3: GOSUB 250: GOSUB 300: GOSUB 310: GOSUB 330: GOSUB 320: GOSUB 340: RETURN 380 H = 0: GOSUB 270: GOSUB 280: GOSUB 330: GOSUB 340:H = 3: GOSUB 250: GOSUB 300: GOSUB 290: GOSUB 310: GOSUB 320: RETURN 390 H = 0: GOSUB 250: GOSUB 280: GOSUB 290: GOSUB 320: GOSUB 340: GOSUB 300:H = 3: GOSUB 270: GOSUB 310: GOSUB 330: RETURN 400 H = 0: GOSUB 250: GOSUB 280: GOSUB 330: GOSUB 300: GOSUB 320:H = 3: GOSUB 310: GOSUB 270: GOSUB 340: GOSUB 290: RETURN 410 H = 0: GOSUB 270: GOSUB 290: GOSUB 310: GOSUB 320:H = 3: GOSUB 250: GOSUB 300: GOSUB 280: GOSUB 330: GOSUB 340: RETURN 420 H = 0: GOSUB 270: GOSUB 330: GOSUB 340: GOSUB 310: GOSUB 320:H = 3: GOSUB 250: GOSUB 300: GOSUB 280: GOSUB 290: RETURN 430 H = 0: GOSUB 250: GOSUB 290: GOSUB 310: GOSUB 300: GOSUB 340:H = 3: GOSUB 330: GOSUB 270: GOSUB 320: GOSUB 280: RETURN 440 H = 0: GOSUB 250: GOSUB 300: GOSUB 310: GOSUB 330:H = 3: GOSUB 290: GOSUB 280: GOSUB 270: GOSUB 320: GOSUB 340: RETURN 450 HCOLOR= 3: GOTO 470 460 HCOLOR= 0 470 HPLOT 15 *J +IX,15 *I +14 +IY TO 15 *J +13 +IX,15 *I +14 +IY: RETURN 480 HCOLOR= 3: GOTO 500 490 HCOLOR= 0 500 HPLOT 15 *J +IX +14,15 *I +IY TO 15 *J +14 +IX,15 *I +13 +IY: RETURN 510 HCOLOR= 3: HPLOT IX -1,15 *NI +14 +IY TO IX -1,IY -1 TO 15 *NJ +14 +IX,IY -1 TO 15 *NJ +14 +IX,15 *NI +14 +IY TO IX -1,15 *NI +14 +IY: SCALE= 1 520 FOR I = 0 TO NI: FOR J = 0 TO NJ: HPLOT 15 *J +14 +IX,15 *I +14 +IY: NEXT : NEXT : RETURN 530 HCOLOR= 3: GOTO 570 540 HCOLOR= 0: GOTO 570 550 HCOLOR= 3: GOTO 620 560 HCOLOR= 0: GOTO 620 570 IF HZ = 1 THEN ROT= 48 580 IF HZ = 2 THEN ROT= 32 590 IF HZ = 3 THEN ROT= 0 600 IF HZ = 4 THEN ROT= 16 610 DRAW 1 AT 15 *J +7 +IX,15 *I +7 +IY: RETURN 620 DRAW 2 AT 15 *J +7 +IX,15 *I +7 +IY: RETURN 630 TI = INT( RND( PEEK(78)) *(NI -2) +2):TJ = INT( RND( PEEK(78)) *(NJ -2) +2):HZ = INT(( PEEK(78) + PEEK(79)) *4 +1): GOSUB 510 640 I = TI -1:J = TJ: GOSUB 450:H(I,J) = 1:I = TI:J = TJ -1: GOSUB 480:V(I,J) = 1 650 I = TI:J = TJ: GOSUB 480:V(I,J) = 1: GOSUB 450:H(I,J) = 1:K(I,J) = 1 660 P = 1:P(P,0) = TI:P(P,1) = TJ 670 IF TI = 0 GOTO 690 680 IF K(TI -1,TJ) = 0 GOTO 770 690 IF TJ = 0 GOTO 710 700 IF K(TI,TJ -1) = 0 GOTO 770 710 IF TJ = NJ GOTO 730 720 IF K(TI,TJ +1) = 0 GOTO 770 730 IF TI = NI GOTO 750 740 IF K(TI +1,TJ) = 0 GOTO 770 750 P = P -1: IF P = 0 THEN RETURN 760 I = TI:J = TJ: GOSUB 560:TI = P(P,0):TJ = P(P,1): GOTO 670 770 HZ = INT( RND(HZ) *4 +1) 780 IF HZ = 1 AND TI = 0 GOTO 770 790 IF HZ = 2 AND TJ = 0 GOTO 770 800 IF HZ = 3 AND TJ = NJ GOTO 770 810 IF HZ = 4 AND TI = NI GOTO 770 820 UI = TI +(HZ = 4) -(HZ = 1):UJ = TJ +(HZ = 3) -(HZ = 2) 830 IF K(UI,UJ) = 1 GOTO 770 840 IF UI = 0 GOTO 860 850 I = UI -1:J = UJ: GOSUB 450:H(I,J) = 1 860 IF UJ = 0 GOTO 880 870 I = UI:J = UJ -1: GOSUB 480:V(I,J) = 1 880 I = UI:J = UJ: GOSUB 450: GOSUB 480:H(I,J) = 1:V(I,J) = 1 890 IF HZ <2 OR HZ >3 THEN I = TI -(HZ = 1):J = TJ: GOSUB 460:H(I,J) = 0: GOTO 910 900 I = TI:J = TJ -(HZ = 2): GOSUB 490:V(I,J) = 0 910 K(UI,UJ) = 1:I = UI:J = UJ: GOSUB 530 920 P = P +1:P(P,0) = UI:P(P,1) = UJ:TI = UI:TJ = UJ: GOTO 670 930 DI = INT(NI/2):FI = NI -DI:DJ = 0:FJ = NJ -DJ:I = DI:J = DJ:HZ = 3: GOSUB 530:I = FI:J = FJ: GOSUB 550 940 RV$(1) = "A NORD. ":RV$(2) = "A OVEST. ":RV$(3) = "A EST. ":RV$(4) = "A SUD. " 950 DS = ABS(FI -DI) + ABS(FJ -DJ) 960 CALL 770: GOSUB 1160: CALL -3086: GOSUB 350:H = 3: GOSUB 260: GOSUB 370: GOSUB 1140: HOME : RETURN 970 TEXT : HOME : COLOR= 10: VLIN 0,46 AT 0: VLIN 0,46 AT 39: HLIN 0,39 AT 0: HLIN 0,39 AT 46: RETURN 980 POKE 49168,0 990 IF PEEK(49152) < >141 THEN 990 1000 POKE 49168,0: RETURN 1010 GOSUB 970: VTAB 6: HTAB 5: PRINT "SIETE NELLA PARTE OVEST DEL LABI-": PRINT : HTAB 3: PRINT "RINTO. LA FRECCIA CHE E' VERSO EST": PRINT : HTAB 3: PRINT "VI RAPPRESENTA. " 1020 VTAB 14: HTAB 8: PRINT "DOVETE RAGGIUNGERE LA CASELLA": PRINT : HTAB 3: PRINT "MARCATA DAL QUADRATO BIANCO: ";: INVERSE : PRINT " ";: NORMAL : PRINT " ." 1030 VTAB 19: HTAB 5: PRINT "PER MUOVERVI UTILIZZATE I TASTI": PRINT : HTAB 3: PRINT "'<-' '->' 'SPAZIO' e '*'.": GOSUB 980 1040 GOSUB 970: VTAB 5: HTAB 5: PRINT "- PER ESPLORARE IL LABIRINTO: -": HTAB 5: PRINT "--------------------------------": PRINT 1050 VTAB 10: HTAB 4: PRINT "LO SPAZIO FA AVANZARE.": HTAB 30: PRINT "'SPAZIO'": HTAB 4: PRINT " <- GIRA A SINISTRA.": HTAB 29: PRINT " <- ";: FLASH : PRINT "+";: NORMAL : PRINT " ->" 1060 HTAB 4: PRINT " -> GIRA A DESTRA. ": HTAB 32: PRINT "'*'": HTAB 5: PRINT " * GIRA INDIETRO.": PRINT : HTAB 4: PRINT " + VEDE DALL'ALTO." 1070 PRINT : PRINT : HTAB 4: PRINT " <ESC> PERMETTE L'ABBANDONO.": GOSUB 980: RETURN 1080 GOSUB 1180: HOME : VTAB 21: HTAB 5: PRINT "SEI A "DS" CASELL";: IF DS >1 THEN PRINT "E DALL'USCITA.": GOTO 1100 1090 PRINT "A DALL'USCITA!" 1100 INVERSE : PRINT " SEI RIVOLTO ";RV$;" ";: NORMAL : PRINT SPC( 16 - LEN(RV$));"SPAZI"; 1110 PRINT SPC( 17)" DOVE VAI? <-+->": PRINT " <ESC> PER FINIRE. *";: VTAB 23: HTAB 36: POKE 49168,0: GET R$: RETURN 1120 POKE 49236,0: POKE 49235,0: POKE 49232,0: POKE 49239,0 1130 POKE 230,64: RETURN 1140 POKE 49237,0: POKE 49234,0: POKE 49232,0: POKE 49239,0 1150 GOTO 1130 1160 POKE 49237,0: POKE 49234,0: POKE 49232,0: POKE 49239,0 1170 POKE 230,32: RETURN 1180 POKE 49236,0: POKE 49235,0: POKE 49232,0: POKE 49239,0 1190 GOTO 1170 1200 TI = DI:TJ = DJ 1210 RI = HZ:RM = 5 -RI:RJ = 2 *(RI = 1) +4 *(RI = 2) +3 *(RI = 4) +(RI = 3):RK = 5 -RJ 1220 IF TI = 0 THEN M(1) = 1: GOTO 1240 1230 M(1) = H(TI -1,TJ) 1240 IF TJ = 0 THEN M(2) = 1: GOTO 1260 1250 M(2) = V(TI,TJ -1) 1260 M(3) = V(TI,TJ):M(4) = H(TI,TJ) 1270 NP = 4 *M(RJ) +2 *M(RI) +M(RK) +1 1280 GOSUB 1180: ON NP GOSUB 370,380,390,400,410,420,430,440 1290 RV$ = RV$(RI): GOSUB 1080 1300 IF R$ = CHR$(27) THEN RETURN 1310 IF R$ < >"+" GOTO 1340 1320 RV = HZ +1: IF RV >4 THEN RV = 1 1330 ZH = HZ:UI = TI:UJ = TJ: GOSUB 1140:WW = 10: GOTO 1400 1340 IF NOT (R$ = " " OR R$ = CHR$(8) OR R$ = CHR$(21) OR R$ = CHR$(42)) THEN GOSUB 1440: GOTO 1290 1350 IF R$ = " " AND M(RI) THEN GOSUB 1440: GOTO 1290 1360 IF R$ = CHR$(8) AND M(RJ) THEN GOSUB 1440: GOTO 1290 1370 IF R$ = CHR$(21) AND M(RK) THEN GOSUB 1440: GOTO 1290 1380 IF R$ = CHR$(42) AND M(RM) THEN GOSUB 1440: GOTO 1290 1390 GOSUB 1120:RV = RI *(R$ = " ") +RJ *(R$ = CHR$(8)) +RK *(R$ = CHR$(21)) +RM *(R$ = CHR$(42)):ZH = HZ:UI = TI +(RV = 4) -(RV = 1):UJ = TJ +(RV = 3) -(RV = 2):WW = 0 1400 FOR W = 1 TO WW:I = TI:J = TJ:HZ = ZH: GOSUB 530: GOSUB 540:I = UI:J = UJ:HZ = RV: GOSUB 540: GOSUB 530: NEXT 1410 HZ = RV:TI = UI:TJ = UJ:DS = ABS(FI -TI) + ABS(FJ -TJ): IF TI < >FI OR TJ < >FJ GOTO 1210 1420 GOSUB 1140 1430 I = TI:J = TJ: FOR HZ = 1 TO 5: GOSUB 540: PRINT CHR$(7): NEXT : GOSUB 970: VTAB 12: HTAB 9: PRINT "COMPLIMENTI! SEI FUORI!!!!": VTAB 22: HTAB 6: PRINT "PREMI <RETURN> PER CONTINUARE.": GOSUB 980: RETURN 1440 HOME : VTAB 22: HTAB 18: FLASH : PRINT CHR$(7);"SBAGLIATO!": NORMAL : FOR W = 1 TO 800: NEXT : RETURN 1450 : 1460 REM == HIRES.MOVE == 1470 : 1480 FOR I = 0 TO 45: READ J: POKE 770 +I,J: NEXT 1490 DATA 169,32,133,251,169,64,133,253,208,8 1500 DATA 169,64,133,251,169,32,133,253,169,0 1510 DATA 133,250,133,252,168,169,32,133,249,177 1520 DATA 250,145,252,200,208,249,230,251,230,253 1530 DATA 198,249,208,241,96,0 1540 RETURN 1550 : 1560 TEXT : HOME : PRINT "FINE DEL GIOCO." 1570 HOME : END 1580 END