Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
80
Task/Nim-game/ALGOL-M/nim-game.alg
Normal file
80
Task/Nim-game/ALGOL-M/nim-game.alg
Normal file
|
|
@ -0,0 +1,80 @@
|
|||
BEGIN
|
||||
|
||||
PROCEDURE WELCOME;
|
||||
BEGIN
|
||||
WRITE("THE GAME OF NIM");
|
||||
WRITE("");
|
||||
WRITE("WE BEGIN WITH 12 TOKENS. ON EACH TURN, A");
|
||||
WRITE("PLAYER MAY TAKE BETWEEN 1 AND 3 TOKENS.");
|
||||
WRITE("THE PLAYER WHO TAKES THE LAST TOKEN WINS.");
|
||||
WRITE("");
|
||||
END;
|
||||
|
||||
PROCEDURE SHOW(N);
|
||||
INTEGER N;
|
||||
BEGIN
|
||||
WRITE("REMAINING TOKENS:",N);
|
||||
END;
|
||||
|
||||
INTEGER FUNCTION GETNUM(LOWLIM, TOPLIM);
|
||||
INTEGER LOWLIM, TOPLIM;
|
||||
BEGIN
|
||||
INTEGER OK, N;
|
||||
OK := 0;
|
||||
WHILE OK = 0 DO
|
||||
BEGIN
|
||||
WRITE("YOU TAKE:");
|
||||
READ(N);
|
||||
IF N < LOWLIM OR N > TOPLIM THEN
|
||||
BEGIN
|
||||
WRITE("MUST TAKE BETWEEN",LOWLIM," AND",TOPLIM,".");
|
||||
WRITE("TRY AGAIN.");
|
||||
END
|
||||
ELSE
|
||||
OK := 1;
|
||||
END;
|
||||
GETNUM := N;
|
||||
END;
|
||||
|
||||
INTEGER FUNCTION PLAY(PLAYER, TOKENS, TAKEN);
|
||||
INTEGER PLAYER, TOKENS, TAKEN;
|
||||
BEGIN
|
||||
IF PLAYER = 1 THEN % HUMAN PLAYER'S MOVE %
|
||||
TAKEN := GETNUM(1,3)
|
||||
ELSE % MACHINE'S MOVE %
|
||||
TAKEN := 4 - TAKEN;
|
||||
PLAY := TAKEN;
|
||||
END;
|
||||
|
||||
PROCEDURE REPORT(WINNER);
|
||||
INTEGER WINNER; % MACHINE = 0, HUMAN = 1 %
|
||||
BEGIN
|
||||
IF WINNER = 0 THEN
|
||||
WRITE("I TOOK THE LAST ONE, SO I WIN. SORRY ABOUT THAT.")
|
||||
ELSE
|
||||
WRITE("YOU TOOK THE LAST ONE. YOU WIN. CONGRATULATIONS!");
|
||||
END;
|
||||
|
||||
% MAIN CODE BEGINS HERE %
|
||||
|
||||
INTEGER PLAYER, TOKENS, TAKEN, HUMAN, MACHINE;
|
||||
|
||||
MACHINE := 0;
|
||||
HUMAN := 1;
|
||||
TOKENS := 12;
|
||||
TAKEN := 0;
|
||||
PLAYER := HUMAN;
|
||||
WELCOME;
|
||||
WRITE("YOU GO FIRST.");
|
||||
WHILE TOKENS > 0 DO
|
||||
BEGIN
|
||||
SHOW(TOKENS);
|
||||
TAKEN := PLAY(PLAYER, TOKENS, TAKEN);
|
||||
TOKENS := TOKENS - TAKEN;
|
||||
IF PLAYER = MACHINE THEN WRITE("I TOOK:",TAKEN);
|
||||
IF TOKENS > 0 THEN PLAYER := 1 - PLAYER;
|
||||
END;
|
||||
REPORT(PLAYER);
|
||||
WRITE("THANKS FOR PLAYING!");
|
||||
|
||||
END
|
||||
Loading…
Add table
Add a link
Reference in a new issue