X-Git-Url: http://vcs.maemo.org/git/?a=blobdiff_plain;f=src%2Fai-ultimate.c;fp=src%2Fai-ultimate.c;h=0000000000000000000000000000000000000000;hb=1adeebe9572cc4441d114687606e45cde11f5b2b;hp=12348629a05341b1f09bb9334aa8921ac45a3da3;hpb=860de21ec6c253290ab3fc213cb11f350b193d05;p=mancala diff --git a/src/ai-ultimate.c b/src/ai-ultimate.c deleted file mode 100644 index 1234862..0000000 --- a/src/ai-ultimate.c +++ /dev/null @@ -1,92 +0,0 @@ -/* - * "Ultimate" AI Algorithm -- ai-ultimate.c - * Kevin Riggle - * http://cmancala.sourceforge.net - * $Source: /cvsroot/cmancala/mancala/src/Attic/ai-ultimate.c,v $ - * $Revision: 1.12.2.1 $ - * $Date: 2003/12/29 05:49:52 $ - * - */ - -#include -#include -#include "mancala.h" -#include "ai.h" -#include "ai-init.h" - -static int aiUltimate(int *aiBoard, int *humanBoard, int depth, FILE *log); - -/* api function */ - -int aiMove(int *aiBoard, int *humanBoard) { - - return aiInit(aiBoard, humanBoard, "ultimate.log", aiUltimate); - -} - -int aiUltimate(int *aiBoard, int *humanBoard, int depth, FILE *log) { - - int aiBoardTemp[BOARD_MAX+1], humanBoardTemp[BOARD_MAX+1]; - int *outcomes[BOARD_MAX+1]; - int ai_min[BOARD_MAX+1], human_max[BOARD_MAX+1]; - int i, j, k, result, bestmove; - - bestmove = result = 0; - - /* allocate memory to store the results */ - for (i=0; i<=BOARD_MAX; i++) - if ((outcomes[i] = (int *) calloc(BOARD_MAX+1, sizeof(int))) - == NULL) - printf("Cannot allocate memory...\n"); - - for (i=1; i<=BOARD_MAX; i++) { - for (j=1; j<=BOARD_MAX; j++) { - - /* make another temporary copy of the boards */ - for (k=0; k<=BOARD_MAX; k++) { - aiBoardTemp[k] = aiBoard[k]; - humanBoardTemp[k] = humanBoard[k]; - } - - /* RECURSION - if (move(aiBoardTemp, humanBoardTemp, i) == 0) - aiUltimate(aiBoardTemp, humanBoardTemp, (depth+1), log); - if (move(humanBoardTemp, aiBoardTemp, j) == 0) - aiUltimate(humanBoardTemp, aiBoardTemp, {depth+1), log); - END RECURSION */ - - move(aiBoardTemp, humanBoardTemp, i); - move(humanBoardTemp, aiBoardTemp, j); - - result = (aiBoardTemp[0] - aiBoard[0]) - - (humanBoardTemp[0] - humanBoard[0]); - - *(outcomes[i] + j) = result; - - printf("%d ", *(outcomes[i] + j)); - - } - printf("\n"); - } - - /* find the ai's min move and the human's max move for each row/col */ - for (i=1; i<=BOARD_MAX; i++) - for (j=1; j<=BOARD_MAX; j++) { - ai_min[i] = human_max[j] = 0; - ai_min[i] = (*(outcomes[i] + j) < ai_min[i]) - ? *(outcomes[i] + j) : ai_min[i]; - human_max[j] = (*(outcomes[j] + i) > human_max[j]) - ? *(outcomes[j] + i) : human_max[j]; - printf("A @ %d: %d; H @ %d: %d\n", i, ai_min[i], j, - human_max[j]); - } - - /* free the calloc()s! free the calloc()s! */ - for (i=0; i<=BOARD_MAX; i++) - free(outcomes[i]); - - return bestmove; - -} - -/* End ai-ultimate.c */