' ' Per Ericsson 2000 ' ' I've translated all text and comments to English ' before uploading the game, but there may still be ' grammar, spelling or choice of word mistakes... ' (well, noone will understand my messy code anyway :) ' ' If you want to ask anything or send me huge amounts ' of money :) etc, send a mail... DECLARE SUB Show (Y%, Which%, M%) DECLARE SUB Pal (C%, R%, G%, B%) DECLARE SUB Mark () CONST P = 3.141593 / 180 'Constant "needed" to draw arcs DIM SHARED SCol%(4) 'Solution peg colors DIM SHARED Col%(4) 'Guess peg colors DIM SHARED A% ' active peg DIM SHARED Black%, White% 'The number of black/white markings DIM SHARED Rad% 'actual row (Swedish rad=row) RANDOMIZE TIMER Init: FOR Foo% = 1 TO 4 SCol%(Foo%) = INT(RND * 6) + 1 Col%(Foo%) = 0 NEXT WIDTH 80, 25 SCREEN 12: CLS Pal 0, 20, 30, 20 Pal 12, 30, 40, 30 Pal 13, 0, 0, 0 Pal 1, 20, 25, 50 Pal 2, 20, 40, 20 Pal 3, 50, 50, 20 Pal 4, 50, 25, 25 Pal 5, 15, 15, 15 Pal 6, 50, 50, 50 COLOR 13 LOCATE 2, 43: PRINT " ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ " COLOR 15 LOCATE , 43: PRINT " ùùù MASTER MIND ùùù " COLOR 13 LOCATE , 43: PRINT " ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ " LOCATE , 43: PRINT " Guess the colors of the hidden " LOCATE , 43: PRINT " pegs! Chose color with keys 1-6. " LOCATE , 43: PRINT " Press Enter to see the result. " LOCATE , 43: PRINT " ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ " LOCATE , 43: PRINT " 1=BLUE 2=GREEN 3=YELLOW " LOCATE , 43: PRINT " 4=RED 5=BLACK 6=WHITE " LOCATE , 43: PRINT " ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ " LOCATE , 43: PRINT " A black MARKING peg means: " LOCATE , 43: PRINT " One peg is in the right color " LOCATE , 43: PRINT " and in the right place. " LOCATE , 43: PRINT LOCATE , 43: PRINT " White marking peg means: " LOCATE , 43: PRINT " One right-colored peg is in " LOCATE , 43: PRINT " the wrong place. " LOCATE , 43: PRINT LOCATE , 43: PRINT " No marking pegs mean: " LOCATE , 43: PRINT " None of the peg colors is right." LOCATE , 43: PRINT " ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ " LOCATE , 43: PRINT " Space : Remove peg " LOCATE , 43: PRINT " Esc : Exit game " LOCATE , 43: PRINT " F10 : Restart game (new pegs) " LOCATE , 43: PRINT " ? : View the solution (" + CHR$(34) + "cheat" + CHR$(34) LOCATE , 43: PRINT " to learn how the marking works) "; COLOR 15 LOCATE 2 FOR Foo% = 1 TO 11 IF Foo% = 1 THEN PRINT " ÚÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄ¿" PRINT " "; PRINT USING "##"; 12 - Foo%; PRINT " ³ ³ ³" IF Foo% < 11 THEN PRINT " ÃÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄ´" IF Foo% = 11 THEN PRINT " ÀÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÙ" NEXT PAINT (100, 70), 12, 15 Black% = 4 White% = 0 Show 11, 2, 0 Black% = 0 A% = 1 Fusk% = 0 Rad% = 1 Main: IF Black% = 4 AND Rad% < 99 THEN COLOR 15 LOCATE 4 IF Fusk% THEN '"Fusk" is Swedish for "Cheat"... LOCATE , 24: PRINT "You made it in" LOCATE , 24: PRINT Rad% - 1; IF Rad% = 2 THEN PRINT "guess!" ELSE PRINT "guesses!" LOCATE , 24: PRINT "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ" LOCATE , 24: PRINT "Now try again " LOCATE , 24: PRINT "without viewing" LOCATE , 24: PRINT "the solution! " Rad% = 99 ELSE LOCATE , 24: PRINT " Well done! " LOCATE , 24: PRINT "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ" LOCATE , 24: PRINT "You made it in" LOCATE , 24: PRINT Rad% - 1; IF Rad% = 2 THEN PRINT "guess!" ELSE PRINT "guesses!" Show 11, 1, 0 Rad% = 99 'So the program takes a break... END IF COLOR 15 LOCATE 24 LOCATE , 43: PRINT " Esc : Exit game " LOCATE , 43: PRINT " F10 : Restart game (new pegs) " END IF IF Rad% = 11 THEN COLOR 15 LOCATE 4 LOCATE , 24: PRINT " To bad! " LOCATE , 24: PRINT "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ" LOCATE , 24: PRINT "This was the " LOCATE , 24: PRINT "correct colors!" Show 11, 1, 0 'Views the correct colors Rad% = 99 END IF A$ = INKEY$ SELECT CASE A$ CASE "?": Show 11, 1, 0: Fusk% = 1 'Show the solution CASE CHR$(0) + "D": GOTO Init 'Restart CASE CHR$(27): CLS : END 'Esc END SELECT IF Rad% < 11 THEN SELECT CASE A$ CASE CHR$(13): Mark CASE "1" TO "6": Col%(A%) = VAL(A$) Show Rad%, 0, 1 CASE " ": Col%(A%) = 0 Show Rad%, 0, 1 CASE CHR$(0) + "M" A% = A% + 1: IF A% > 4 THEN A% = 1 Show Rad%, 0, 1 CASE CHR$(0) + "K" A% = A% - 1: IF A% < 1 THEN A% = 4 Show Rad%, 0, 1 END SELECT END IF GOTO Main SUB Mark DIM Marked%(4), SMarked%(4) 'Kolla s† att alla „r ifyllda: FOR Foo% = 1 TO 4 IF Col%(Foo%) = 0 THEN SOUND 200, 1: EXIT SUB NEXT FOR Foo% = 1 TO 4 Marked%(Foo%) = 0 SMarked%(Foo%) = 0 NEXT Black% = 0: White% = 0 'Kolla svarta FOR Foo% = 1 TO 4 FOR F% = 1 TO 4 IF Col%(Foo%) = SCol%(F%) AND (SMarked%(F%) = 0) AND (Marked%(Foo%) = 0) AND Foo% = F% THEN Marked%(Foo%) = 1 SMarked%(F%) = 1 Black% = Black% + 1 EXIT FOR END IF NEXT NEXT 'Kolla vita FOR Foo% = 1 TO 4 FOR F% = 1 TO 4 IF Col%(Foo%) = SCol%(F%) AND (SMarked%(F%) = 0) AND (Marked%(Foo%)) = 0 THEN Marked%(Foo%) = 1 SMarked%(F%) = 1 White% = White% + 1 EXIT FOR END IF NEXT NEXT Show Rad%, 2, 0 'Markering Show Rad%, 0, 0 'F”r att sudda gulis Rad% = Rad% + 1 FOR Foo% = 1 TO 4 Col%(Foo%) = 0 NEXT A% = 1's† man b”rjar fr†n b”rjan... END SUB SUB Pal (C%, R%, G%, B%) PALETTE C%, R% + G% * 256 + B% * 65536 END SUB SUB Show (Y%, Which%, M%) 'Y%= which row 'Which%= What to show: ' ' 0 the guess ' 1 the solution ' 2 the marking ' 'M%=1 if the yellow circle around the "active" peg should be drawn LOCATE (12 - Y%) * 2, 8 IF Which% = 2 THEN IF Black% + White% = 0 THEN LINE (150, ((13 - Y%) * 2) * 16 - 9)-(160, ((13 - Y%) * 2) * 16 - 9), 13 EXIT SUB END IF Apa% = 0 C% = 5 FOR Foo% = 1 TO Black% GOSUB Rita NEXT C% = 6 FOR Foo% = 1 TO White% GOSUB Rita NEXT EXIT SUB Rita: '"Rita" is Swedish for "draw"... Apa% = Apa% + 1 ' "Apa" is Swedish for "monkey"... don't mind my ' dorky variable names...:) IF Apa% < 3 THEN CIRCLE (Apa% * 11 + 139, ((13 - Y%) * 2) * 16 - 15), 4, 13 CIRCLE (Apa% * 11 + 139, ((13 - Y%) * 2) * 16 - 15), 3, C% PAINT (Apa% * 11 + 139, ((13 - Y%) * 2) * 16 - 15), C% PSET (Apa% * 11 + 139 + 1, ((13 - Y%) * 2) * 16 - 15 - 1), 15 ELSE CIRCLE (Apa% * 11 + 117, ((13 - Y%) * 2) * 16 - 3), 4, 13 CIRCLE (Apa% * 11 + 117, ((13 - Y%) * 2) * 16 - 3), 3, C% PAINT (Apa% * 11 + 117, ((13 - Y%) * 2) * 16 - 3), C% PSET (Apa% * 11 + 117 + 1, ((13 - Y%) * 2) * 16 - 3 - 1), 15 END IF RETURN END IF 'Which%=2 FOR Foo% = 1 TO 4 IF Which% = 1 THEN C% = SCol%(Foo%)'The solution ELSE C% = Col%(Foo%) 'guess END IF IF C% > 0 THEN COLOR C% CIRCLE (Foo% * 20 + 41, ((13 - Y%) * 2) * 16 - 8), 9, 13 PAINT (Foo% * 20 + 41, ((13 - Y%) * 2) * 16 - 8), , 13 'bl„nk: CIRCLE (Foo% * 20 + 41, ((13 - Y%) * 2) * 16 - 8), 7, 15, 0, 90 * P ELSE 'Sudda: LINE (Foo% * 20 + 41 - 10, ((13 - Y%) * 2) * 16 - 8 - 10)-(Foo% * 20 + 41 + 10, ((13 - Y%) * 2) * 16 - 8 + 10), 0, BF END IF NEXT IF Which% = 0 THEN 'erase old circle(s) FOR Foo% = 1 TO 4 CIRCLE (Foo% * 20 + 41, ((13 - Rad%) * 2) * 16 - 8), 10, 0 NEXT 'draw new circle IF M% THEN CIRCLE (A% * 20 + 41, ((13 - Rad%) * 2) * 16 - 8), 10, 14 END IF END SUB