|
|
1.1 root 1: static char sccsid[] = " check.c 4.1 82/05/11 ";
2:
3: #include "back.h"
4:
5: getmove () {
6: register int i, c;
7:
8: c = 0;
9: for (;;) {
10: i = checkmove(c);
11:
12: switch (i) {
13: case -1:
14: if (movokay(mvlim)) {
15: if (tflag)
16: curmove (20,0);
17: else
18: writec ('\n');
19: for (i = 0; i < mvlim; i++)
20: if (h[i])
21: wrhit(g[i]);
22: nexturn();
23: if (*offopp == 15)
24: cturn *= -2;
25: if (tflag && pnum)
26: bflag = pnum;
27: return;
28: }
29:
30: case -4:
31: case 0:
32: if (tflag)
33: refresh();
34: if (i != 0 && i != -4)
35: break;
36: if (tflag)
37: curmove (20,0);
38: else
39: writec ('\n');
40: writel (*Colorptr);
41: if (i == -4)
42: writel (" must make ");
43: else
44: writel (" can only make ");
45: writec (mvlim+'0');
46: writel (" move");
47: if (mvlim > 1)
48: writec ('s');
49: writec ('.');
50: writec ('\n');
51: break;
52:
53: case -3:
54: if (quit())
55: return;
56: }
57:
58: if (! tflag)
59: proll ();
60: else {
61: curmove (cturn == -1? 18: 19,39);
62: cline ();
63: c = -1;
64: }
65: }
66: }
67:
68: movokay (mv)
69: register int mv;
70:
71: {
72: register int i, m;
73:
74: if (d0)
75: swap;
76:
77: for (i = 0; i < mv; i++) {
78:
79: if (p[i] == g[i]) {
80: moverr (i);
81: curmove (20,0);
82: writel ("Attempt to move to same location.\n");
83: return (0);
84: }
85:
86: if (cturn*(g[i]-p[i]) < 0) {
87: moverr (i);
88: curmove (20,0);
89: writel ("Backwards move.\n");
90: return (0);
91: }
92:
93: if (abs(board[bar]) && p[i] != bar) {
94: moverr (i);
95: curmove (20,0);
96: writel ("Men still on bar.\n");
97: return (0);
98: }
99:
100: if ( (m = makmove(i)) ) {
101: moverr (i);
102: switch (m) {
103:
104: case 1:
105: writel ("Move not rolled.\n");
106: break;
107:
108: case 2:
109: writel ("Bad starting position.\n");
110: break;
111:
112: case 3:
113: writel ("Destination occupied.\n");
114: break;
115:
116: case 4:
117: writel ("Can't remove men yet.\n");
118: }
119: return (0);
120: }
121: }
122: return (1);
123: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.