Die Suche ergab 25 Treffer

von ein Thüringer
29.11.2023, 07:53
Forum: Programmierung
Thema: BASICODE in Java
Antworten: 10
Zugriffe: 354

Re: BASICODE in Java

haupz hat geschrieben: 28.11.2023, 21:52(...) Das Peano-Programm scheitert im Moment daran, dass IF auch ein THEN verlangt. Statt dessen wird da IF <Bedingung> GOTO benutzt ... tz tz tz. (...)
Das ist mir gar nicht aufgefallen und ich wusste auch nicht, dass das in Basic (also jetzt ohne BasiCode) funktioniert.

Schon in BasiCode-2
IF_THEN_2.jpg
IF_THEN_2.jpg (194.16 KiB) 127 mal betrachtet
und auch im niederländischen BC3-Buch
IF_THEN_3.jpg
IF_THEN_3.jpg (111.63 KiB) 127 mal betrachtet
ist es ausdrücklich ausgeschlossen.

In BasiCode wird es so gefordert:

IF bedingung THEN GOSUB zeilennummer

oder

IF bedingung THEN zeilennummer

(und in beiden Fällen keine Möglichkeit von ELSE) .

"bedingung" kann (der Vollständigkeit halber) auch eine logische Variable sein, deren Belegung vorher aus mehreren Vergleichsausdrücken erstellt wurde.

Aber

IF bedingung THEN GOTO zeilennummer

funktioniert auch, offenbar ist die Absicht das Sparen von Bytes.

Es gilt ja auch, dass eine Zeile einschließlich Zeilennummer und Leerzeichen die Länge von 60 Zeichen nicht überschreiten soll.

Im BasiCode-eigenen Aufzeichnungsformat wird der ASCII-Code zunächst gepuffert und dann in die internen Token übersetzt: man musste eine Puffergröße festlegen, die auch auf allen beteiligten Computern machbar ist.

Es waren Holgers (Robotrontechnik-Forum) erste Gehversuche in BasiCode, wir können es ihm sicher nachsehen. Im Thread "Grafik - Kurven" habe ich es korrigiert.
von ein Thüringer
27.11.2023, 15:12
Forum: Programmierung
Thema: BASICODE in Java
Antworten: 10
Zugriffe: 354

Re: BASICODE in Java

Ja, das tut er, ist höchstens etwas wählerisch mit den Browsern. Ich habe eine sehr frühe Version, die ich sehr gern verwende. Dort konnte man sein Wunschprogramm gleich mit der Maus in den Bildschirm ziehen. Es ist auch praktisch zum Debuggen, obwohl man Befehle wie LIST und EDIT nicht zur Verfügung hat, dafür ist es ordentlich schnell - und das Tempo geht noch höher einzustellen.
von ein Thüringer
27.11.2023, 12:14
Forum: Programmierung
Thema: BASICODE in Java
Antworten: 10
Zugriffe: 354

Re: BASICODE in Java

Paul hat geschrieben: 26.11.2023, 21:06 (...)
Wäre es möglich die wichtigen Parameter wie Farben, Zeilenbreite, Zeilenanzahl, Font usw. wählbar zu machen?
(...)
So könnte ich Spectrum Font und Farben wählen oder Atari ST, PCW oder was mir gerade gefällt. (...)
Hallo Paul,

so etwas bietet doch schon Hagemans' Browser-Bascoder an, zumindest für ein paar Computer. Nur die Optik, keine Emulation.

Viele Grüße,

Thomas
von ein Thüringer
23.11.2023, 00:41
Forum: Programmierung
Thema: Grafik - Kurven
Antworten: 4
Zugriffe: 6917

Re: Grafik - Kurven

Mein Hirn hat kapituliert, aber Holger aus dem Robotrontechnik-Forum hat es geschafft, die Rekursion erst in Basic und dann auch in BasiCode zu programmieren, siehe 017 und 019 von https://www.robotrontechnik.de/html/for ... fe904c82a0 .
Peanokurve in Verschachtelungstiefe 5 bei vergrößerter Zeilen- und Spaltenzahl im Online-Bascoder
Peanokurve in Verschachtelungstiefe 5 bei vergrößerter Zeilen- und Spaltenzahl im Online-Bascoder
Smartphone.jpg (126.74 KiB) 56 mal betrachtet

Code: Alles auswählen

1000 LET A=200:GOTO 20:REM Peano-Kurven
1001 REM https://de.wikipedia.org/wiki/Peano-Kurve
1010 REM go ...
1020 GOSUB 100
1022 PRINT "Peano Kurve"
1023 PRINT "Verschachtelungstiefe (0-5):"
1024 PRINT "  (0 - Ende)"
1025 GOSUB 210
1026 IF IN < 49 THEN 950
1027 IF IN > 53 THEN 1020
1028 LET T=IN-48
1029 REM N - Rekursions-/ Verschachtelungstiefe
1030 LET N=T
1031 LET TR=0
1032 LET TS = 0.8/(3^T-1)
1034 GOSUB 600
1035 LET HO=0.1
1036 LET VE=0.9
1037 LET CN=1:GOSUB 620
1038 LET CN=0
1049 REM Hier beginnt die Arbeit
1050 GOSUB 1100
1060 LET HO=0:LET VE=0:LET CN=1
1061 GOSUB 620
1062 LET CN=0
1063 LET SR$="weiter mit <SPACE>"
1064 GOSUB 650
1065 GOSUB 210
1066 IF IN<> 32 THEN 1065
1069 GOTO 1020
1100 REM P -> PFQFP-F- SFRFS+F+ PFQFP
1102 IF N=0 THEN 1199
1103 LET N=N-1
1120 GOSUB 1100  :REM P
1121 GOSUB 10030 :REM F
1122 GOSUB 1200  :REM Q
1123 GOSUB 10030 :REM F
1124 GOSUB 1100  :REM P
1125 GOSUB 10020 :REM -
1126 GOSUB 10030 :REM F
1127 GOSUB 10020 :REM -
1128 GOSUB 1400  :REM S
1129 GOSUB 10030 :REM F
1130 GOSUB 1300  :REM R
1131 GOSUB 10030 :REM F
1132 GOSUB 1400  :REM S
1133 GOSUB 10010 :REM +
1134 GOSUB 10030 :REM F
1135 GOSUB 10010 :REM +
1136 GOSUB 1100  :REM P
1137 GOSUB 10030 :REM F
1138 GOSUB 1200  :REM Q
1139 GOSUB 10030 :REM F
1140 GOSUB 1100  :REM P
1190 LET N=N+1
1199 RETURN
1200 REM Q -> QFPFQ+F+ RFSFR-F- QFPFQ
1202 IF N=0 THEN 1299
1203 LET N=N-1
1220 GOSUB 1200  :REM Q
1221 GOSUB 10030 :REM F
1222 GOSUB 1100  :REM P
1223 GOSUB 10030 :REM F
1224 GOSUB 1200  :REM Q
1225 GOSUB 10010 :REM +
1226 GOSUB 10030 :REM F
1227 GOSUB 10010 :REM +
1228 GOSUB 1300  :REM R
1229 GOSUB 10030 :REM F
1230 GOSUB 1400  :REM S
1231 GOSUB 10030 :REM F
1232 GOSUB 1300  :REM R
1233 GOSUB 10020 :REM -
1234 GOSUB 10030 :REM F
1235 GOSUB 10020 :REM -
1236 GOSUB 1200  :REM Q
1237 GOSUB 10030 :REM F
1238 GOSUB 1100  :REM P
1239 GOSUB 10030 :REM F
1240 GOSUB 1200  :REM Q
1290 LET N=N+1
1299 RETURN
1300 REM R -> RFSFR-F- QFPFQ+F+ RFSFR
1302 IF N=0 THEN 1399
1303 LET N=N-1
1320 GOSUB 1300  :REM R
1321 GOSUB 10030 :REM F
1322 GOSUB 1400  :REM S
1323 GOSUB 10030 :REM F
1324 GOSUB 1300  :REM R
1325 GOSUB 10020 :REM -
1326 GOSUB 10030 :REM F
1327 GOSUB 10020 :REM -
1328 GOSUB 1200  :REM Q
1329 GOSUB 10030 :REM F
1330 GOSUB 1100  :REM P
1331 GOSUB 10030 :REM F
1332 GOSUB 1200  :REM Q
1333 GOSUB 10010 :REM +
1334 GOSUB 10030 :REM F
1335 GOSUB 10010 :REM +
1336 GOSUB 1300  :REM R
1337 GOSUB 10030 :REM F
1338 GOSUB 1400  :REM S
1339 GOSUB 10030 :REM F
1340 GOSUB 1300  :REM R
1390 LET N=N+1
1399 RETURN
1400 REM S -> SFRFS+F+ PFQFP-F- SFRFS
1402 IF N=0 THEN 1499
1403 LET N=N-1
1420 GOSUB 1400  :REM S
1421 GOSUB 10030 :REM F
1422 GOSUB 1300  :REM R
1423 GOSUB 10030 :REM F
1424 GOSUB 1400  :REM S
1425 GOSUB 10010 :REM +
1426 GOSUB 10030 :REM F
1427 GOSUB 10010 :REM +
1428 GOSUB 1100  :REM P
1429 GOSUB 10030 :REM F
1430 GOSUB 1200  :REM Q
1431 GOSUB 10030 :REM F
1432 GOSUB 1100  :REM P
1433 GOSUB 10020 :REM -
1434 GOSUB 10030 :REM F
1435 GOSUB 10020 :REM -
1436 GOSUB 1400  :REM S
1437 GOSUB 10030 :REM F
1438 GOSUB 1300  :REM R
1439 GOSUB 10030 :REM F
1440 GOSUB 1400  :REM S
1490 LET N=N+1
1499 RETURN
10000 REM TR - Turtle Richtung
10001 REM      0-Up 1-Left 2-Down 3-Right
10002 REM TS - Turtle Schrittweite
10010 REM Turtle Left (+)
10011 LET TR = TR+1
10012 IF TR > 3 THEN LET TR = 0
10013 RETURN
10020 REM Turtle Right (-)
10021 LET TR = TR-1
10022 IF TR < 0 THEN LET TR = 3
10023 RETURN
10030 REM Turtle Forward (F)
10032 IF TR=0 THEN LET VE=VE-TS:GOTO10037
10033 IF TR=1 THEN LET HO=HO-TS:GOTO10037
10034 IF TR=2 THEN LET VE=VE+TS:GOTO10037
10035 IF TR=3 THEN LET HO=HO+TS:GOTO10037
10037 GOSUB 630
10039 RETURN
von ein Thüringer
30.10.2023, 15:33
Forum: Spiele
Thema: MazezaM
Antworten: 0
Zugriffe: 224

MazezaM

Dieses Spiel (halb Sokoban, halb Labyrinth) gibt es zwar schon länger, ich habe es aber jetzt erst entdeckt.
das gleiche Spiel auf dem ZX81 ...
das gleiche Spiel auf dem ZX81 ...
ZX81.png (851 Bytes) 224 mal betrachtet
... und etwas farbenfroher auf dem ZX Spectrum - es gibt auch eine Windows-Version
... und etwas farbenfroher auf dem ZX Spectrum - es gibt auch eine Windows-Version
SPECTRUM.png (9.5 KiB) 224 mal betrachtet
Die Spielfigur soll vom Eingang des Labyrinths (links) zum Ausgang (rechts) gelangen. Hierfür lassen sich de Hindernisse zeilenweise hin- und herschieben.
COM-Datei für CP/M mit Steuerbefehlen des<br />Terminals VT52, deswegen leider nicht für die Joyce
COM-Datei für CP/M mit Steuerbefehlen des
Terminals VT52, deswegen leider nicht für die Joyce
cpm4.png (5.41 KiB) 224 mal betrachtet
Manche Level sind sehr knifflig, dann ist die BasiCode-Version von Vorteil: die Zahl der Versuche ist nicht begrenzt und mit "s" kann man zum nächsten Level springen. ;)
die BC-Version in Rob Hagemans'<br />Browser-Bascoder ...
die BC-Version in Rob Hagemans'
Browser-Bascoder ...
MAZE27.png (3.95 KiB) 224 mal betrachtet
Für die Joyce habe ich die BasiCode-Version ein wenig modifiziert.
... und auf der Joyce
... und auf der Joyce
JOYCE.png (1.56 KiB) 224 mal betrachtet


Zuvor muss auf der Joyce der Bascoder gestartet worden sein, aus dem Menü wird diese Datei hinzugeladen.

Code: Alles auswählen

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$<>"q" THEN 1960
1950 GOTO 950
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$="i" OR IN=31) AND W>0 THEN D=W-1
3120 IF (IN$="k" OR IN=30) AND W<N-1 THEN D=W+1
3130 IF (IN$="j" OR IN=28) AND X>0 THEN E=X-1:F=1
3140 IF (IN$="l" OR IN=29) AND X<M-1 THEN E=X+1:F=M
3150 IF (IN$="l" OR IN=29) AND W=Q AND X=M-1 OR IN$="s" THEN 2210
3160 IF IN$="q" THEN 1910
3170 IF IN$="r" 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 CHR$(188);:IF X<M-1 THEN PRINT RIGHT$(J$,M-X-1);
4040 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"
32000 REM Autor: Malcohol (Malcolm Tyrrell) auf GitHub 2020
von ein Thüringer
17.09.2023, 22:25
Forum: Verschiedenes
Thema: JOYCE Klubtreffen 2023 in Wolfhagen
Antworten: 0
Zugriffe: 412

JOYCE Klubtreffen 2023 in Wolfhagen

JOYCE.png
JOYCE.png (30.5 KiB) 417 mal betrachtet
Auch das 33. Klubtreffen ist nun Geschichte: anbei für das PBMREAD-Programm ein paar Schnappschüsse.
KT2023.zip
(333.99 KiB) 62-mal heruntergeladen
von ein Thüringer
26.07.2023, 13:43
Forum: Spiele
Thema: Super-OTHELLO
Antworten: 0
Zugriffe: 2708

Super-OTHELLO

Hier ist eine OTHELLO-Version mit einigen Wahlmöglichkeiten.

Code: Alles auswählen

1 RANDOMIZE (60*PEEK(64503!)+PEEK(64504!)):IF PEEK(&HF000)=&H7E THEN 10
2 GOSUB 957:GOTO 983
10 GOTO 1000:REM BASICODE-3 f}r Amstrad PCW v 1.01
20 GOSUB 100:CLEAR:SV=7:OSETCHAR=&HF000:OSETPOINT=&HF0BA:OPOINT2=&HF256:ODRAW=&HF162:OGETCUR=&HF263:OREADCHAR=&HF277:OFINDCHAR=&HF287
21 HO=39:VE=31:HG=659:VG=247
28 GOTO 1010
100 PRINT CHR$(27)"e"CHR$(27)"c?"CHR$(27)"b"CHR$(0);:WIDTH 255
101 PRINT CHR$(27)"E"CHR$(27)"H";:HO=0:VE=0:GOSUB 952:RETURN
110 HO=MAX(0,HO):HO=MIN(39,HO):VE=MAX(0,VE):VE=MIN(31,VE):PRINT CHR$(27)"Y"CHR$(32+VE)CHR$(32+HO);:RETURN
120 CALL OGETCUR:HO=PEEK(&HF26C):VE=PEEK(&HF26D):RETURN
150 PRINT CHR$(27)"p   ";SR$;"   "CHR$(27)"q";: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 ELSE 210
220 IF ((HO<0) OR (HO>39)) THEN IN=0:RETURN
221 IF ((VE<0) OR (VE>24)) THEN IN=0:RETURN
222 POKE &HF278,VE:POKE &HF27A,HO:CALL OREADCHAR:CALL OFINDCHAR:IN=PEEK(&HF276):CN=-32*((IN>96)AND(IN<127)):IN=IN-CN:RETURN
250 PRINT CHR$(7);:RETURN
260 RV=RND:RETURN
270 FR=FRE(""):RETURN
280 OPTION RUN:IF FR=1 THEN OPTION STOP
281 RETURN
300 SR$=STR$(SR):IF SR>=0 THEN SR$=MID$(SR$,2)
301 RETURN
310 IF CN=0 THEN SR$=DEC$(SR,STRING$(CT,"#")) ELSE SR$=DEC$(SR,STRING$(CT-CN-1,"#")+"."+STRING$(CN,"#"))
311 IF LEFT$(SR$,1)="%" THEN SR$=STRING$(CT,"*")
312 RETURN
330 FOR OF=1 TO LEN(SR$)
331 IF ASC(MID$(SR$,OF,1))>95 THEN GOSUB 340
332 NEXT OF
333 RETURN
340 OSR=ASC(MID$(SR$,OF,1))-32
341 SR$=LEFT$(SR$,OF-1)+CHR$(OSR)+MID$(SR$,OF+1)
342 RETURN
350 LPRINT SR$;:RETURN
360 LPRINT:RETURN
400 IF SV=0 THEN 450
401 IF SD=0 THEN RETURN ELSE OP=SP:ODUUR=SD
402 OP=MAX(SP,11):OP=MIN(SP,112)
403 SD=SD*0.45:ODUUR=MAX(SD,1):ODUUR=MIN(SD,255)
412 OFREQ=880*(2^((OP-69)/12)):OCW=ROUND(400000!/3/OFREQ)-4:OCW=MAX(OCW,1):OCW=MIN(OCW,255)
413 OHLW=0.2*ODUUR*OFREQ:OHLW=MAX(OHLW,1):OHLW=MIN(OHLW,65535!)
415 OADR=&HF404:OLW=OHLW-256*INT(OHLW/256):POKE OADR,(OHLW-OLW)/256:OADR=&HF403:POKE OADR,OLW:OADR=&HF401:POKE OADR,OCW:OADR=&HF400
416 CALL OADR:RETURN
450 OSD=SD*3.45
451 OSD=OSD-1
452 GOSUB 200:IF IN=0 THEN 453 ELSE IF SV<>0 THEN 454
453 IF OSD>0 THEN 451 ELSE 457
454 SD=INT(OSD/3.45)
455 RETURN
457 SD=0:GOTO 455
500 ON NF+1 GOTO 541,541,516,521,516,521,516,521
516 OPEN "I",#2,NF$:INPUT #2,OBESTAND$:IN=0:RETURN
521 PRINT NF$:OPEN "O",#3,NF$:IN=0:RETURN
540 IN$="":IN=1:ON (NF+2)/2 GOTO 541,551,551,551
541 OTX$=CHR$(27)+"p   Arbeit mit Tape am Parallelport au~erhalb Basic mit BCREAD.COM / BCWRIT.COM   "+CHR$(27)+"q":GOSUB 951:RETURN
551 IN$=OBESTAND$:IF EOF(2) THEN 559 ELSE LINE INPUT #2,OBESTAND$
552 IF OBESTAND$<>"" THEN OU$=MID$(OBESTAND$,1,1):IF ASC(OU$)=26 THEN OBESTAND$="":IN=1:RETURN
553 IF EOF(2) THEN 559
554 IN=0:RETURN
559 RETURN
560 IN=1:ON (NF+1)/2 GOTO 561,575,575,574
561 GOSUB 541:RETURN
575 PRINT #3,SR$:IN=0:RETURN
580 ON NF+1 GOTO 541,541,591,593,591,593,591,593
591 CLOSE #2:RETURN     
593 PRINT #3,CHR$(26):PRINT #3,CHR$(26):CLOSE #3:RETURN 
600 PRINT CHR$(27)"f"CHR$(27)"c"CHR$(0)CHR$(27)"b?";:GOSUB 101:RETURN
620 GOSUB 655:OPH%=INT(OHO*HG):OPV%=INT(OVE*VG):OPM%=CN XOR 1:CALL OSETPOINT(OPV%,OPH%,OPM%):CALL OPOINT2(OPV%,OPH%):RETURN
630 GOSUB 655:OPH%=INT(OHO*HG):OPV%=INT(OVE*VG):OPM%=CN XOR 1:CALL ODRAW(OPV%,OPH%,OPM%):CALL OPOINT2(OPV%,OPH%):RETURN
650 GOSUB 655:OVE=MIN(OVE,0.972):OPV%=INT(OVE*VG):FOR OPT%=0 TO LEN(SR$)-1:OPH%=INT(OHO*HG)+OPT%*16:OPH%=MIN(OPH%,652):OPC%=-(CN=0)*ASC(MID$(SR$,OPT%+1,1))-32*(CN=1):CALL OSETCHAR(OPV%,OPH%,OPC%):NEXT OPT%:RETURN
655 OHO=MAX(0,HO):OHO=MIN(OHO,0.998):OVE=MAX(0,VE):OVE=MIN(OVE,0.995):RETURN
950 GOSUB 100:INPUT;"welches BasiCode-Programm laden (ENTER f}r R}ckkehr zu Mallard Basic) : ",IN$:IF IN$<>"" THEN CHAIN MERGE IN$,10,ALL,DELETE 1000-:ELSE CLEAR:PRINT CHR$(27)"E"CHR$(27)"H":END
951 GOSUB 120:OLEN=0.5*(90-LEN(OTX$)):PRINT CHR$(27)"0"CHR$(27)"Y@ ";:PRINT STRING$(OLEN,32);OTX$;:GOSUB 110:WHILE INKEY$="":WEND
952 PRINT CHR$(27)"0"CHR$(27)"Y@             BasiCode-3  f}r  Mallard Basic  auf  Amstrad PCW / Schneider JOYCE      ";:GOSUB 110:RETURN
953 REM Grafik-Routinen aus "SCREENY" von J. Steingr{ber & U. Baumgarten, PCAI 2'88
954 REM Sound-Routine aus "JOYCE COMPOSER" von P.-R. Wolter, PCAI 10'89
955 REM GOSUB 220 nach M. Anton Joyce-Sonderheft 1'87 und Norbert Finke PCAI 6/7'91
956 REM dynamische Berechnung des XBIOS-Vektors nach einem Hinweis von Werner Cirsovius 
1000 A=100:GOTO 20:REM  ** OTHELLO **
1010 DIM F(16,16),I4(14),J4(14),C$(14),D$(3)
1020 HT=HO:VT=VE:CC(0)=5:CC(1)=0:
1030 GOSUB 100:PRINT:SR$="OTHELLO":GOSUB 150
1040 PRINT " wird auf einem quadrat."
1050 PRINT " Brett gespielt, dessen Zeilen von 1-14"
1060 PRINT " und dessen Reihen von A-N bezeichnet"
1070 PRINT " sind. Die Ausgangsstellung ist alle"
1080 PRINT " Felder leer, ausser den mittleren"
1090 PRINT " die eine feste Form haben."
1100 PRINT " Versuche deine Steine so zu plazieren"
1110 PRINT " dass sie meine einschliessen indem sie":
1120 PRINT " eine horizontale, vertikale oder eine"
1130 PRINT " diagonale Linie bilden. Dann werden"
1140 PRINT " alle neu eingeschlossenen Steine in"
1150 PRINT " deine umgewandelt - und umgekehrt"
1160 PRINT " geht es natuerlich auch !"
1170 REM HO=0:VE=VT:GOSUB 110:PRINT "(Taste druecken)";    
1180 REM GOSUB 210:GOSUB 100:PRINT 
1190 PRINT:SR$="Beachte":GOSUB 150
1200 PRINT " Du musst mindestens einen"
1210 PRINT " von meinen Steinen schlagen wenn es"
1220 PRINT " moeglich ist; ansonsten gib fuer"
1230 PRINT " Deinen Zug   0,0   ein.":PRINT 
1240 PRINT "****************************************"
1500 REM *** INITIALISIERUNG ***
1510 D$(1)="X":D$(2)=".":D$(3)="O":SD=40
1520 SR$="Falsche Eingabe"
1530 RESTORE:FOR I=1 TO 14:READ I4(I),J4(I),C$(I):NEXT I
1540 PRINT "  Welche Spielfeldgroesse (3...14) ?":GOSUB 210
1550 IF ((IN<51) OR (IN>90)) THEN GOSUB 150:PRINT:GOTO 1540
1554 IF ((IN>57) AND (IN<86)) THEN IN=86
1556 IF IN>85 THEN IN=IN-28
1560 M=IN-48:G=INT(M/2)+1:V=INT(M/2)+2
1570 FOR I=1 TO 15:FOR J=1 TO 15:F(I,J)=0:NEXT J:NEXT I
1580 F(G,G)=1:F(V,V)=1:F(V,G)=-1:F(G,V)=-1
1590 C1=2:H1=2:N1=4:Z=0:XX=0:YY=0
1600 PRINT:PRINT "  Welche Betriebsart :"
1610 PRINT "    1 = gegen den Computer"
1620 PRINT "    2 = Computer gegen sich selbst"
1630 PRINT "    3 = zwei Spieler gegeneinander"
1640 GOSUB 210:IF ((IN<49) OR (IN>51)) THEN GOSUB 150:GOTO 1600
1650 IF IN=50 THEN XX=1:S2=2:C=1:H=-1:GOSUB 3510:GOTO 2010
1660 IF IN=51 THEN YY=1:C=1:H=-1:GOSUB 3510:GOTO 2510
1670 PRINT:PRINT "Soll ich meine grosse Staerke spielen"
1680 PRINT "   oder nicht (Y/N) ?":GOSUB 210
1690 IF IN=89 THEN S2=2:GOTO 1720
1700 IF IN=78 THEN S2=0:GOTO 1720
1710 GOSUB 150:PRINT:GOTO 1670
1720 PRINT:PRINT "  Willst Du  X oder O  ?":GOSUB 210
1730 IF IN=88 THEN C=1:H=-1:GOTO 1760
1740 IF IN=79 THEN C=-1:H=1:GOTO 1760
1750 GOSUB 150:PRINT:GOTO 1720
1760 PRINT:PRINT "  Willst Du anfangen ? Y/N":GOSUB 210
1770 IF IN=89 THEN GOSUB 3510:GOTO 2510
1780 IF IN=78 THEN GOSUB 3510:GOTO 2010
1790 GOSUB 150:PRINT:GOTO 1760
1800 VE=VT-2:HO=0:CC(0)=5:GOSUB 110:SD=20:GOSUB 450
1810 PRINT "                                     "
1820 REM PRINT "                                    "
1830 PRINT "                                    "
1840 VE=VT-2:GOSUB 110:RETURN
2000 REM *** COMPUTERZUG ***
2010 T1=C:T2=H
2020 B1=-1:I3=0:J3=0:IF ((H1=0) OR (N1=INT(M^2))) THEN 2760
2030 GOSUB 1800
2040 GOSUB 120:CC(0)=4:IF D$(T1+2)="O" THEN CC(0)=2
2042 VE=VE+1:GOSUB 110:PRINT " Bitte warten  '";
2044 PRINT D$(T1+2);
2046 PRINT "'  ist dran":VE=VE-1
2050 FOR I=2 TO M+1
2060 FOR J=2 TO M+1
2070 IF F(I,J)<>0 THEN 2170
2080 GOSUB 2910:IF F1=0 THEN 2170
2090 U=-1:GOSUB 3000
2100 IF S1=0 THEN 2170
2110 IF (I-2)*(I-M+1)=0 THEN S1=S1+S2
2120 IF (J-2)*(J-M+1)=0 THEN S1=S1+S2
2130 IF S1<B1 THEN 2170
2140 IF S1>B1 THEN 2160
2150 GOSUB 260:IF RV<0.5 THEN 2170
2160 B1=S1:I3=I:J3=J
2170 NEXT J
2180 NEXT I
2190 GOSUB 110:IF B1>0 THEN 2230
2200 PRINT "  Ich setze aus !           "
2210 IF Z=1 THEN 2860
2220 Z=1:GOSUB 450:GOTO 2290
2230 Z=0:PRINT " Ich ziehe nach   ";I3-1;", ";C$(J3-1);"    "
2240 I=I3:J=J3:U=1:GOSUB 3000
2250 IF T1=C THEN C1=C1+S1+1:H1=H1-S1
2260 IF T1=H THEN H1=H1+S1+1:C1=C1-S1
2270 N1=N1+1
2280 PRINT " Ich bekomme ";S1+1;" Steine dazu":CC(0)=5
2285 GOSUB 120:GOSUB 110:GOSUB 3520
2290 IF ((XX=1) AND (T1=C)) THEN T1=H:T2=C:GOTO 2020
2300 IF XX=1 THEN 2010
2500 REM *** SPIELERZUG ***
2510 T1=H:T2=C
2520 IF (C1=0) OR (N1=INT(M^2)) THEN 2760
2530 GOSUB 1800
2540 CC(0)=4:IF D$(T1+2)="O" THEN CC(0)=2
2545 GOSUB 120:GOSUB 110
2546 PRINT " Dein Zug (Zeile,Spalte),  ";D$(T1+2);"  ";
2550 GOSUB 210:IF ((IN<48) OR (IN>90)) THEN 2740
2554 IF ((IN>57) AND (IN<86)) THEN IN=86
2556 IF IN>85 THEN IN=IN-28
2560 I=IN-48:PRINT I;", ";:GOSUB 210:IN$=CHR$(IN):PRINT IN$
2570 IF I=0 THEN Z=1:GOTO 2710
2580 Q=1
2590 IF C$(Q)=IN$ THEN 2620
2600 IF Q<M THEN Q=Q+1:GOTO 2590
2610 GOTO 2750
2620 J=Q:I=I+1:J=J+1
2630 IF F(I,J)<>0 THEN 2750
2640 GOSUB 2910:IF F1<>1 THEN 2740
2650 U=-1:GOSUB 3000:IF S1=0 THEN 2740
2660 Z=0:U=1:GOSUB 3000
2670 PRINT " Du bekommst ";S1+1;" Steine dazu"
2675 CC(0)=5:GOSUB 110:
2680 IF T1=H THEN H1=H1+S1+1:C1=C1-S1
2690 IF T1=C THEN C1=C1+S1+1:H1=H1-S1
2700 N1=N1+1:GOSUB 3520
2710 IF ((YY=1) AND (T1=H)) THEN T1=C:T2=H:GOTO 2520
2720 IF YY=1 THEN 2510
2730 GOTO 2010
2740 PRINT:REM fehlerhafte Eingabe
2750 GOSUB 110:GOSUB 150:GOSUB 450:GOTO 2510
2760 IF ((XX=1) OR (YY=1)) THEN 2860
2770 GOSUB 1800:IF H1=C1 THEN PRINT " Unentschieden !"
2780 IF H1<C1 THEN PRINT " Diesmal habe ich gewonnen"
2790 IF H1>C1 THEN PRINT " Du hast gewonnen"
2800 PRINT " Das war ein   ";
2810 IF H1<=INT(M*M*0.9) THEN 2820
2815 PRINT "  Super-Spiel":GOTO 2860
2820 IF H1<=INT(M*M*0.8) THEN 2830
2825 PRINT "  perfektes Spiel ":GOTO 2860
2830 IF H1<=INT(M*M*0.7) THEN 2840
2835 PRINT "  grosser Kampf":GOTO 2860
2840 IF H1<=INT(M*M*0.6) THEN 2850
2845 PRINT "  heisses Spiel":GOTO 2860
2850 PRINT "  Mist - Spiel"
2860 SR$=" Ein neues  Spiel ?   Y/N   "
2870 GOSUB 1800:GOSUB 150:GOSUB 210
2880 IF IN=89 THEN GOSUB 100:GOTO 1510
2890 IF IN=78 THEN 950
2900 PRINT:GOTO 2870
2910 F1=0:FOR I1=-1 TO 1:FOR J1=-1 TO 1
2920 IF F(I+I1,J+J1)=T2 THEN F1=1
2930 NEXT J1:NEXT I1
2940 RETURN
3000 S1=0:FOR K=1 TO 8
3010 I5=I4(K):J5=J4(K):I6=I+I5:J6=J+J5:S3=0
3020 IF F(I6,J6)<>T2 THEN 3120
3030 S3=S3+1:I6=I6+I5:J6=J6+J5
3040 IF F(I6,J6)=T1 THEN 3070
3050 IF F(I6,J6)=0 THEN 3120
3060 GOTO 3030
3070 S1=S1+S3:IF U<>1 THEN 3120
3080 I6=I:J6=J
3090 FOR K1=0 TO S3
3100 F(I6,J6)=T1:I6=I6+I5:J6=J6+J5
3110 NEXT K1
3120 NEXT K
3130 RETURN
3500 REM *** SPIELFELD ***
3510 GOSUB 100
3520 VE=14-M:HO=13-M:GOSUB 110
3530 IF ((XX=1) OR (YY=1)) THEN PRINT "   ";:GOTO 3560
3540 IF S2=0 THEN PRINT "k) ";
3550 IF S2=2 THEN PRINT "g) ";
3560 FOR Q=1 TO M:PRINT C$(Q);" ";:NEXT Q
3570 FOR I=M+1 TO 2 STEP-1:VE=VE+2:HO=13-M:GOSUB 110
3580 SR=I-1:GOSUB 300
3582 IF SR<10 THEN 3586
3584 SR$=CHR$(SR+76)
3586 PRINT " ";SR$;" ";
3590 FOR J=2 TO M+1:T$=D$(F(I,J)+2)
3591 IF ((T$<>"X") AND (T$<>"O")) THEN 3595
3592 CC(0)=2:IF T$="X" THEN CC(0)=4
3593 GOSUB 120:GOSUB 110:PRINT T$;" ";:CC(0)=5
3594 GOSUB 120:GOSUB 110:GOTO 3596
3595 PRINT T$;" ";
3596 NEXT J
3600 PRINT:PRINT:NEXT I
3610 IF ((XX=1) OR (YY=1)) THEN 3630
3620 VE=5:HO=32:GOSUB 110:PRINT "DU  ICH"
3630 VE=7:HO=33:GOSUB 110
3640 IF H<>1 THEN 3650
3645 CC(0)=2:GOSUB 120:GOSUB 110:PRINT "O    ";
3646 CC(0)=4:GOSUB 120
3647 GOSUB 110:PRINT "X":CC(0)=0:GOSUB 110:GOTO 3660
3650 IF H<>-1 THEN 3660
3655 CC(0)=4:GOSUB 120:GOSUB 110:PRINT "X    ";
3656 CC(0)=2:GOSUB 120
3657 GOSUB 110:PRINT "O":CC(0)=5:GOSUB 110
3660 VE=13:HO=31:CC(0)=4:IF C=-1 THEN CC(0)=2
3665 GOSUB 110:SR=H1:CT=3:CN=0:GOSUB 310:PRINT SR$
3666 CC(0)=5:GOSUB 110
3670 HO=36:CC(0)=2:IF C=-1 THEN CC(0)=4
3675 GOSUB 110:SR=C1:GOSUB 310:PRINT SR$
3677 CC(0)=5:GOSUB 110
3680 RETURN
25000 DATA 0,1,"A",-1,1,"B",-1,0,"C",-1,-1,"D"
25010 DATA 0,-1,"E",1,-1,"F",1,0,"G",1,1,"H"
25020 DATA 0,1,"I",-1,1,"J",-1,0,"K",-1,-1,"L"
25030 DATA 0,-1,"M",-1,0,"N"
32000 REM ****************************
32010 REM *                          *
32020 REM *  STRATEGIESPIEL OTHELLO  *
32030 REM * geschrieben auf  KC 85/4 *
32040 REM *                          *
32050 REM *      Wolfgang Pohle      *
32060 REM *     Waldpromenade  3     *
32070 REM *       Erkner  1250       *
32080 REM *                          *
32090 REM *     Stand 02.02.1990     *
32100 REM *                          *
32110 REM ****************************
32120 REM
32130 REM Erstausstrahlung: DS-Kultur
32140 REM -spezial 900725
32200 REM 
32210 REM auf Farbbetrieb abgeaendert,
32220 REM   Spielfeldvergroesserung
32230 REM
32240 REM       Thomas Rademacher
32250 REM      JOYCE-User-AG e. V.
32260 REM
32270 REM           Juli 2023
Das Programm muss aus dem BasiCode-Menü geladen werden, damit die erforderlichen Maschinencode-Routinen initialisiert werden.
Bild_1.jpg
Bild_1.jpg (22.77 KiB) 2689 mal betrachtet
Es bietet die Auswahl zwischen Anzahl der Spieler, zwei unterschiedlichen Spielstärken des Computers bei Option 1
Bild_2.jpg
Bild_2.jpg (60.26 KiB) 2689 mal betrachtet
und Spielfeldgrößen von 3 * 3 bis 14 * 14 (10 ... 14 werden durch V ... Z gewählt).
Bild_3.jpg
Bild_3.jpg (16.82 KiB) 2689 mal betrachtet
Das Ursprungsprogramm http://robhagemans.github.io/basicode/b ... OTHELLO.bc hatte nur ein 8*8-Spielfeld, das ließ auf der Joyce viel freien Platz, was mich verlockte, es für größere Felder umzuschreiben. Natürlich ist es bei einem riesigen Spielfeld sehr langsam, in der CP/M-Box kann das die F11-Taste ausgleichen.
So ein großes Spielfeld (auf einem 8-bit-Computer) ist sonst nur auf dem Robotron KC85 möglich, dort konnte ich auch Farben hineinbringen.
KC85: wie bei Joyce 32 Zeilen - aber Farben
KC85: wie bei Joyce 32 Zeilen - aber Farben
Bild_4.jpg (77.87 KiB) 2689 mal betrachtet
Auf 24-oder 25-Zeilen-Computern sind höchstens 10 * 10 Felder möglich. Rob Hagemans' Browser-Bascoder lässt sich in "Settings" ausreichend groß einstellen. Auch das Tempo (Default 1000 cycles per second, was schon beachtlich ist) lässt sich hier deutlich höher einstellen.
Bild_5.jpg
Bild_5.jpg (139.33 KiB) 2687 mal betrachtet
Viel Spaß damit!
EDIT: 27.VII. 16:48 - bis Spielfeldgröße 14
von ein Thüringer
05.07.2023, 21:12
Forum: Spiele
Thema: KUBUSGER, Fehler korrigiert
Antworten: 1
Zugriffe: 1347

KUBUSGER, jetzt auch ready-to-use für PCW und CPC

Das Programm zum Zauberwürfel enthielt einen weiteren Fehler, Näheres und die korrigierte und erweiterte Fassung in der ZIP-Datei).
KUBGECOL.zip
(30.05 KiB) 129-mal heruntergeladen
OTHELLO: die drei Modi des CPC / KUBUS: zwei Screenshots vom CPC
OTHELLO: die drei Modi des CPC / KUBUS: zwei Screenshots vom CPC
KUBUSC.png (91.21 KiB) 34 mal betrachtet
von ein Thüringer
04.07.2023, 20:21
Forum: Programmierung
Thema: HP-GL Interpreter
Antworten: 48
Zugriffe: 95077

läuft bestens!

Vielen Dank, Bernd!
von ein Thüringer
23.06.2023, 12:11
Forum: Programmierung
Thema: HP-GL Interpreter
Antworten: 48
Zugriffe: 95077

Umwandlungsanleitung

Hier ist eine Anleitung, wie man zum Bild auf dem Joyce-Bildschirm gelangen kann:
MAKE_PBM.pdf
(724.06 KiB) 236-mal heruntergeladen
GIRLS.JPG
GIRLS.JPG (279.58 KiB) 4005 mal betrachtet