Annotation of 43BSDTahoe/games/hangman/getguess.c, revision 1.1.1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.