Gomoku Terminator 122
Gomoku is a challenging strategy board game and is also called Five in a Row or Gobang. The winner is the first player to get an unbroken row of five stones horizontally, vertically, or diagonally.
The traditional and rather effective strategy for writing AI for such games is the typical tree search strategy. That is, each board state forms a node in a graph, and a directed edge is placed between each node and states that can be resulted by a single move. In this way a tree is built with the root board being an empty node. Then, traverse the tree in some clever way to find what looks like a 'good' state. A 'good' state is usually measured by an evaluation function that uses some clever heuristics. Obviously you don't want to visit all the nodes in the tree -- that would be a lot of work!
You just want something clever. You can add in a pre-computed early game and end-game to speed up those scenarios and then rely on a well-optimized tree-traversal heuristic for the mid game. The actual name of such tree traversal algorithms is the 'Minimax' algorithm. Look for it on Wikipedia and you'll see a lot of rather decent material. There's some ways of boosting the efficiency of the algorithm, the most notable of which alpha-beta pruning, so be sure you take a look at that. You may want to take a look at connect-four heuristics and decide how you can apply them to your game.
Crack license dat matlab gui. For example, a likely good heuristic for evaluation of board states would be to count the number of continuable 2-runs, 3-runs, and 4-runs and weight them into the score. Each 2-run would be worth 1 point, each 3 run would be worth 10 points, and each 4-run would be worth 1000 points) Another optimization strategy is to develop a heuristic that prioritizes where the minimax algorithm should search more -- usually by estimating some sort of certainty of the board evaluation function. With this strategy you should be able to get not-so-stupid AI in the same amount of time. However, really, really good AI takes a lot of effort to build, even in these sorts of 'simple' games, and it still may take upwards of 10 seconds or more to get smart moves out of the way.
On the other hand, there's some clever programming tricks such as pre-computing traversals through the tree while the human opponent is busy thinking. Hey, humans get to think while the computer does. Fair is fair! Hope I've been some help. It's a fun project. I have been trying to create a algorithm for the same program for a while now.
You are of course correct that first thing Your program should do, is to check if there is a way to form a 5 and win. And if there is not, the next should be to check if Your opponent can do that, and if yes, then defense. How much have You played gomoku Yourself?
How good grasp You have of the basics? Ok, next step is to think: how we can get to the positions where we can win? Obviously, to win we must have four in a row.
But it we just form four in a row like this: __________ ____XOOOO_ __________ Then opponent can close it. But if we form 'open four', like this: __________ ____OOOO__ __________ Then opponent cannot close both sides and You can win. So forming an open four is one way to win. Now comes the question: how can we form an open four? Surely, if we form 'open three', like this: __________ ____OOO___ __________ Then opponent can block us: ___________ ____XOOO___ ___________ and we are back to the start. To win, we can form two open threes at the same time: ____________ ____OOO_____ _____O______ ____O_______ Now if opponent blocks one of them, we can use the other to form an open four: ____________ _______O____ ___XOOO_____ _____O______ ____O_______ ____________ and win: ________O___ _______O____ ___XOOO_____ _____O______ ____O_______ ___X________ In gomoku terms, this is called 3x3, if You make two open threes at the same time.