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