00000000: 00 40 28 2A 20 27 C7 55 45 53 53 20 54 48 45 20 |.@(* '.UESS THE |
00000010: 4E 55 4D 42 45 52 53 27 20 47 41 4D 45 0D 10 83 |NUMBERS' GAME...|
00000020: C1 55 54 48 4F 52 3A 20 CE 49 43 4B 20 C7 41 4D |.UTHOR: .ICK .AM|
00000030: 4D 4F 4E 0D 10 83 9A C3 4F 4D 4D 4F 44 4F 52 45 |MON.....OMMODORE|
00000040: 20 36 34 20 C7 2D D0 41 53 43 41 4C 20 2A 29 0D | 64 .-.ASCAL *).|
00000050: 0D 82 0D 10 85 54 52 55 45 20 3D 20 31 3B 0D 10 |.....TRUE = 1;..|
00000060: 85 46 41 4C 53 45 20 3D 20 30 3B 0D 10 85 43 52 |.FALSE = 0;...CR|
00000070: 20 3D 20 31 33 3B 0D 10 85 48 4F 4D 45 20 3D 20 | = 13;...HOME = |
00000080: 31 34 37 3B 0D 10 85 4E 55 4D 44 49 47 49 54 53 |147;...NUMDIGITS|
00000090: 20 3D 20 34 3B 0D 10 85 4C 41 52 47 45 53 54 44 | = 4;...LARGESTD|
000000A0: 49 47 49 54 20 3D 20 39 3B 0D 0D 83 43 48 20 3A |IGIT = 9;...CH :|
000000B0: 20 A1 3B 0D 10 84 4E 55 4D 42 45 52 20 3A 20 84 | .;...NUMBER : .|
000000C0: 5B 4E 55 4D 44 49 47 49 54 53 5D 0D 10 8D 85 A1 |[NUMDIGITS].....|
000000D0: 3B 0D 10 84 4E 55 4D 42 45 52 5F 42 4C 41 43 4B |;...NUMBER_BLACK|
000000E0: 2C 0D 10 84 4E 55 4D 42 45 52 5F 57 48 49 54 45 |,...NUMBER_WHITE|
000000F0: 2C 0D 10 84 47 55 45 53 53 45 53 20 3A 20 FE 3B |,...GUESSES : .;|
00000100: 0D 0D 86 49 4E 49 54 49 41 4C 49 5A 45 3B 0D 28 |...INITIALIZE;.(|
00000110: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |****************|
00000120: 2A 2A 2A 29 0D 82 46 52 45 51 55 45 4E 43 59 20 |***)..FREQUENCY |
00000130: 3D 20 31 3B 0D 10 86 4E 4F 49 53 45 20 3D 20 31 |= 1;...NOISE = 1|
00000140: 34 3B 0D 88 0D 10 82 E1 28 33 2C 20 4E 4F 49 53 |4;......(3, NOIS|
00000150: 45 2C 20 54 52 55 45 2C 0D 10 89 33 2C 20 46 52 |E, TRUE,...3, FR|
00000160: 45 51 55 45 4E 43 59 2C 20 35 30 30 30 30 29 0D |EQUENCY, 50000).|
00000170: 89 3B 20 28 2A 20 49 4E 49 54 49 41 4C 49 5A 45 |.; (* INITIALIZE|
00000180: 20 2A 29 0D 0D 86 43 52 45 41 54 45 5F 4E 55 4D | *)...CREATE_NUM|
00000190: 42 45 52 3B 0D 28 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A |BER;.(**********|
000001A0: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 29 0D 83 49 20 |***********)..I |
000001B0: 3A 20 FE 3B 0D 88 0D 10 82 9A 49 20 3A 3D 20 31 |: .;......I := 1|
000001C0: 20 9B 4E 55 4D 44 49 47 49 54 53 20 97 0D 10 84 | .NUMDIGITS ....|
000001D0: 4E 55 4D 42 45 52 20 5B 49 5D 20 3A 3D 20 22 30 |NUMBER [I] := "0|
000001E0: 22 20 2B 0D 10 90 EF 8C 0D 10 90 28 4C 41 52 47 |" +........(LARG|
000001F0: 45 53 54 44 49 47 49 54 20 2B 20 31 29 0D 89 3B |ESTDIGIT + 1)..;|
00000200: 20 28 2A 20 43 52 45 41 54 45 5F 4E 55 4D 42 45 | (* CREATE_NUMBE|
00000210: 52 20 2A 29 0D 0D 86 50 4C 41 59 3B 0D 28 2A 2A |R *)...PLAY;.(**|
00000220: 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 29 0D 83 55 53 |***********)..US|
00000230: 45 52 20 3A 20 84 5B 4E 55 4D 44 49 47 49 54 53 |ER : .[NUMDIGITS|
00000240: 5D 0D 10 8B 85 A1 3B 0D 10 84 4E 4F 54 42 41 44 |].....;...NOTBAD|
00000250: 2C 0D 10 84 49 2C 0D 10 84 4A 20 3A 20 FE 3B 0D |,...I,...J : .;.|
00000260: 10 84 55 53 45 44 20 3A 20 84 5B 4E 55 4D 44 49 |..USED : .[NUMDI|
00000270: 47 49 54 53 5D 0D 10 8B 85 FE 3B 0D 88 0D 10 82 |GITS].....;.....|
00000280: 4E 55 4D 42 45 52 5F 57 48 49 54 45 20 3A 3D 20 |NUMBER_WHITE := |
00000290: 30 3B 0D 10 82 4E 55 4D 42 45 52 5F 42 4C 41 43 |0;...NUMBER_BLAC|
000002A0: 4B 20 3A 3D 20 30 3B 0D 10 82 9D 28 22 D9 4F 55 |K := 0;....(".OU|
000002B0: 52 20 47 55 45 53 53 3F 20 22 29 3B 0D 10 82 9E |R GUESS? ");....|
000002C0: 28 55 53 45 52 29 3B 0D 10 82 4E 4F 54 42 41 44 |(USER);...NOTBAD|
000002D0: 20 3A 3D 20 55 53 45 52 20 5B 4E 55 4D 44 49 47 | := USER [NUMDIG|
000002E0: 49 54 53 5D 20 3D 20 43 52 3B 0D 10 82 49 20 3A |ITS] = CR;...I :|
000002F0: 3D 20 30 3B 0D 10 82 96 4E 4F 54 42 41 44 20 8D |= 0;....NOTBAD .|
00000300: 28 49 20 3C 20 4E 55 4D 44 49 47 49 54 53 29 20 |(I < NUMDIGITS) |
00000310: 97 0D 10 84 88 0D 10 84 4E 4F 54 42 41 44 20 3A |........NOTBAD :|
00000320: 3D 20 28 55 53 45 52 20 5B 49 5D 20 3E 3D 20 22 |= (USER [I] >= "|
00000330: 30 22 29 20 8D 0D 10 8E 28 55 53 45 52 20 5B 49 |0") ....(USER [I|
00000340: 5D 20 3C 3D 20 22 30 22 20 2B 0D 10 8F 4C 41 52 |] <= "0" +...LAR|
00000350: 47 45 53 54 44 49 47 49 54 29 3B 0D 10 84 49 20 |GESTDIGIT);...I |
00000360: 3A 3D 20 49 20 2B 20 31 0D 10 84 89 3B 0D 10 82 |:= I + 1....;...|
00000370: 92 90 4E 4F 54 42 41 44 20 93 0D 10 84 88 0D 10 |..NOTBAD .......|
00000380: 84 FF 28 22 C9 4C 4C 45 47 41 4C 20 49 4E 50 55 |..(".LLEGAL INPU|
00000390: 54 2C 20 54 52 59 20 41 47 41 49 4E 22 29 3B 0D |T, TRY AGAIN");.|
000003A0: 10 84 50 4C 41 59 0D 10 84 89 0D 10 82 94 0D 10 |..PLAY..........|
000003B0: 84 88 0D 10 84 9A 49 20 3A 3D 20 31 20 9B 4E 55 |......I := 1 .NU|
000003C0: 4D 44 49 47 49 54 53 20 97 0D 10 86 88 0D 10 86 |MDIGITS ........|
000003D0: 92 4E 55 4D 42 45 52 20 5B 49 5D 20 3D 20 55 53 |.NUMBER [I] = US|
000003E0: 45 52 20 5B 49 20 2D 20 31 5D 20 93 0D 10 88 88 |ER [I - 1] .....|
000003F0: 0D 10 88 4E 55 4D 42 45 52 5F 57 48 49 54 45 20 |...NUMBER_WHITE |
00000400: 3A 3D 20 4E 55 4D 42 45 52 5F 57 48 49 54 45 20 |:= NUMBER_WHITE |
00000410: 2B 20 31 3B 0D 10 88 55 53 45 44 20 5B 49 5D 20 |+ 1;...USED [I] |
00000420: 3A 3D 20 54 52 55 45 0D 10 88 89 0D 10 86 94 0D |:= TRUE.........|
00000430: 10 88 55 53 45 44 20 5B 49 5D 20 3A 3D 20 46 41 |..USED [I] := FA|
00000440: 4C 53 45 0D 10 86 89 3B 0D 10 84 9A 49 20 3A 3D |LSE....;....I :=|
00000450: 20 31 20 9B 4E 55 4D 44 49 47 49 54 53 20 97 0D | 1 .NUMDIGITS ..|
00000460: 10 86 88 0D 10 86 4A 20 3A 3D 20 31 3B 0D 10 86 |......J := 1;...|
00000470: 96 4A 20 3C 3D 20 4E 55 4D 44 49 47 49 54 53 20 |.J <= NUMDIGITS |
00000480: 97 0D 10 88 88 0D 10 88 92 28 55 53 45 52 20 5B |.........(USER [|
00000490: 49 20 2D 20 31 5D 20 3D 20 4E 55 4D 42 45 52 20 |I - 1] = NUMBER |
000004A0: 5B 4A 5D 29 0D 10 88 8D 28 49 20 3C 3E 20 4A 29 |[J])....(I <> J)|
000004B0: 0D 10 88 8D 90 55 53 45 44 20 5B 4A 5D 20 93 0D |.....USED [J] ..|
000004C0: 10 8A 88 0D 10 8A 4E 55 4D 42 45 52 5F 42 4C 41 |......NUMBER_BLA|
000004D0: 43 4B 20 3A 3D 20 4E 55 4D 42 45 52 5F 42 4C 41 |CK := NUMBER_BLA|
000004E0: 43 4B 20 2B 20 31 3B 0D 10 8A 55 53 45 44 20 5B |CK + 1;...USED [|
000004F0: 4A 5D 20 3A 3D 20 54 52 55 45 3B 0D 10 8A 4A 20 |J] := TRUE;...J |
00000500: 3A 3D 20 4E 55 4D 44 49 47 49 54 53 0D 10 8A 89 |:= NUMDIGITS....|
00000510: 3B 0D 10 88 4A 20 3A 3D 20 4A 20 2B 20 31 0D 10 |;...J := J + 1..|
00000520: 88 89 0D 10 86 89 0D 10 84 89 0D 89 3B 20 28 2A |............; (*|
00000530: 20 50 4C 41 59 20 2A 29 0D 0D 88 20 28 2A 20 4D | PLAY *)... (* M|
00000540: 41 49 4E 20 50 52 4F 47 52 41 4D 20 2A 29 0D 10 |AIN PROGRAM *)..|
00000550: 82 49 4E 49 54 49 41 4C 49 5A 45 3B 0D 10 82 98 |.INITIALIZE;....|
00000560: 0D 10 84 9D 28 AB 28 48 4F 4D 45 29 29 3B 0D 10 |....(.(HOME));..|
00000570: 84 43 52 45 41 54 45 5F 4E 55 4D 42 45 52 3B 0D |.CREATE_NUMBER;.|
00000580: 10 84 4E 55 4D 42 45 52 5F 57 48 49 54 45 20 3A |..NUMBER_WHITE :|
00000590: 3D 20 30 3B 0D 10 84 47 55 45 53 53 45 53 20 3A |= 0;...GUESSES :|
000005A0: 3D 20 30 3B 0D 10 84 96 4E 55 4D 42 45 52 5F 57 |= 0;....NUMBER_W|
000005B0: 48 49 54 45 20 3C 3E 20 4E 55 4D 44 49 47 49 54 |HITE <> NUMDIGIT|
000005C0: 53 20 97 0D 10 86 88 0D 10 86 50 4C 41 59 3B 0D |S ........PLAY;.|
000005D0: 10 86 FF 28 4E 55 4D 42 45 52 5F 57 48 49 54 45 |...(NUMBER_WHITE|
000005E0: 2C 20 22 20 57 48 49 54 45 2C 20 22 2C 0D 10 8F |, " WHITE, ",...|
000005F0: 4E 55 4D 42 45 52 5F 42 4C 41 43 4B 2C 20 22 20 |NUMBER_BLACK, " |
00000600: 42 4C 41 43 4B 2E 22 29 3B 0D 10 86 47 55 45 53 |BLACK.");...GUES|
00000610: 53 45 53 20 3A 3D 20 47 55 45 53 53 45 53 20 2B |SES := GUESSES +|
00000620: 20 31 3B 0D 10 86 89 3B 0D 10 84 FF 3B 0D 10 84 | 1;....;....;...|
00000630: FF 28 22 C3 4F 52 52 45 43 54 21 22 29 3B 0D 10 |.(".ORRECT!");..|
00000640: 84 FF 28 22 D9 4F 55 20 54 4F 4F 4B 20 22 2C 47 |..(".OU TOOK ",G|
00000650: 55 45 53 53 45 53 2C 0D 10 8D 22 20 47 55 45 53 |UESSES,..." GUES|
00000660: 53 45 53 2E 22 29 3B 0D 10 84 FF 3B 0D 10 84 9D |SES.");....;....|
00000670: 28 22 D4 52 59 20 41 47 41 49 4E 3F 20 22 29 3B |(".RY AGAIN? ");|
00000680: 0D 10 84 9E 28 43 48 29 0D 10 82 99 43 48 20 3C |....(CH)....CH <|
00000690: 3E 20 22 59 22 0D 89 2E 20 28 2A 20 4D 41 49 4E |> "Y"... (* MAIN|
000006A0: 20 50 52 4F 47 52 41 4D 20 2A 29 0D 00 | PROGRAM *).. |
.@(* 'GUESS THE NUMBERS' GAME...AUTHOR:
NICK GAMMON....COMMODORE 64 G-PASCAL *).
.....TRUE = 1;...FALSE = 0;...CR = 13;..
.HOME = 147;...NUMDIGITS = 4;...LARGESTD
IGIT = 9;...CH : .;...NUMBER : .[NUMDIGI
TS].....;...NUMBER_BLACK,...NUMBER_WHITE
,...GUESSES : .;...INITIALIZE;.(********
***********)..FREQUENCY = 1;...NOISE = 1
4;......(3, NOISE, TRUE,...3, FREQUENCY,
50000)..; (* INITIALIZE *)...CREATE_NUM
BER;.(*********************)..I : .;....
..I := 1 .NUMDIGITS ....NUMBER [I] := "0
" +........(LARGESTDIGIT + 1)..; (* CREA
TE_NUMBER *)...PLAY;.(*************)..US
ER : .[NUMDIGITS].....;...NOTBAD,...I,..
.J : .;...USED : .[NUMDIGITS].....;.....
NUMBER_WHITE := 0;...NUMBER_BLACK := 0;.
...("YOUR GUESS? ");....(USER);...NOTBAD
:= USER [NUMDIGITS] = CR;...I := 0;....
NOTBAD .(I < NUMDIGITS) ........NOTBAD :
= (USER [I] >= "0") ....(USER [I] <= "0"
+...LARGESTDIGIT);...I := I + 1....;...
..NOTBAD .........("ILLEGAL INPUT, TRY A
GAIN");...PLAY................I := 1 .NU
MDIGITS .........NUMBER [I] = USER [I -
1] ........NUMBER_WHITE := NUMBER_WHITE
+ 1;...USED [I] := TRUE...........USED [
I] := FALSE....;....I := 1 .NUMDIGITS ..
......J := 1;....J <= NUMDIGITS ........
.(USER [I - 1] = NUMBER [J])....(I <> J)
.....USED [J] ........NUMBER_BLACK := NU
MBER_BLACK + 1;...USED [J] := TRUE;...J
:= NUMDIGITS....;...J := J + 1..........
....; (* PLAY *)... (* MAIN PROGRAM *)..
.INITIALIZE;........(.(HOME));...CREATE_
NUMBER;...NUMBER_WHITE := 0;...GUESSES :
= 0;....NUMBER_WHITE <> NUMDIGITS ......
..PLAY;....(NUMBER_WHITE, " WHITE, ",...
NUMBER_BLACK, " BLACK.");...GUESSES := G
UESSES + 1;....;....;....("CORRECT!");..
..("YOU TOOK ",GUESSES,..." GUESSES.");.
...;....("TRY AGAIN? ");....(CH)....CH <
> "Y"... (* MAIN PROGRAM *)..
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL