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