1: #include "old.h" 2: 3: statl() 4: { 5: int *p1, *p2, *p3; 6: 7: p1 = p2 = lmp; 8: stage(); 9: mantom? bagen(): wagen(); 10: if(lmp == p1+1) 11: return(p1); 12: while(p2 != lmp) { 13: p3 = p2++; 14: if(mantom) { 15: bmove(*p2++); 16: *p3 = bstatic(0); 17: bremove(); 18: } else { 19: wmove(*p2++); 20: *p3 = wstatic(0); 21: wremove(); 22: } 23: } 24: qsort(p1, lmp); 25: return(p1); 26: } 27: 28: wstatic(f) 29: { 30: int i, j, h, (*p)(); 31: 32: h = i = 0; 33: while(p = wheur[h++]) { 34: j = (*p)(); 35: if(f) 36: printf("%4d ", j); 37: i =+ j; 38: } 39: if(f) 40: printf("=%4d ", i); 41: return(-i); 42: } 43: 44: bstatic(f) 45: { 46: int i, j, h, (*p)(); 47: 48: h = i = 0; 49: while(p = bheur[h++]) { 50: j = (*p)(); 51: if(f) 52: printf("%4d ", j); 53: i =+ j; 54: } 55: if(f) 56: printf("=%4d ", i); 57: return(-i); 58: } 59: 60: xheur(ploc) 61: int ploc; 62: { 63: int *p1, *p2, from, to, pie; 64: 65: pie = board[ploc]; 66: p1 = lmp; 67: p2 = p1; 68: mantom? wgen(): bgen(); 69: while(p2 != lmp) { 70: p2++; 71: to = *p2++ & 0377; 72: if(to == ploc) { 73: from = p2[-1] >> 8; 74: if(abs(board[from]) < abs(pie)) { 75: lmp = p1; 76: return((pval+6)[pie]/60); 77: } 78: } 79: } 80: lmp = p1; 81: return(0); 82: } 83: 84: srnd(p) 85: int p; 86: { 87: 88: srnd1(p, uleft, -9); 89: srnd1(p, uright, -7); 90: srnd1(p, dleft, 7); 91: srnd1(p, dright, 9); 92: srnd1(p, up, -8); 93: srnd1(p, left, -1); 94: srnd1(p, right, 1); 95: srnd1(p, down, 8); 96: srnd1(p, 0, 0); 97: } 98: 99: srnd1(p, m, o) 100: int p, m, o; 101: { 102: 103: if((dir[p]&m) == 0) 104: control[p+o] =+ 10; 105: }