|
|
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.