005
06.11.2023, 13:43 Uhr
ThomasR
|
Es ist zwar nicht DDR, aber CP/M-Spiele - deswegen hänge ich es mal hier an.
Malcolm Tyrrell schrieb 2003 für den ZX Spectrum MazezaM, ein schön kniffliges Programm, halb Sokoban, halb Labyrinth:
Inzwischen gibt es dieses Knobelspiel auf einigen anderen Computern wie auch für den Windows-PC:
Ventzislav Tzvetkov ("drHirudo") schrieb eine COM-Datei für CP/M. Leider ist im RT-Forum kein File-Upload möglich - deswegen hier ein Link: hirudov.com/others/files/MazezaM_CPM.zip . Diese Version setzt als Terminal(emulation) VT52 voraus (dann ist auch die erste Zeile nicht verrutscht):
2020 schrieb Malcolm selbst eine Version für BasiCode. Sie läuft damit, den entsprechenden Bascoder vorausgesetzt, zum Beispiel unter BASI.COM:
Die CP/M-Versionen sind zwar nicht so farbenfroh wie die beiden erstgenannten Versionen, aber die Herausforderung der Rätsel ist unverändert. Obendrein bietet die BasiCode-Version den Vorteil, dass die Zahl der Versuche nicht begrenzt ist und man auch einfach in den nächsten Level springen kann. Aufgabe ist, das Labyrinth zu durchqueren, wofür jeweils eine komplette Zeile von Hindernissen verschoben werden kann.
Die Bedienung erfolgt mit den Klein- oder Großbuchstaben i, j, k, l. Der Bascoder ist hier bereits enthalten, also kann das Spiel sofort aus dem Basic-Interpreter gestartet werden. Möglicherweise wird der Dateiname in Großbuchstaben erwartet.
Viel Spaß damit!
Quellcode: | 1 REM BASICODE 2 standaard inplementatie 21/4/83 2 REM door Henk Wevers 3 REM Voor aanpassing aan computer/terminal 4 REM zie basicode.doc file op deze diskette 5 REM initialisatie 6 REM Deze versie voor MBASIC 5.21 en hoger ! (met INKEY$) 7 PRINT CHR$(27);"*";CHR$(0);CHR$(0);CHR$(0);CHR$(26);:WIDTH(255) 10 GOTO 1000 19 REM regels 20-100 clear a, niet nodig voor mbasic 20 GOTO 1010 99 REM regel 100-110 clear screen 100 PRINT CHR$(27);"*";CHR$(0);CHR$(0);CHR$(0);CHR$(26);:RETURN 109 REM regel 110 - 120 set cursor op HO en VE 110 REM TERMINAL = 24 X 80 ! 111 IF HO>79 THEN HO=79 112 IF VE>23 THEN VE=23 113 PRINT CHR$(27);"=";CHR$(VE+32);CHR$(HO+32); 115 RETURN 119 REM regel 120-130 haal cursorpositie in HO en VE 120 IF HO > 79 THEN HO=80 121 IF VE > 23 THEN VE=23 122 REM voor terminal 24 x 80 124 RETURN 200 IN=0:IN$=INKEY$:IF IN$<>"" THEN IN=ASC(IN$) 201 IN=IN+32*((IN>96)AND(IN<127)) 202 IN=IN-27*(IN=1):IN=IN-23*(IN=6):IF IN=127 THEN GOSUB 120:IF HO>0 THEN IN$=CHR$(27)+"D "+CHR$(27)+"D" ELSE IN=0:IN$="" 203 RETURN 210 GOSUB 200:IF IN$<>"" THEN RETURN 211 GOTO 210 250 PRINT CHR$(7);:RETURN 260 RV=RND(1):RETURN 270 FR=FRE(2):RETURN 300 SR$=STR$(SR) 301 O7=LEN(SR$):IF O7=0 THEN RETURN 302 IF RIGHT$(SR$,1)<>" " THEN 304 303 SR$=LEFT$(SR$,O7-1):GOTO 301 304 IF LEFT$(SR$,1)<>" " THEN RETURN 305 SR$=RIGHT$(SR$,O7-1):GOTO 301 310 O4=SR:IF CN<>0 THEN 316 312 SR=INT(SR+.5):GOSUB 300:GOTO 330 316 O5=SGN(SR):SR=ABS(SR):O8=INT(SR):O9=SR-O8 318 FOR O6=1 TO CN:O9=O9*10:NEXT O6 320 O9=INT(O9+.5):SR=O9:GOSUB 300 322 O9$=RIGHT$("00000000000000000000"+SR$,CN) 324 IF O8=0 AND O9=0 THEN O5=1 326 SR=O8:GOSUB 300:IF O5=-1 THEN SR$="-"+SR$ 328 SR$=SR$+"."+O9$ 330 IF LEN(SR$)<=CT THEN 334 332 SR$=LEFT$("********************",CT):GOTO 340 334 SR$=RIGHT$(" "+SR$,CT) 340 SR=O4:RETURN 350 LPRINT SR$;:RETURN 360 LPRINT:RETURN 1000 A=194:GOTO 20:REM *** MAZEZAM *** 1010 DIM R$(11):DIM Y(11):HO=14:VE=14 1310 HO=HO+1:R=HO:GOSUB 110:GOSUB 120:IF R=HO THEN 1310 1610 VE=VE+1:S=VE:GOSUB 110:GOSUB 120:IF VE=S THEN 1610 1910 GOSUB 100:VE=6:HO=(R-7)/2:GOSUB 110:PRINT"MazezaM":VE=S-6 1920 HO=0:GOSUB 110:PRINT" MOVE ijkl":PRINT"RETRY r" 1930 PRINT" SKIP s":PRINT" QUIT q":GOSUB 210 1940 IF IN<>81 THEN 1960 1950 GOSUB 100:END 1960 RESTORE:Z=0:N$="":T=0 2210 GOSUB 250:T=T+1:IF T=31 THEN 1910 2220 GOSUB 4910:N=W:GOSUB 4910:M=W:GOSUB 4910:P=W:GOSUB 4910:Q=W 2230 F=0:FOR C=0 TO N-1:R$(C)="":Y(C)=0:FOR D=0 TO M-1:A$="=" 2240 IF F=0 THEN GOSUB 4910:F=6 2250 F=F-1:G=INT(W/2)*2:IF W=G THEN A$=" " 2260 R$(C)=R$(C)+A$:W=G/2:NEXT D:NEXT C:U=INT((R-M)/2) 2270 V=INT((S-N)/2) 2510 GOSUB 100 2810 VE=V-1:HO=U-1:W=P:X=0:GOSUB 4610:FOR I=0 TO N-1:Y(I)=0 2820 VE=VE+1:GOSUB 110:A$="#":B$=A$:IF I=P THEN A$=">" 2830 IF I=Q THEN B$=">" 2840 PRINT A$;:GOSUB 4010:PRINT B$:NEXT I:VE=VE+1:GOSUB 4610 2850 HO=HO+1 3110 GOSUB 210:D=W:E=X:IF (IN=73 OR IN=31) AND W>0 THEN D=W-1 3120 IF (IN=75 OR IN=30) AND W<N-1 THEN D=W+1 3130 IF (IN=74 OR IN=28) AND X>0 THEN E=X-1:F=1 3140 IF (IN=76 OR IN=29) AND X<M-1 THEN E=X+1:F=M 3150 IF (IN=76 OR IN=29) AND W=Q AND X=M-1 OR IN=83 THEN 2210 3160 IF IN=81 THEN 1910 3170 IF IN=82 THEN 2810 3180 I=D:GOSUB 4310 3190 IF MID$(J$,E+1,1)=" " THEN I=W:W=D:X=E:GOSUB 3710:GOTO 3410 3200 IF X<>E AND MID$(J$,F,1)=" " THEN Y(W)=Y(W)+E-X:X=E 3410 I=W:GOSUB 3710:GOTO 3110 3710 VE=V+I:GOSUB 110 4010 GOSUB 4310:IF I<>W THEN PRINT J$;:RETURN 4020 IF X>0 THEN PRINT LEFT$(J$,X); 4030 PRINT "@";:IF X<M-1 THEN PRINT RIGHT$(J$,M-X-1); 4040 REM B$="#":IF I=Q THEN B$=">" 4050 REM PRINT B$ 4060 RETURN 4310 IF Y(I)=0 THEN J$=R$(I):RETURN 4320 IF Y(I)>0 THEN B=Y(I):C=M-B 4330 IF Y(I)<0 THEN C=-Y(I):B=M-C 4340 J$=RIGHT$(R$(I),B)+LEFT$(R$(I),C):RETURN 4610 GOSUB 110:PRINT LEFT$("#################",M+2):RETURN 4910 Z=Z+1:IF Z=LEN(N$)+1 THEN READ N$:Z=1 4920 B=ASC(MID$(N$,Z,1)):A=ASC("A"):G=ASC("a"):H=ASC("0") 4930 W=63:IF B>=A AND B<A+26 THEN W=B-A 4940 IF B>=G AND B<G+26 THEN W=B-G+26 4950 IF B>=H AND B<H+10 THEN W=B-H+52 4960 IF B=ASC("+") THEN W=62 4970 RETURN 25000 DATA "CFBAKBCHABykADHABmVZBDICBkTlKEFDDCtSCEHADq6oWCFHAE" 25010 DATA "cpQvKJDICCFQtdEHBCUspqDEOBD/2gZ20O4fCEHBB2UpDDGNAA" 25020 DATA "4D6zp7p8nLmqJFGDBCmW6EEICDcwOXKAGGAFUVUNN0EKACsy1Y" 25030 DATA "q7CEHADWk2hELFKAEtpocFlqJAEHCDKsRVOEPCAeeWbNavRzTF" 25040 DATA "ICC1sGq9gCELACuBzaerBAFIDBkjpuqJNEJDAiYP3QBHJGCyTa" 25050 DATA "6tJE3PEAGHAAy08CdPAKNHAAg8f6AT+l7MFZ63Ux5+DAAHJBEy" 25060 DATA "wq1w+0rJ6AKLAJAg+39oWA9/GuNYu+HAAHKAAaRdTF2OVZd0F" 30000 REM leicht abgeaendert Th. Rademacher JOYCE-User-AG e.V. 30010 REM Zeilen 4040 und 4050 fuer 8-bit-Atari aktivieren 32000 REM Autor: Malcohol (Malcolm Tyrrell) auf GitHub 2020
|
-- Tot wie ein Dodo? viele Informationen zu BasiCode auf basicode.de
Cu via komputilo povas Esperanto? Jes, BasiCode! Dieser Beitrag wurde am 06.11.2023 um 16:25 Uhr von ThomasR editiert. |