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