1 REM ***************************** 2 REM * MASTMIND.BAC - 16 K Minne * 3 REM * 79-12-15 / VER 2.0 * 4 REM * (c) Alf Wirdling <4230> * 5 REM ***************************** 10 ; CHR$(12);TAB(4);"M A S T E R M I N D - VERSION 2" 20 ; TAB(4);STRING$(31,61) : ; 30 ; "Detta {r MASTERMIND :" : ; 40 ; "Det g{ller att gissa en kod med ett" 50 ; "valbart antal siffror (1-9). Samtliga" 60 ; "siffror {r mellan 1 och 9." : ; 70 ; "Som ledning f}r man reda p} antal siff-" 80 ; "ror som var p} r{tt plats (markerat R)" 90 ; "samt antal siffror som finns i koden" 100 ; "men p} fel plats (markerat F)." : ; 110 ; "Du har 22 f|rs|k p} dig, och tid-" 120 ; "tagning sker. LYCKA TILL !!!" 130 RANDOMIZE 140 ; : ; "ANTAL SIFFROR I KODEN (MAX 9) "; 150 GET R$ : ; R$ : ONERRORGOTO 140 160 N%=VAL(R$) 170 ; : ; "SKALL DE VARA OLIKA (J/N) "; 180 GET R$ : ; R$ 190 IF R$="J" OR R$="j" THEN L%=1% ELSE L%=2% 200 FOR I%=1% TO 9% 210 V%(I%)=0% : NEXT I% 220 FOR I%=1% TO N% 230 T2%=RND*9%+1% 240 ON L% GOTO 250,270 250 IF V%(T2%)=1% THEN 230 260 V%(T2%)=1% 270 T%(I%)=T2% 280 NEXT I% 290 ; : ; "KODEN [R GENERERAD !" 300 FOR I=1 TO 2500 : NEXT I 310 ; CHR$(12); : A%=0% 320 GOSUB 11111 330 FOR R%=0% TO 21% 340 ; CUR(23,0);STRING$(39,32); 350 ; CUR(23,0);"GISSA (";N%;" ) - ELLER NOLL "; 360 INPUTLINE R$ : R$=LEFT$(R$,LEN(R$)-2%) 370 IF R$="0" OR R$="NOLL" OR R$="noll" THEN 520 380 IF LEN(R$)<>N% THEN 340 390 A%=A%+1% 400 FOR I%=1% TO N% 410 G%(I%)=VAL(MID$(R$,I%,1%)) 420 NEXT I% 430 P%=0% : S%=0% 440 FOR I%=1% TO N% 450 FOR J%=1% TO N% 460 IF I%=J% THEN 630 470 IF T%(I%)=G%(J%) THEN P%=P%+1% 480 NEXT J% : NEXT I% 490 ; CUR(R%,0%);R$;" --- R =";S%;" , F =";P%; 500 IF S%=N% THEN 650 510 NEXT R% 520 T$="" : FOR I%=1% TO N% 530 T$=T$+NUM$(T%(I%)) : NEXT I% 540 ; CUR(23,0);STRING$(39,32); 550 ; CUR(23,0);"KODEN VAR :";T$ 560 ; : ; "ANTAL GISSNINGAR =";A% 570 ; : ; "TID "; : GOSUB 22222 580 ; : ; "VILL DU L\SA FLER KODER (J/N) "; 590 GET R$ : ; R$ 600 IF R$="J" OR R$="j" THEN 140 610 ; : ; "TACK F\R IDAG !!!" 620 END 630 IF T%(I%)=G%(J%) THEN S%=S%+1% 640 GOTO 480 650 ; CUR(23,0);STRING$(39,32); 660 ; CUR(23,0);"R[TT GISSAT EFTER";A%;" F\RS\K !" 670 ; : ; "TID "; : GOSUB 22222 680 GOTO 580 11111 REM SUBRUTINEN : SETCLOCK 11112 T1%=65008% 11113 Z=0 : Z1%=0 : Z%= NOT 0 : Z1%= NOT Z1% 11114 POKE 65008%,Z%,Z1%,SWAP%(Z1%) : RETURN 22222 REM SUBRUTINEN : GETCLOCK 22223 D%=0 22224 IF (PEEK(T1%) AND 4%)=0 THEN 22223 22225 FOR O%=0% TO 2% 22226 Z%(O%)=255% XOR PEEK(T1%+O%) : NEXT O% 22227 Z=((Z%(2)*256)+Z%(1))*5.12+Z%(0)/50 22228 IF Z>86400 THEN Z=Z-86400 : D%=D%+1 : GOTO 22228 22229 H%=Z/3600 : Z=Z-3600*H% 22230 M%=Z/60 : S%=Z-60*M% 22231 PRINT RIGHT$(NUM$(100+H%),3);":"; 22232 PRINT RIGHT$(NUM$(100+M%),3);":"; 22233 PRINT RIGHT$(NUM$(100+S%),3) : RETURN