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