|
|
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: (1) source distributions retain this entire copyright ! 7: * notice and comment, and (2) distributions including binaries display ! 8: * the following acknowledgement: ``This product includes software ! 9: * developed by the University of California, Berkeley and its contributors'' ! 10: * in the documentation or other materials provided with the distribution ! 11: * and in all advertising materials mentioning features or use of this ! 12: * software. Neither the name of the University nor the names of its ! 13: * contributors may be used to endorse or promote products derived ! 14: * from this software without specific prior written permission. ! 15: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ! 16: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! 17: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 18: */ ! 19: ! 20: #ifndef lint ! 21: static char sccsid[] = "@(#)room.c 5.3 (Berkeley) 6/1/90"; ! 22: #endif /* not lint */ ! 23: ! 24: #include "externs.h" ! 25: ! 26: writedes() ! 27: { ! 28: int compass; ! 29: register char *p; ! 30: register c; ! 31: ! 32: printf("\n\t%s\n", location[position].name); ! 33: if (beenthere[position] < 3) { ! 34: compass = NORTH; ! 35: for (p = location[position].desc; c = *p++;) ! 36: if (c != '-' && c != '*' && c != '+') ! 37: putchar(c); ! 38: else { ! 39: if (c != '*') ! 40: printf(truedirec(compass, c)); ! 41: compass++; ! 42: } ! 43: } ! 44: } ! 45: ! 46: printobjs() ! 47: { ! 48: register unsigned int *p = location[position].objects; ! 49: register n; ! 50: ! 51: printf("\n"); ! 52: for (n = 0; n < NUMOFOBJECTS; n++) ! 53: if (testbit(p, n) && objdes[n]) ! 54: puts(objdes[n]); ! 55: } ! 56: ! 57: whichway(here) ! 58: struct room here; ! 59: { ! 60: switch(direction) { ! 61: ! 62: case NORTH: ! 63: left = here.west; ! 64: right = here.east; ! 65: ahead = here.north; ! 66: back = here.south; ! 67: break; ! 68: ! 69: case SOUTH: ! 70: left = here.east; ! 71: right = here.west; ! 72: ahead = here.south; ! 73: back = here.north; ! 74: break; ! 75: ! 76: case EAST: ! 77: left = here.north; ! 78: right = here.south; ! 79: ahead = here.east; ! 80: back = here.west; ! 81: break; ! 82: ! 83: case WEST: ! 84: left = here.south; ! 85: right = here.north; ! 86: ahead = here.west; ! 87: back = here.east; ! 88: break; ! 89: ! 90: } ! 91: } ! 92: ! 93: char * ! 94: truedirec(way, option) ! 95: int way; ! 96: char option; ! 97: { ! 98: switch(way) { ! 99: ! 100: case NORTH: ! 101: switch(direction) { ! 102: case NORTH: ! 103: return("ahead"); ! 104: case SOUTH: ! 105: return(option == '+' ? "behind you" : "back"); ! 106: case EAST: ! 107: return("left"); ! 108: case WEST: ! 109: return("right"); ! 110: } ! 111: ! 112: case SOUTH: ! 113: switch(direction) { ! 114: case NORTH: ! 115: return(option == '+' ? "behind you" : "back"); ! 116: case SOUTH: ! 117: return("ahead"); ! 118: case EAST: ! 119: return("right"); ! 120: case WEST: ! 121: return("left"); ! 122: } ! 123: ! 124: case EAST: ! 125: switch(direction) { ! 126: case NORTH: ! 127: return("right"); ! 128: case SOUTH: ! 129: return("left"); ! 130: case EAST: ! 131: return("ahead"); ! 132: case WEST: ! 133: return(option == '+' ? "behind you" : "back"); ! 134: } ! 135: ! 136: case WEST: ! 137: switch(direction) { ! 138: case NORTH: ! 139: return("left"); ! 140: case SOUTH: ! 141: return("right"); ! 142: case EAST: ! 143: return(option == '+' ? "behind you" : "back"); ! 144: case WEST: ! 145: return("ahead"); ! 146: } ! 147: ! 148: default: ! 149: printf("Error: room %d. More than four directions wanted.", position); ! 150: return("!!"); ! 151: } ! 152: } ! 153: ! 154: newway(thisway) ! 155: int thisway; ! 156: { ! 157: switch(direction){ ! 158: ! 159: case NORTH: ! 160: switch(thisway){ ! 161: case LEFT: ! 162: direction = WEST; ! 163: break; ! 164: case RIGHT: ! 165: direction = EAST; ! 166: break; ! 167: case BACK: ! 168: direction = SOUTH; ! 169: break; ! 170: } ! 171: break; ! 172: case SOUTH: ! 173: switch(thisway){ ! 174: case LEFT: ! 175: direction = EAST; ! 176: break; ! 177: case RIGHT: ! 178: direction = WEST; ! 179: break; ! 180: case BACK: ! 181: direction = NORTH; ! 182: break; ! 183: } ! 184: break; ! 185: case EAST: ! 186: switch(thisway){ ! 187: case LEFT: ! 188: direction = NORTH; ! 189: break; ! 190: case RIGHT: ! 191: direction = SOUTH; ! 192: break; ! 193: case BACK: ! 194: direction = WEST; ! 195: break; ! 196: } ! 197: break; ! 198: case WEST: ! 199: switch(thisway){ ! 200: case LEFT: ! 201: direction = SOUTH; ! 202: break; ! 203: case RIGHT: ! 204: direction = NORTH; ! 205: break; ! 206: case BACK: ! 207: direction = EAST; ! 208: break; ! 209: } ! 210: break; ! 211: } ! 212: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.