|
|
1.1 ! root 1: /* ! 2: * Hunt ! 3: * Copyright (c) 1985 Conrad C. Huang, Gregory S. Couch, Kenneth C.R.C. Arnold ! 4: * San Francisco, California ! 5: * ! 6: * Copyright (c) 1985 Regents of the University of California. ! 7: * All rights reserved. The Berkeley software License Agreement ! 8: * specifies the terms and conditions for redistribution. ! 9: */ ! 10: ! 11: # include "hunt.h" ! 12: # define TERM_WIDTH 80 /* Assume terminals are 80-char wide */ ! 13: ! 14: /* ! 15: * cgoto: ! 16: * Move the cursor to the given position on the given player's ! 17: * terminal. ! 18: */ ! 19: cgoto(pp, y, x) ! 20: register PLAYER *pp; ! 21: register int y, x; ! 22: { ! 23: if (x == pp->p_curx && y == pp->p_cury) ! 24: return; ! 25: sendcom(pp, MOVE, y, x); ! 26: pp->p_cury = y; ! 27: pp->p_curx = x; ! 28: } ! 29: ! 30: /* ! 31: * outch: ! 32: * Put out a single character. ! 33: */ ! 34: outch(pp, ch) ! 35: register PLAYER *pp; ! 36: char ch; ! 37: { ! 38: if (++pp->p_curx >= TERM_WIDTH) { ! 39: pp->p_curx = 0; ! 40: pp->p_cury++; ! 41: } ! 42: (void) putc(ch, pp->p_output); ! 43: } ! 44: ! 45: /* ! 46: * outstr: ! 47: * Put out a string of the given length. ! 48: */ ! 49: outstr(pp, str, len) ! 50: register PLAYER *pp; ! 51: register char *str; ! 52: register int len; ! 53: { ! 54: pp->p_curx += len; ! 55: pp->p_cury += (pp->p_curx / TERM_WIDTH); ! 56: pp->p_curx %= TERM_WIDTH; ! 57: while (len--) ! 58: (void) putc(*str++, pp->p_output); ! 59: } ! 60: ! 61: /* ! 62: * clrscr: ! 63: * Clear the screen, and reset the current position on the screen. ! 64: */ ! 65: clrscr(pp) ! 66: register PLAYER *pp; ! 67: { ! 68: sendcom(pp, CLEAR); ! 69: pp->p_cury = 0; ! 70: pp->p_curx = 0; ! 71: } ! 72: ! 73: /* ! 74: * ce: ! 75: * Clear to the end of the line ! 76: */ ! 77: ce(pp) ! 78: PLAYER *pp; ! 79: { ! 80: sendcom(pp, CLRTOEOL); ! 81: } ! 82: ! 83: /* ! 84: * ref; ! 85: * Refresh the screen ! 86: */ ! 87: ref(pp) ! 88: register PLAYER *pp; ! 89: { ! 90: sendcom(pp, REFRESH); ! 91: } ! 92: ! 93: /* ! 94: * sendcom: ! 95: * Send a command to the given user ! 96: */ ! 97: /* VARARGS2 */ ! 98: sendcom(pp, command, arg1, arg2) ! 99: register PLAYER *pp; ! 100: register int command; ! 101: int arg1, arg2; ! 102: { ! 103: (void) putc(command, pp->p_output); ! 104: switch (command & 0377) { ! 105: case MOVE: ! 106: (void) putc(arg1, pp->p_output); ! 107: (void) putc(arg2, pp->p_output); ! 108: break; ! 109: case ADDCH: ! 110: case READY: ! 111: (void) putc(arg1, pp->p_output); ! 112: break; ! 113: } ! 114: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.