hilo.mod 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. (* $Source$
  2. * $State$
  3. * $Revision$
  4. *)
  5. MODULE HiLo;
  6. FROM InOut IMPORT WriteInt, WriteLn, WriteString, ReadString, ReadInt;
  7. FROM random IMPORT Uniform;
  8. VAR
  9. buffer : ARRAY [0..32] OF CHAR;
  10. PROCEDURE reads;
  11. BEGIN
  12. WriteString("> ");
  13. ReadString(buffer);
  14. END reads;
  15. PROCEDURE game;
  16. VAR
  17. Number : INTEGER;
  18. Attempts : INTEGER;
  19. guess : INTEGER;
  20. finished : BOOLEAN;
  21. BEGIN
  22. WriteString("See if you can guess my number.");
  23. WriteLn;
  24. Number := Uniform(0, 99);
  25. Attempts := 1;
  26. finished := FALSE;
  27. WHILE NOT finished DO
  28. WriteLn;
  29. WriteString("> ");
  30. ReadInt(guess);
  31. IF guess = Number THEN
  32. WriteLn;
  33. WriteString("You got it right in only ");
  34. WriteInt(Attempts, 0);
  35. WriteString(" ");
  36. IF Attempts = 1 THEN
  37. WriteString("go");
  38. ELSE
  39. WriteString("goes");
  40. END;
  41. WriteString("!");
  42. WriteLn;
  43. finished := TRUE;
  44. ELSIF guess < Number THEN
  45. WriteLn;
  46. WriteString("Try a bit higher.");
  47. WriteLn;
  48. ELSIF guess > Number THEN
  49. WriteLn;
  50. WriteString("Try a bit lower.");
  51. WriteLn;
  52. END;
  53. Attempts := Attempts + 1;
  54. END;
  55. END game;
  56. VAR
  57. finished : BOOLEAN;
  58. BEGIN
  59. WriteLn;
  60. WriteString("Hi there! I'm written in Modula-2. Before we start, what is your name?");
  61. WriteLn;
  62. reads;
  63. WriteLn;
  64. WriteString("Hello, ");
  65. WriteString(buffer);
  66. WriteString("! ");
  67. finished := FALSE;
  68. WHILE NOT finished DO
  69. game;
  70. WriteLn;
  71. WriteString("Would you like another go?");
  72. WriteLn;
  73. reads;
  74. IF (buffer[0] = 'n') OR (buffer[0] = 'N') THEN
  75. finished := TRUE;
  76. WriteLn;
  77. WriteString("Thanks for playing --- goodbye!");
  78. WriteLn;
  79. ELSE
  80. WriteLn;
  81. WriteString("Excellent! ");
  82. END;
  83. END;
  84. END HiLo.