home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume3 / vms-hangman / part02 < prev    next >
Encoding:
Internet Message Format  |  1989-02-03  |  2.6 KB

  1. Path: xanth!mcnc!rutgers!mit-eddie!husc6!spdcc!ima!necntc!ncoast!allbery
  2. From: terrell@musky2.MUSKINGUM.EDU
  3. Newsgroups: comp.sources.misc
  4. Subject: v03i092: Hangman for VMS, part 2 of 2
  5. Message-ID: <8807181101.AA10495@musky2.MUSKINGUM.EDU>
  6. Date: 18 Jul 88 15:01:06 GMT
  7. Sender: allbery@ncoast.UUCP
  8. Reply-To: terrell@musky2.MUSKINGUM.EDU
  9. Lines: 81
  10. Approved: allbery@ncoast.UUCP
  11.  
  12. Posting-number: Volume 3, Issue 92
  13. Submitted-by: "A. Nonymous" <terrell@musky2.MUSKINGUM.EDU>
  14. Archive-name: vms-hangman/Part2
  15.  
  16. +-+-+-+ Beginning of part 2 +-+-+-+
  17. X              BEGIN                                  
  18. X                IF NewWord[Counter] = ChPressed THEN
  19. X                  SMG$PUT_CHARS_HIGHWIDE (WordDisp, ChPressed, 1, Column);
  20. X
  21. X                Column := Column + 2;
  22. X              END; (* FOR *)
  23. X
  24. X            NumGuessed := NumGuessed + 1;
  25. X            WordSolved := NumGuessed = NumUniqueLetters;
  26. X          END
  27. X        ELSE
  28. X          BEGIN
  29. X            NumWrong := NumWrong + 1;
  30. X            DrawMan (NumWrong);
  31. X            ManHanged := NumWrong = NumBodyParts;
  32. X          END; (* IF/ELSE *)
  33. X      END; (* IF *)
  34. X
  35. X  UNTIL WordSolved OR ManHanged OR (CharCode = 26);
  36. X
  37. X  Done := CharCode = 26;
  38. X
  39. X  IF ManHanged THEN
  40. X    BEGIN
  41. X      SMG$RING_BELL (ManDisplay, 3);
  42. X
  43. X      Column := 1;
  44. X      FOR Counter := 1 TO WordLength DO
  45. X        BEGIN                                  
  46. X          SMG$PUT_CHARS_HIGHWIDE (WordDisp, NewWord[Counter], 1, Column);
  47. X
  48. X          Column := Column + 2;
  49. X        END; (* FOR *)
  50. X
  51. X      LIB$WAIT (3.5);
  52. X    END; (* IF *)
  53. X
  54. XEND; (* SolveWord *)
  55. X
  56. X
  57. XBEGIN
  58. X  SMG$CREATE_PASTEBOARD (Pasteboard);
  59. X  SMG$CREATE_VIRTUAL_KEYBOARD (Keyboard);
  60. X
  61. X  SMG$CREATE_VIRTUAL_DISPLAY (4, 65, LetterDisp);
  62. X  SMG$CREATE_VIRTUAL_DISPLAY (12, 18, ManDisplay, SMG$M_BORDER);
  63. X  SMG$CREATE_VIRTUAL_DISPLAY (2, 30, WordDisp);
  64. X  SMG$CREATE_VIRTUAL_DISPLAY (10, 60, HelpDisp);
  65. X
  66. X  SMG$PASTE_VIRTUAL_DISPLAY (LetterDisp, Pasteboard, 20, 2);
  67. X  SMG$PASTE_VIRTUAL_DISPLAY (ManDisplay, Pasteboard, 2, 2);
  68. X  SMG$PASTE_VIRTUAL_DISPLAY (WordDisp, Pasteboard, 17, 25);
  69. X  SMG$PASTE_VIRTUAL_DISPLAY (HelpDisp, Pasteboard, 2, 22);
  70. X
  71. X  FillHelpDisplay;
  72. X
  73. X  TIME (CurrTime);
  74. X  SmallStr[1] := CurrTime[10];   (* Get the initial random number seed *)
  75. X  SmallStr[2] := CurrTime[11];   (* from the hundredth-of-a-second     *)
  76. X  READV (SmallStr, RandomSeed);  (* portion of the current time.       *)
  77. X
  78. X  Done := FALSE;
  79. X
  80. X  REPEAT
  81. X    SMG$ERASE_DISPLAY (ManDisplay);
  82. X    FillLetters;
  83. X
  84. X    GetWord (NewWord);
  85. X    SolveWord (NewWord);
  86. X  UNTIL Done; (* Ctrl/Z has been pressed *)
  87. X
  88. X  SMG$DELETE_PASTEBOARD (Pasteboard);
  89. XEND.
  90. $ GOSUB UNPACK_FILE
  91. $ EXIT
  92. -+-+-+-+-+ End of part 2 +-+-+-+-+-
  93.