home *** CD-ROM | disk | FTP | other *** search
- Path: xanth!mcnc!rutgers!mit-eddie!husc6!spdcc!ima!necntc!ncoast!allbery
- From: terrell@musky2.MUSKINGUM.EDU
- Newsgroups: comp.sources.misc
- Subject: v03i092: Hangman for VMS, part 2 of 2
- Message-ID: <8807181101.AA10495@musky2.MUSKINGUM.EDU>
- Date: 18 Jul 88 15:01:06 GMT
- Sender: allbery@ncoast.UUCP
- Reply-To: terrell@musky2.MUSKINGUM.EDU
- Lines: 81
- Approved: allbery@ncoast.UUCP
-
- Posting-number: Volume 3, Issue 92
- Submitted-by: "A. Nonymous" <terrell@musky2.MUSKINGUM.EDU>
- Archive-name: vms-hangman/Part2
-
- +-+-+-+ Beginning of part 2 +-+-+-+
- X BEGIN
- X IF NewWord[Counter] = ChPressed THEN
- X SMG$PUT_CHARS_HIGHWIDE (WordDisp, ChPressed, 1, Column);
- X
- X Column := Column + 2;
- X END; (* FOR *)
- X
- X NumGuessed := NumGuessed + 1;
- X WordSolved := NumGuessed = NumUniqueLetters;
- X END
- X ELSE
- X BEGIN
- X NumWrong := NumWrong + 1;
- X DrawMan (NumWrong);
- X ManHanged := NumWrong = NumBodyParts;
- X END; (* IF/ELSE *)
- X END; (* IF *)
- X
- X UNTIL WordSolved OR ManHanged OR (CharCode = 26);
- X
- X Done := CharCode = 26;
- X
- X IF ManHanged THEN
- X BEGIN
- X SMG$RING_BELL (ManDisplay, 3);
- X
- X Column := 1;
- X FOR Counter := 1 TO WordLength DO
- X BEGIN
- X SMG$PUT_CHARS_HIGHWIDE (WordDisp, NewWord[Counter], 1, Column);
- X
- X Column := Column + 2;
- X END; (* FOR *)
- X
- X LIB$WAIT (3.5);
- X END; (* IF *)
- X
- XEND; (* SolveWord *)
- X
- X
- XBEGIN
- X SMG$CREATE_PASTEBOARD (Pasteboard);
- X SMG$CREATE_VIRTUAL_KEYBOARD (Keyboard);
- X
- X SMG$CREATE_VIRTUAL_DISPLAY (4, 65, LetterDisp);
- X SMG$CREATE_VIRTUAL_DISPLAY (12, 18, ManDisplay, SMG$M_BORDER);
- X SMG$CREATE_VIRTUAL_DISPLAY (2, 30, WordDisp);
- X SMG$CREATE_VIRTUAL_DISPLAY (10, 60, HelpDisp);
- X
- X SMG$PASTE_VIRTUAL_DISPLAY (LetterDisp, Pasteboard, 20, 2);
- X SMG$PASTE_VIRTUAL_DISPLAY (ManDisplay, Pasteboard, 2, 2);
- X SMG$PASTE_VIRTUAL_DISPLAY (WordDisp, Pasteboard, 17, 25);
- X SMG$PASTE_VIRTUAL_DISPLAY (HelpDisp, Pasteboard, 2, 22);
- X
- X FillHelpDisplay;
- X
- X TIME (CurrTime);
- X SmallStr[1] := CurrTime[10]; (* Get the initial random number seed *)
- X SmallStr[2] := CurrTime[11]; (* from the hundredth-of-a-second *)
- X READV (SmallStr, RandomSeed); (* portion of the current time. *)
- X
- X Done := FALSE;
- X
- X REPEAT
- X SMG$ERASE_DISPLAY (ManDisplay);
- X FillLetters;
- X
- X GetWord (NewWord);
- X SolveWord (NewWord);
- X UNTIL Done; (* Ctrl/Z has been pressed *)
- X
- X SMG$DELETE_PASTEBOARD (Pasteboard);
- XEND.
- $ GOSUB UNPACK_FILE
- $ EXIT
- -+-+-+-+-+ End of part 2 +-+-+-+-+-
-