Sharp PC-E500S MAZE

MAZE

Ein einfaches Adventure in einem Labyrinth für den PC-E500S von Sharp

MAZE (5.755 Bytes)

900*MAZE:CLS:CLEAR
910PRINT "Maze":PRINT " mps 2007"
920DIM LB(63),AU(8),G$(4)
930G$(0)="0000000000000000"
940G$(1)="0804027F020408"
950G$(2)="080808492A1C08"
960G$(3)="0810207F201008"
970G$(4)="081C2A49080808"
980RESTORE *MDAT
990READ A$
1000FOR X=0 TO 7
1010A=VAL("&"+MID$(A$,X*2+1,2))
1020FOR Y=0TO 7
1030Q=Y*8+X
1040IF (AND 2^Y)>0THEN LB(Q)=1
1050NEXT:NEXT
1060FOR A=2TO 6:READ B:LB(B)=A:NEXT
1070X=6:Y=6
1080S=0:T=0:U=0
1090R=4:GOTO 2220
1100Q=Y*8+X
1110IF R=1THEN
1120IF Q-16>-1THEN AU(1)=LB(Q-16)ELSE AU(1)=0
1130IF Q-9>-1THEN AU(3)=LB(Q-9)ELSE AU(3)=0
1140AU(4)=LB(Q-8)
1150AU(5)=LB(Q-7)
1160AU(6)=LB(Q-1)
1170AU(7)=LB(Q)
1180AU(8)=LB(Q+1)
1190ENDIF
1200IF R=2THEN
1210AU(1)=LB(Q+2)
1220AU(3)=LB(Q-7)
1230AU(4)=LB(Q+1)
1240IF Q+9<64THEN AU(5)=LB(Q+9)ELSE AU(5)=0
1250AU(6)=LB(Q-8)
1260AU(7)=LB(Q)
1270AU(8)=LB(Q+8)
1280ENDIF
1290IF R=3THEN
1300IF Q+16<64THEN AU(1)=LB(Q+16)ELSE AU(1)=0
1310IF Q+9<64THEN AU(3)=LB(Q+9)ELSE AU(3)=0
1320AU(4)=LB(Q+8)
1330AU(5)=LB(Q+7)
1340AU(6)=LB(Q+1)
1350AU(7)=LB(Q)
1360AU(8)=LB(Q-1)
1370ENDIF
1380IF R=4THEN
1390AU(1)=LB(Q-2)
1400AU(3)=LB(Q+7)
1410AU(4)=LB(Q-1)
1420IF Q-9>-1THEN AU(5)=LB(Q-9)ELSE AU(5)=0
1430AU(6)=LB(Q+8)
1440AU(7)=LB(Q)
1450AU(8)=LB(Q-8)
1460ENDIF
1470IF AU(6)=1THEN
1480GCURSOR (0,7):GPRINT "01010202040408081010202040408080";
1490GCURSOR (0,15):GPRINT G$(0);"00000000000000FF";
1500GCURSOR (0,23):GPRINT G$(0);"00000000000000FF";
1510GCURSOR (0,31):GPRINT "80804040202010100808040402020101";
1520GOTO 1600
1530ENDIF
1540IF AU(6)<>1THEN
1550GCURSOR (0,7):GPRINT G$(0);G$(0);G$(0);
1560GCURSOR (0,15):GPRINT "010101010101010101010101010101FF";
1570GCURSOR (0,23):GPRINT "808080808080808080808080808080FF";
1580GCURSOR (0,31):GPRINT G$(0);G$(0);G$(0);
1590ENDIF
1600IF AU(4)=1THEN
1610GCURSOR (16,15):GPRINT "010101010101010101010101010101010101010101010101";
1620GCURSOR (16,23):GPRINT "808080808080808080808080808080808080808080808080";
1630GOTO 1900
1640ENDIF
1650IF AU(3)=1THEN
1660GCURSOR (16,7):GPRINT G$(0);
1670GCURSOR (16,15):GPRINT "01010202040408F8";
1680GCURSOR (16,23):GPRINT "808040402020101F";
1690GCURSOR (16,31):GPRINT G$(0);
1700GOTO 1780
1710ENDIF
1720IF AU(3)<>1THEN
1730GCURSOR (16,7):GPRINT G$(0);
1740GCURSOR (16,15):GPRINT "08080808080808F8";
1750GCURSOR (16,23):GPRINT "101010101010101F";
1760GCURSOR (16,31):GPRINT G$(0);
1770ENDIF
1780IF AU(5)=1THEN
1790GCURSOR (32,7):GPRINT G$(0);
1800GCURSOR (32,15):GPRINT "F808040402020101";
1810GCURSOR (32,23):GPRINT "1F10202040408080";
1820GCURSOR (32,31):GPRINT G$(0);
1830ENDIF
1840IF AU(5)<>1THEN
1850GCURSOR (32,7):GPRINT G$(0);
1860GCURSOR (32,15):GPRINT "F808080808080808";
1870GCURSOR (32,23):GPRINT "1F10101010101010";
1880GCURSOR (32,31):GPRINT G$(0);
1890ENDIF
1900IF AU(8)=1THEN
1910GCURSOR (40,7):GPRINT "80804040202010100808040402020101";
1920GCURSOR (40,15):GPRINT "FF00000000000000";G$(0);
1930GCURSOR (40,23):GPRINT "FF00000000000000";G$(0);
1940GCURSOR (40,31):GPRINT "01010202040408081010202040408080";
1950GOTO 2030
1960ENDIF
1970IF AU(8)<>1THEN
1980GCURSOR (40,7):GPRINT G$(0);G$(0);
1990GCURSOR (40,15):GPRINT "FF010101010101010101010101010101";
2000GCURSOR (40,23):GPRINT "FF808080808080808080808080808080";
2010GCURSOR (40,31):GPRINT G$(0);G$(0);
2020ENDIF
2030IF AU(4)<>1THEN
2040GCURSsOR (24,11):GPRINT G$(0);
2050GCURSsOR (24,19):GPRINT G$(0);
2060GCURSsOR (24,27):GPRINT G$(0);
2070ENDIF
2080IF AU(1)=1 AND AU(4)<>1THEN
2090GCURSOR (24,11):GPRINT "8080808080808080";
2100GCURSOR (24,27):GPRINT "0101010101010101";
2110ENDIF
2120IF AU(4)>1THEN GOSUB *MITEM:GOTO 1100
2130A$=INKEY$:IF A$=""THEN2130
2140IF A$="4"THEN R=R-1:IF R<1THEN R=4
2150IF A$="6"THEN R=R+1:IF R>4THEN R=1
2160IF A$<>"8"THEN 2220
2170IF AU(4)>0THEN 2220
2180IF R=1 THEN Y=Y-1
2190IF R=2 THEN X=X+1
2200IF R=3 THEN Y=Y+1
2210IF R=4 THEN X=X-1
2220GCURSOR (60,15):GPRINT G$(R);
2230LINE (68+X*4,Y*4)-(68+X*4+3,Y*4+3),B
2240GOTO1100
2250*MITEM
2260IF AU(4)=2THEN RESTORE *MD2
2270IF AU(4)=3THEN RESTORE *MD3
2280IF AU(4)=4THEN RESTORE *MD4
2290IF AU(4)=5THEN RESTORE *MD5
2300IF AU(4)=6THEN RESTORE *MD6
2310READ A$
2320FOR K=0TO 1:FOR I=0TO7
2330A=VAL ("&"+MID$ (A$,I*2+1,2))
2340FOR J=0TO 7
2350Q=Y*8+X
2360IF (AND 2^J)>0THEN
2370IF K=0 THEN LINE (22+I*2,10+J*2)-(23+I*2+2,11+J*2+2),R,BF
2380IF K=1 THEN LINE (23+I*2,11+J*2)-(23+I*2+1,11+J*2+1),B
2390ENDIF
2400NEXT :NEXT :NEXT
2410Q=AU(4)
2420LOCATE 17,0
2430IF Q=2THEN S=1:PRINT "Schwert gefunden!";
2440IF Q=3THEN T=1:PRINT "Schild gefunden!";
2450IF Q=4THEN U=1:PRINT "Schatz gefunden!";
2460IF Q=5THEN 2510
2470IF Q=6THEN 2700
2480FOR A=0TO 63:IF LB(A)=QTHEN LB(A)=0
2490NEXT
2500GOTO 2760
2510PRINT "BigHeino stellt sich in";:LOCATE 17,1:PRINT "den Weg!";
2520LOCATE 17,2:PRINT "Willst Du: 1)Angreifen";
2530LOCATE 17,3:PRINT "Oder 2)Fluechten?";
2540A$=INKEY$:IF A$=""THEN 2540
2550IF A$="2"THEN R=3:GOTO 2770
2560IF A$<>"1"THEN 2540
2570GOSUB 2780:LOCATE 17,0
2580IF S=0THEN PRINT "Womit?";:GOTO 2760
2590IF S=1 AND T=0THEN
2600PRINT "Du hast ihn angegriffen";
2610LOCATE 17,1:PRINT "Er konnte aber auch";
2620LOCATE 17,2:PRINT "hauen! Und da Du";
2630LOCATE 17,3:PRINT "schutzlos warst...";
2640LOCATE 0,0:END
2650ENDIF
2660IF S=1 AND T=1THEN
2670PRINT "Du hast ihn besiegt!";
2680GOTO 2480
2690ENDIF
2700PRINT "Ein Schluesselloch!";
2710IF U=0THEN 2760
2720LOCATE 17,1:PRINT "Und der Schatz ist";
2730LOCATE 17,2:PRINT "der Schluessel!";
2740LOCATE 17,3:PRINT "Du bist frei!";
2750LOCATE 0,0:END
2760IF INKEY$=""THEN 2760
2770GOSUB 2780:RETURN
2780FOR A=0TO 3:LOCATE 17,A
2790PRINT "                       ";:REM 23 Spaces
2800NEXT
2810RETURN
2820*MDAT:DATA "FFA38DED81B7A1FF"
2830DATA 14,49,17,12,10
2840*MD2:DATA "40E87428542A0503"
2850*MD3:DATA "0E3B558B45330E00"
2860*MD4:DATA "3A778FEEEFEF773A"
2870*MD5DATA "7886ADC1CDA18678"
2880*MD6:DATA "0000041E04000000"

Generated by (c) Sharp PC-E500/E500S Notepad 1.00.3

(c) by herbstmoen@web.de - http://blog.manib.bplaced.net