🎉 Celebrating 25 Years of GameDev.net! 🎉

Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!

Better representation of Board Game AI

Started by
3 comments, last by ashish123 12 years, 12 months ago
Hello again.
I have programed a game of chess. However I have used dynamic memory allocation everywhere,when new moves are generated.This has slowed down the speed of my code.
I came up with an idea of making a multi-dimensional array, one stores the depth at which the moves are called and other stores the moves.
For this I have written a X's and O's game.
Here is the snippet.

static int moves[][]=new int[maxDepth][boardSize]
static int n[]=new int[maxDepth];
...
public static void possibleMoves(int board[][], int depth) {

n[depth] = 0; // here it acts as a counter, counts the number of legal moves, this can be used in the loop to play the legalmoves.
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
if (board[j] == 0) {
mList[depth][n[depth]++] = size * i + j;
}
}
}

}

I doesnt work though, wanted to know if my basic idea is correct or not.
Basically my AI plays continuously, without me getting a chance to play.
Is this a common problem any sort of help is welcomed.
Thank you.
Advertisement
Using a two-dimensional array to store moves seems very reasonable. What you are describing sounds like a bug, which you are going to have to find yourself.
you are going to run out of memory very quickly on any reasonable (interesting) sized game

you are going to run out of memory very quickly on any reasonable (interesting) sized game


No, unless he is doing something very stupid, and this doesn't seem to be the case. As you perform the depth-first search that is minimax, you only need to keep around the list of moves at each node of the branch you are currently exploring, and that doesn't take much memory at all. The way he is indexing the array of moves by depth indicates he is probably doing it right.
No, unless he is doing something very stupid, and this doesn't seem to be the case.[/quote]
But then this has always been the case.
My program now seems to be working correctly.

This topic is closed to new replies.

Advertisement