|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1980 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[] = "@(#)ttext2.c 5.3 (Berkeley) 6/18/88"; ! 20: #endif /* not lint */ ! 21: ! 22: #include "back.h" ! 23: ! 24: char *prompt, *list, *opts; ! 25: ! 26: char *doubl[] = { ! 27: "\nDoubling:", ! 28: "\n If a player thinks he is in a good position, he may double the", ! 29: "value of the game. However, his opponent may not accept the pro-", ! 30: "posal and forfeit the game before the price gets too high. A", ! 31: "player must double before he rolls, and once his double has been", ! 32: "accepted, he cannot double again, until his opponent has doubled.", ! 33: "Thus, unless the game swings back and forth in advantage between", ! 34: "the two players a great deal, the value of the game should be", ! 35: "low. At any rate, the value of the game will never go above 64,", ! 36: "or six doubles. However, if a player wins a backgammon at 64", ! 37: "points, he wins 192 points!", ! 38: "", ! 39: 0}; ! 40: ! 41: char *stragy[] = { ! 42: "\nStrategy:", ! 43: "\n Some general hints when playing: Try not to leave men open", ! 44: "unless absolutely necessary. Also, it is good to make as many", ! 45: "points as possible. Often, two men from different positions can", ! 46: "be brought together to form a new point. Although walls (six", ! 47: "points in a row) are difficult to form, many points nestled close-", ! 48: "ly together produce a formidable barrier. Also, while it is good", ! 49: "to move back men forward, doing so lessens the opportunity for you", ! 50: "to hit men. Finally, remember that once the two player's have", ! 51: "passed each other on the board, there is no chance of either team", ! 52: "being hit, so the game reduces to a race off the board. Addi-", ! 53: "tional hints on strategy are presented in the practice game.", ! 54: "", ! 55: 0}; ! 56: ! 57: char *prog[] = { ! 58: "\nThe Program and How It Works:", ! 59: "\n A general rule of thumb is when you don't know what to do,", ! 60: "type a question mark, and you should get some help. When it is", ! 61: "your turn, only your color will be printed out, with nothing", ! 62: "after it. You may double by typing a 'd', but if you type a", ! 63: "space or newline, you will get your roll. (Remember, you must", ! 64: "double before you roll.) Also, typing a 'r' will reprint the", ! 65: "board, and a 'q' will quit the game. The program will type", ! 66: "'Move:' when it wants your move, and you may indicate each die's", ! 67: "move with <s>-<f>, where <s> is the starting position and <f> is", ! 68: "the finishing position, or <s>/<r> where <r> is the roll made.", ! 69: "<s>-<f1>-<f2> is short for <s>-<f1>,<f1>-<f2> and <s>/<r1><r2> is", ! 70: "short for <s>/<r1>,<s>/<r2>. Moves may be separated by a comma", ! 71: "or a space.", ! 72: "", ! 73: "\n While typing, any input which does not make sense will not be", ! 74: "echoed, and a bell will sound instead. Also, backspacing and", ! 75: "killing lines will echo differently than normal. You may examine", ! 76: "the board by typing a 'r' if you have made a partial move, or be-", ! 77: "fore you type a newline, to see what the board looks like. You", ! 78: "must end your move with a newline. If you cannot double, your", ! 79: "roll will always be printed, and you will not be given the oppor-", ! 80: "tunity to double. Home and bar are represented by the appropri-", ! 81: "ate number, 0 or 25 as the case may be, or by the letters 'h' or", ! 82: "'b' as appropriate. You may also type 'r' or 'q' when the program", ! 83: "types 'Move:', which has the same effect as above. Finally, you", ! 84: "will get to decide if you want to play red or white (or both if you", ! 85: "want to play a friend) at the beginning of the session, and you", ! 86: "will not get to change your mind later, since the computer keeps", ! 87: "score.", ! 88: "", ! 89: 0}; ! 90: ! 91: char *lastch[] = { ! 92: "\nTutorial (Practice Game):", ! 93: "\n This tutorial, for simplicity's sake, will let you play one", ! 94: "predetermined game. All the rolls have been pre-arranged, and", ! 95: "only one response will let you advance to the next move.", ! 96: "Although a given roll will may have several legal moves, the tu-", ! 97: "torial will only accept one (not including the same moves in a", ! 98: "different order), claiming that that move is 'best.' Obviously,", ! 99: "a subjective statement. At any rate, be patient with it and have", ! 100: "fun learning about backgammon. Also, to speed things up a lit-", ! 101: "tle, doubling will not take place in the tutorial, so you will", ! 102: "never get that opportunity, and quitting only leaves the tutori-", ! 103: "al, not the game. You will still be able to play backgammon", ! 104: "after quitting.", ! 105: "\n This is your last chance to look over the rules before the tu-", ! 106: "torial starts.", ! 107: "", ! 108: 0}; ! 109: ! 110: text (txt) ! 111: char **txt; ! 112: ! 113: { ! 114: char **begin; ! 115: char *a; ! 116: char b; ! 117: char *c; ! 118: int i; ! 119: ! 120: fixtty (noech); ! 121: begin = txt; ! 122: while (*txt) { ! 123: a = *(txt++); ! 124: if (*a != '\0') { ! 125: c = a; ! 126: for (i = 0; *(c++) != '\0'; i--); ! 127: writel (a); ! 128: writec ('\n'); ! 129: } else { ! 130: fixtty (raw); ! 131: writel (prompt); ! 132: for (;;) { ! 133: if ((b = readc()) == '?') { ! 134: if (tflag) { ! 135: if (begscr) { ! 136: curmove (18,0); ! 137: clend(); ! 138: } else ! 139: clear(); ! 140: } else ! 141: writec ('\n'); ! 142: text (list); ! 143: writel (prompt); ! 144: continue; ! 145: } ! 146: i = 0; ! 147: if (b == '\n') ! 148: break; ! 149: while (i < 11) { ! 150: if (b == opts[i]) ! 151: break; ! 152: i++; ! 153: } ! 154: if (i == 11) ! 155: writec ('\007'); ! 156: else ! 157: break; ! 158: } ! 159: if (tflag) { ! 160: if (begscr) { ! 161: curmove (18,0); ! 162: clend(); ! 163: } else ! 164: clear(); ! 165: } else ! 166: writec ('\n'); ! 167: if (i) ! 168: return(i); ! 169: fixtty (noech); ! 170: if (tflag) ! 171: curmove (curr,0); ! 172: begin = txt; ! 173: } ! 174: } ! 175: fixtty (raw); ! 176: return (0); ! 177: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.