case '3':
mvaddcb (y, x, lighterred);
break;
+ case '4':
+ mvaddcb (y, x, lightergreen);
+ break;
}
}
return board;
}
+board_t *copyboard (board_t *board)
+{
+ board_t *newboard = (board_t *) malloc (sizeof (board_t));
+ CHECKALLOC (board);
+ memcpy (newboard, board, sizeof (board_t));
+ newboard->tab = (char *) calloc (1, board->width * board->height + 1);
+ CHECKALLOC (newboard->tab);
+ memcpy (newboard->tab, board->tab, board->width * board->height + 1);
+ return newboard;
+}
+
board_t *setscale (board_t *board, int scale)
{
board->scale = scale;
return ret;
}
+int find (board_t *board, int id)
+{
+ int ret = 0;
+ int x, y;
+ for (x = 0; x < board->width; x++) {
+ for (y = 0; y < board->height; y++) {
+ if (*getcell (board, x, y) == ' ') {
+ int dir;
+ for (dir = 0; dir < 8; dir++) {
+ if (_checkline (board, x, y, id, dir)) {
+ *getcell (board, x, y) = '4';
+ ret = 1;
+ }
+ }
+ }
+ }
+ }
+ return ret;
+}
+
/* vim: set ts=4 sw=4 et: */
board_t *initboard (int width, int height);
+board_t *copyboard (board_t *board);
+
board_t *setscale (board_t *board, int scale);
void freeboard (board_t *board);
int putdisk (board_t *board, int x, int y, int id);
+int find (board_t *board, int id);
+
#endif /* __FUNCTION_H__ */
/* vim: set ts=4 sw=4 et: */
int mode = 0;
while (!stop) {
- boardwindow (board, 0);
+ board_t *boardturn = copyboard (board);
+ int ret = find (boardturn, id);
+ boardwindow (boardturn, 0);
+ freeboard (boardturn);
+
displaycursor (board, id, xcursor, ycursor);
int ch = getch ();