|
|
1.1 root 1: /*
2: * Copyright (c) 1983 Regents of the University of California.
3: * All rights reserved.
4: *
5: * Redistribution and use in source and binary forms are permitted
6: * provided that the above copyright notice and this paragraph are
7: * duplicated in all such forms and that any documentation,
8: * advertising materials, and other materials related to such
9: * distribution and use acknowledge that the software was developed
10: * by the University of California, Berkeley. The name of the
11: * University may not be used to endorse or promote products derived
12: * from this software without specific prior written permission.
13: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15: * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16: */
17:
18: #ifndef lint
19: static char sccsid[] = "@(#)getguess.c 5.3 (Berkeley) 6/18/88";
20: #endif /* not lint */
21:
22: # include "hangman.h"
23:
24: /*
25: * getguess:
26: * Get another guess
27: */
28: getguess()
29: {
30: register int i;
31: register int ch;
32: register bool correct;
33:
34: leaveok(stdscr, FALSE);
35: for (;;) {
36: move(PROMPTY, PROMPTX + sizeof "Guess: ");
37: refresh();
38: ch = readch();
39: if (isalpha(ch)) {
40: if (isupper(ch))
41: ch = tolower(ch);
42: if (Guessed[ch - 'a'])
43: mvprintw(MESGY, MESGX, "Already guessed '%c'", ch);
44: else
45: break;
46: }
47: else if (ch == CTRL('D'))
48: die();
49: else
50: mvprintw(MESGY, MESGX, "Not a valid guess: '%s'",
51: unctrl(ch));
52: }
53: leaveok(stdscr, TRUE);
54: move(MESGY, MESGX);
55: clrtoeol();
56:
57: Guessed[ch - 'a'] = TRUE;
58: correct = FALSE;
59: for (i = 0; Word[i] != '\0'; i++)
60: if (Word[i] == ch) {
61: Known[i] = ch;
62: correct = TRUE;
63: }
64: if (!correct)
65: Errors++;
66: }
67:
68: /*
69: * readch;
70: * Read a character from the input
71: */
72: readch()
73: {
74: register int cnt, r;
75: auto char ch;
76:
77: cnt = 0;
78: for (;;) {
79: if (read(0, &ch, sizeof ch) <= 0)
80: {
81: if (++cnt > 100)
82: die();
83: }
84: else if (ch == CTRL('L')) {
85: wrefresh(curscr);
86: mvcur(0, 0, curscr->_cury, curscr->_curx);
87: }
88: else
89: return ch;
90: }
91: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.