|
|
1.1 ! root 1: static char sccsid[] = " allow.c 4.1 82/05/11 "; ! 2: ! 3: #include "back.h" ! 4: ! 5: movallow () { ! 6: ! 7: register int i, m, iold; ! 8: int r; ! 9: ! 10: if (d0) ! 11: swap; ! 12: m = (D0 == D1? 4: 2); ! 13: for (i = 0; i < 4; i++) ! 14: p[i] = bar; ! 15: i = iold = 0; ! 16: while (i < m) { ! 17: if (*offptr == 15) ! 18: break; ! 19: h[i] = 0; ! 20: if (board[bar]) { ! 21: if (i == 1 || m == 4) ! 22: g[i] = bar+cturn*D1; ! 23: else ! 24: g[i] = bar+cturn*D0; ! 25: if (r = makmove(i)) { ! 26: if (d0 || m == 4) ! 27: break; ! 28: swap; ! 29: movback (i); ! 30: if (i > iold) ! 31: iold = i; ! 32: for (i = 0; i < 4; i++) ! 33: p[i] = bar; ! 34: i = 0; ! 35: } else ! 36: i++; ! 37: continue; ! 38: } ! 39: if ((p[i] += cturn) == home) { ! 40: if (i > iold) ! 41: iold = i; ! 42: if (m == 2 && i) { ! 43: movback(i); ! 44: p[i--] = bar; ! 45: if (p[i] != bar) ! 46: continue; ! 47: else ! 48: break; ! 49: } ! 50: if (d0 || m == 4) ! 51: break; ! 52: swap; ! 53: movback (i); ! 54: for (i = 0; i < 4; i++) ! 55: p[i] = bar; ! 56: i = 0; ! 57: continue; ! 58: } ! 59: if (i == 1 || m == 4) ! 60: g[i] = p[i]+cturn*D1; ! 61: else ! 62: g[i] = p[i]+cturn*D0; ! 63: if (g[i]*cturn > home) { ! 64: if (*offptr >= 0) ! 65: g[i] = home; ! 66: else ! 67: continue; ! 68: } ! 69: if (board[p[i]]*cturn > 0 && (r = makmove(i)) == 0) ! 70: i++; ! 71: } ! 72: movback (i); ! 73: return (iold > i? iold: i); ! 74: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.