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