home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / games / volume15 / reversi2 / part02 / move.c < prev    next >
Text File  |  1993-01-27  |  867b  |  60 lines

  1. /*
  2.  *    move.c
  3.  *
  4.  *    move player to x,y in board
  5.  */
  6.  
  7. # include    "reversi.h"
  8.  
  9. int        offsets[] = { -11, -10, -9, -1, 1, 9, 10, 11, 0 };
  10.  
  11. move (player, x, y, board)
  12. register int    player;
  13. int                x, y;
  14. boardT            board;
  15. {
  16.     register char    *b, *m;
  17.     register int    *o, i;
  18.  
  19.     b = & board[x][y];
  20.     *b = player;
  21.     player = -player;
  22.     for (o = offsets; i = *o++;) {
  23.         if (b[i] == player) {
  24.             m = b+i;
  25.             while (*m == player)
  26.                 m += i;
  27.             if (*m == -player) {
  28.                 while (m != b) {
  29.                     *m = -player;
  30.                     m -= i;
  31.                 }
  32.             }
  33.         }
  34.     }
  35. }
  36.  
  37. legal (player, x, y, board)
  38. register int    player;
  39. int                x, y;
  40. boardT            board;
  41. {
  42.     register char    *b, *m;
  43.     register int    *o, i;
  44.  
  45.     b = & board[x][y];
  46.     player = -player;
  47.     if (*b == EMPTY) {
  48.         for (o = offsets; i = *o++;) {
  49.             if (b[i] == player) {
  50.                 m = b+i;
  51.                 while (*m == player)
  52.                     m += i;
  53.                 if (*m == -player)
  54.                     return 1;
  55.             }
  56.         }
  57.     }
  58.     return 0;
  59. }
  60.