home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V7 / usr / src / games / chess / init.c < prev    next >
Encoding:
C/C++ Source or Header  |  1979-05-05  |  1.8 KB  |  149 lines

  1. #include "old.h"
  2.  
  3. main()
  4. {
  5.     int i;
  6.  
  7.     printf("Chess\n");
  8.     itinit();
  9.     lmp = lmbuf;
  10.     amp = ambuf;
  11.     *amp++ = -1;
  12.     *lmp++ = -1;        /* fence */
  13.     bookf = open("/usr/lib/book", 0);
  14.     if(bookf > 0)
  15.         read(bookf, &bookp, 2);
  16.     i = 64;
  17.     while(i--)
  18.         dir[i] = (edge[i/8]<<6) | edge[i%8];
  19.     play(0);
  20. }
  21.  
  22. ctime(s, t)
  23. {
  24.  
  25.     printf("%s: %d:%d%d\n", s, t/60, (t/10)%6, t%10);
  26. }
  27.  
  28. check()
  29. {
  30.  
  31.     return((!wattack(bkpos) || !battack(wkpos))? 1: 0);
  32. }
  33.  
  34. increm()
  35. {
  36.  
  37.     clktim[mantom] =+ clock();
  38.     if(mantom)
  39.         moveno++;
  40.     mantom = !mantom;
  41. }
  42.  
  43. decrem()
  44. {
  45.  
  46.     mantom = !mantom;
  47.     if(mantom)
  48.         moveno--;
  49. }
  50.  
  51. stage()
  52. {
  53.     int i, a;
  54.  
  55.     qdepth = depth+8;
  56.     for(i=0; i<13; i++)
  57.         pval[i] = ipval[i];
  58.     value = 0;
  59.     for(i=0; i<64; i++) {
  60.         a = board[i];
  61.         value =+ (pval+6)[a];
  62.     }
  63.     if(value > 150)
  64.         gval = 1; else
  65.     if(value < -150)
  66.         gval = -1; else
  67.         gval = 0;
  68.     i = -6;
  69.     while(i <= 6) {
  70.         a = (pval+6)[i];
  71.         if(a < 0)
  72.             a =- 50; else
  73.             a =+ 50;
  74.         if(a < 0)
  75.             a = -((-a)/100); else
  76.             a =/ 100;
  77.         if(i)
  78.             (pval+6)[i] = a*100-gval;
  79.         i++;
  80.     }
  81.     a = 13800;
  82.     i = 64;
  83.     while(i--)
  84.         a =- abs((pval+6)[board[i]]);
  85.     if(a > 4000)
  86.         game = 3; else
  87.     if(a > 2000)
  88.         game = 2; else
  89.     if(moveno > 5)
  90.         game = 1; else
  91.         game = 0;
  92. }
  93.  
  94. posit(f, p, a)
  95. int (*f)();
  96. int *p;
  97. {
  98.     int m;
  99.  
  100.     while(amp != p) {
  101.         m = amp[3]<<8;
  102.         m =| amp[4]&0377;
  103.         (*f)(m, a);
  104.         if(mantom) {
  105.             bmove(m);
  106.             moveno++;
  107.             mantom = 0;
  108.         } else {
  109.             wmove(m);
  110.             mantom = 1;
  111.         }
  112.     }
  113. }
  114.  
  115. rept1(m, a)
  116. int *a;
  117. {
  118.     int i;
  119.  
  120.     if(mantom != a[64])
  121.         return;
  122.     for(i=0; i<64; i++)
  123.         if(board[i] != a[i])
  124.             return;
  125.     a[65]++;
  126. }
  127.  
  128. rept()
  129. {
  130.     int a[66], i, *p;
  131.  
  132.     for(i=0; i<64; i++)
  133.         a[i] = board[i];
  134.     a[64] = mantom;
  135.     a[65] = 0;
  136.     p = amp;
  137.     while(amp[-1] != -1) {
  138.         if(amp[-2])
  139.             break;
  140.         i = board[amp[-3]];
  141.         if(i == 1 || i == -1)
  142.             break;
  143.         mantom? wremove(): bremove();
  144.         decrem();
  145.     }
  146.     posit(rept1, p, a);
  147.     return(a[65]);
  148. }
  149.