r+master_sss.tap
r+master_sss.z80
Zeichensatz UTF-8+Z1013()+CTRL()-ohne Umlaute(äöüß)

   10! Programm: R+MASTER  VERSION 1
   20 A1$="HEIMCOMPUTER robotron Z9001"
   30 A2$="SPIEL":A9=2:A3$="R+MASTER"
   50 A4$="MASTER MIND"
   60 A5$="RATEN EINER ZIFFERNFOLGE"
   70 WINDOW:BORDER A9:INK 8:PAPER 1:CLS
   80 PRINT INK 1;AT(0,0);" "
   90 PRINT AT(2,2);A1$:PRINT AT(4,2);"",STRING$(34,""),""
  100 PRINT AT(5,2);"":PRINT AT(5,37);""
  110 PRINT AT(6,2);"",STRING$(34,""),"":IF A<>0 THEN 250
  120 PRINT AT(5,3);A2$:PRINT INK 3;AT(5,29);A3$
  130 INK A9:PRINT AT(8,2);STRING$(36,"")
  140 FOR I=9 TO 13:PRINT AT(I,2);"":PRINT AT(I,37);"":NEXT I
  150 PRINT AT(14,2);STRING$(36,"")
  160 INK 8:PRINT AT(10,36-LEN(A4$));A4$:PRINT AT(12,36-LEN(A5$));A5$
  170 PRINT INK 3;AT(18,2);"VEB ROBOTRON-MESSELEKTRONIK"
  180 PRINT INK 3;AT(19,8);">OTTO SCHOEN< DRESDEN":GOSUB 1140
  190 INK 3:PRINT AT(19,2);"ERLAEUTERUNGEN:   (J)/N    "
  200 PRINT AT(18,2);STRING$(27," ")
  210 PRINT INK 4;AT(22,31);">ENTER<":WINDOW 19,19,30,36:JN$="J":INPUT "";JN$
  220 WINDOW:INK 8:IF JN$="J"THEN GOSUB 1180
  230 WINDOW:BORDER 1:PAPER 1:INK 2:CLS:PRINT INK 1;AT(0,0);" ":ZN=6:AN=5:ZI=7:A=1
  240 A1$="":GOTO 90
  250 PRINT INK 4;AT(5,16);"AUSWAHL":INK 3
  260 PRINT AT(9,4);"LAENGE DER ZIFFERNFOLGE ?"
  270 WINDOW 9,9,32,39:PRINT AT(10,4);"(Wert zwischen 1 und 10)"
  280 INPUT "";AN:IF AN<1 OR AN>10 THEN 280
  290 PRINT AT(9,32);AN:PRINT AT(13,4);"ZIFFERN ?     zwischen 0 und"
  300 WINDOW 13,13,32,39:PRINT AT(14,4);"(Wert zwischen 1 und 9)"
  310 INPUT "";ZI:IF ZI<1 OR ZI>9 THEN 310
  320 PRINT AT(13,32);ZI
  330 F1$="nur Schwierigkeitsstufe ":F2$=" moeglich"
  340 IF AN=1 THEN A=1:WINDOW:PRINT INK 1;AT(0,0);" "
  350 IF AN=1 THEN PRINT INK 2;AT(17,4);F1$,"1",F2$:GOSUB 1140:GOTO 470
  360 IF ZI<AN-1 THEN A=2:WINDOW:PRINT INK 1;AT(0,0);" "
  370 IF ZI<AN-1 THEN PRINT INK 2;AT(17,4);F1$,"2",F2$:GOSUB 1140:GOTO 450
  380 PRINT AT(17,4);"SCHWIERIGKEITSSTUFE:":WINDOW 17,17,32,39
  390 F1$=" Wiederholung":PRINT AT(18,4);"(1) ohne",F1$," von Ziffern"
  400 PRINT AT(19,5);"2  auch",F1$,"en moeglich"
  410 INPUT "";A:IF A<>1 AND A<>2 THEN 410
  420 PRINT AT(17,32);A:PAUSE 10
  430 WINDOW:PRINT INK 1;AT(0,0);" " 
  440 IF A=2 THEN GOTO 450:ELSE 470
  450 FOR I=1 TO AN:GOSUB 460:VO(I)=ZU:NEXT:GOTO 510
  460 ZU=INT(RND(10)*10):IF ZU>ZI OR ZU<0 THEN 460:ELSE RETURN
  470 FOR I=1 TO AN:VO(I)=20:NEXT
  480 FOR K=1 TO AN
  490 GOSUB 460:FOR I=1 TO K-1:IF ZU=VO(I)THEN 490
  500 NEXT I:VO(K)=ZU:NEXT K
  510 BORDER 1:PAPER 1:INK 3:CLS:PRINT TAB(7);"Vorschlag ?";TAB(20);"richtig"
  520 PRINT:PRINT TAB(2);"erlaubte Ziffern";TAB(20);"Ziffer und Stelle"
  530 PRINT AT(2,38);CHR$(201)
  540 Z1$="":FOR I=0 TO ZI:Z1$=Z1$+MID$(STR$(I),2,1):NEXT
  550 PRINT SPC(18-LEN(Z1$));Z1$;
  560 PRINT TAB(20);"Ziffer":PRINT INK 8;AT(3,38);CHR$(138)
  570 Z1$=STRING$(7,CHR$(160))
  580 PRINT:PRINT " ";Z1$;" Schwierigkeitsstufe";A;Z1$;CHR$(160)
  590 Z=0:WINDOW 7,23,17-AN,39
  600 IF ZN<22 THEN ZN=ZN+1:PRINT AT(ZN,18);CHR$(161):ELSE PRINT AT(23,18);CHR$(161)
  610 ST$="":INPUT "";ST$
  620 L=LEN(ST$):IF L<2 THEN 650
  630 FOR IL=L TO 2 STEP-1:IF MID$(ST$,IL,1)=" "THEN L=IL-1:ELSE 650
  640 NEXT
  650 ST$=LEFT$(ST$,L):IF ST$="A"GOTO 740
  660 F1$="Laenge ist"
  670 IF LEN(ST$)<>AN THEN PRINT INK 2;AT(ZN,20);F1$,AN,"!":GOSUB 1130:GOTO 600
  680 FOR I=1 TO AN:X$=MID$(ST$,I,1)
  690 IF ASC(X$)>47 AND ASC(X$)<58 GOTO 710<<TOKEN:1c>><<TOKEN:1c>>
  700 PRINT INK 2;AT(ZN,20);"Nur Zahlen eingeben!":GOSUB 1130:GOTO 600
  710 ST(I)=VAL(X$):F1$="nur Ziffern <="
  720 IF ST(I)>ZI THEN PRINT INK 2;AT(ZN,20);F1$,ZI,"!":GOSUB 1130:GOTO 600
  730 NEXT:GOTO 770
  740 PRINT AT(ZN,18);" ":PRINT:INK 2
  750 PRINT " ";:FOR I=1 TO AN:PRINT MID$(STR$(VO(I)),2,1);:NEXT:INK 1:PRINT "  "
  760 WINDOW:PRINT INK 1;AT(0,0);" ":GOSUB 1140:INK 3:PAPER 1:CLS:GOTO 1120
  770 X=0:Y=0:Z=Z+1
  780 FOR I=1 TO AN:TE(I)=VO(I):NEXT
  790 FOR I=1 TO AN:IF TE(I)=ST(I)THEN 810
  800 NEXT:GOTO 820
  810 X=X+1:TE(I)=20:ST(I)=30:GOTO 800
  820 FOR I=1 TO AN:FOR J=1 TO AN
  830 IF TE(I)=ST(J)THEN 850
  840 NEXT J,I:GOTO 860
  850 Y=Y+1:TE(I)=20:ST(J)=30:GOTO 840
  860 IF X=AN THEN 920
  870 Z1$=STRING$(X,CHR$(201))
  880 Z2$=STRING$(Y,CHR$(138))
  890 PRINT AT(ZN,18-AN);ST$,STRING$(20," ")
  900 PRINT INK 3;AT(ZN,20);Z1$
  910 PRINT INK 8;AT(ZN,20+LEN(Z1$));Z2$:GOTO 600
  920 PRINT AT(ZN,18-AN);ST$,"  ":WINDOW:PRINT INK 1;AT(0,0);" "
  930 FOR I=1 TO 3:PRINT AT(ZN,20);"        "
  940 PAUSE 5:PRINT INK 4;AT(ZN,20);"richtig":PAUSE 5:NEXT
  950 GOSUB 1140
  960 INK 3:CLS:PRINT INK 1;AT(0,0);" ":IF AN=1 THEN 1110
  970 IF Z=1 THEN PRINT AT(5,6);"SIE HABEN MEHR GLUECK":PRINT AT(7,6);"ALS VERSTAND.
  980 IF Z=1 THEN GOTO 1050
  990 PRINT AT(5,6);"SIE HABEN DIE LOESUNG MIT"
 1000 PRINT AT(7,5);Z,"VERSUCHEN GEFUNDEN."
 1010 IF A=1 THEN FA=0.8:ELSE FA=1.3
 1020 FA=FA*AN*ZI/8
 1030 IF Z<FA THEN PRINT INK 4;AT(10,6);"SIE SIND SUPER!":GOTO 1050
 1040 IF Z<2.5*FA THEN PRINT AT(10,6);"SIE SIND GUT."
 1050 WINDOW 22,22,6,39:JN$="J"
 1060 INPUT "NOCH EIN SPIEL:    (J)/N      ";JN$:IF JN$<>"J"AND JN$<>"N"THEN 1060
 1070 IF JN$="J"THEN 230
 1080 PAPER 1:WINDOW:CLS
 1090 PRINT INK 4;AT(11,11);"AUF WIEDERSEHEN !":PRINT INK 1;AT(0,0);" "
 1100 PAUSE 20:CLS:INK 3:END
 1110 PRINT AT(7,6);"SIE MACHEN ES SICH ZU EINFACH !":GOTO 1050
 1120 PRINT AT(7,6);"UEBEN! UEBEN! UEBEN!":GOTO 1050
 1130 PAUSE 20:PRINT AT(ZN,0);STRING$(40," "):RETURN
 1140 IF A=3 THEN PO=18:ELSE PO=22
 1150 PRINT INK 4;AT(PO,31);">ENTER<"
 1160 T$=INKEY$:IF T$=""THEN ZU=RND(10):GOTO 1160
 1170 RETURN
 1180 WINDOW:CLS:WINDOW 4,19,0,39:BORDER 1:PAPER 1:INK 3:OUT 136,4
 1190 PRINT "Ihre Loesungsvorschlaege werden be-"
 1200 PRINT "wertet. Die Anzahl der  ist gleich"
 1210 PRINT "der Anzahl der Ziffern, die an der" 
 1220 PRINT "richtigen Stelle und am richtigen Platz"
 1230 PRINT "stehen, die der  gleich der Anzahl der"
 1240 PRINT "Ziffern, die in der Folge auftreten," 
 1250 PRINT "aber nicht an der richtigen Stelle ste-"
 1260 PRINT "hen. Bei Eingabe von A wird die zu er-"
 1270 PRINT "mittelnde Zahl ausgegeben.":PRINT INK 8;AT(8,16);""
 1280 A=3:WINDOW:PRINT INK 1;AT(0,0);" ":GOSUB 1140:OUT 136,0:CLS:RETURN