home *** CD-ROM | disk | FTP | other *** search
/ Mac-Source 1994 July / Mac-Source_July_1994.iso / C and C++ / Entertainment / luff stuff / luff⁄chose.c < prev    next >
Encoding:
Text File  |  1986-04-19  |  1.2 KB  |  63 lines  |  [TEXT/MACA]

  1. # include "def.h"
  2.  
  3. /* Chose what move shall be done depending on threats and points */
  4. chose(who, dox, doy) char who; int *dox, *doy;{
  5.     short int maxpts, movbuf[2][BZIZE], movp, i, good, whomax;
  6.     register int x, y, n;
  7.  
  8.     if(who == 'x')
  9.         who = 1;
  10.     else
  11.         who = 0;
  12.  
  13.     for(x = 0; x < 2; x++){
  14.         thtmax[x] = 0;
  15.         for(y = 4; y > 0; y--){
  16.             if(thtcnt[x][y]){
  17.                 thtmax[x] = y;
  18.                 break;
  19.             }
  20.         }
  21.     }
  22.  
  23.     good = movp = 0;
  24.     maxpts = -1;
  25.     if(thtmax[who] >= thtmax[!who])
  26.         whomax = who;
  27.     else{
  28.         whomax = !who;
  29.         if(thtmax[!who] == 1)
  30.             whomax = who;
  31.     }
  32.     for(x = 0; x < XZIZE; x++)
  33.         for(y = 0; y < YZIZE; y++)
  34.             if((board[x][y] == ' ') &&
  35.                (threat[whomax][x][y] == thtmax[whomax])){
  36.                 good++;
  37.                 if((threat[whomax][x][y]) || (point[x][y] != 0)){
  38.                     movbuf[0][movp] = x;
  39.                     movbuf[1][movp++] = y;
  40.                     if(point[x][y] > maxpts)
  41.                         maxpts = point[x][y];
  42.                 }
  43.             }
  44.     n = 1;
  45.     for(i = 0; i < movp; i++){
  46.         if(!maxpts || (point[movbuf[0][i]][movbuf[1][i]] * 11) / (10 * maxpts)){
  47.             if(!((rand()>>4) % n++)){
  48.                 *dox = movbuf[0][i];
  49.                 *doy = movbuf[1][i];
  50.             }
  51.         }
  52.     }
  53.     if(!movp && good)
  54.         for(x = 0; x < XZIZE; x++)
  55.             for(y = 0; y < YZIZE; y++)
  56.                 if( (board[x][y] == ' ') &&
  57.                    !((rand()>>4) % n++)){
  58.                     *dox = x;
  59.                     *doy = y;
  60.                 }
  61.     return(good);
  62. }
  63.