Expand|Select|Wrap|Line Numbers
- /** evaluate board state from player's point of view */
- int evaluate(Node node, int player) { /* using NEGMAX version of MINIMAX */
- int value = 0;
- if (wonFor(node.state, player)) {
- value = 1; }
- else if (wonFor(node.state, -player)) {
- value = -1; }
- else {
- Vector successors = space.getSuccessors(node, -player);
- Vector evaluations = new Vector();
- for (int i = 0; i < successors.size(); i++) {
- Node successor = (Node)successors.get(i);
- successor.evaluation = evaluate(successor, -player);
- if (successor.evaluation > value) value = successor.evaluation; }
- value = -value; }
- return(value);
- }
- Tree generation
- /** Generate tree of board states with evaluations appended */
- Vector getTree(Node node, int player) {
- Vector tree = new Vector();
- tree.add(evaluate(node, player) + " for " + name(player) + " " + node);
- if (winnerOf(node.state) == 0) {
- Vector children = space.getSuccessors(node, -player);
- for (int i = 0; i < children.size(); i++) {
- tree.add(getTree((Node)children.elementAt(i), -player)); } }
- return(tree);
- }
-void ttt_gametree_generate(ttt<Item>*, bool): generates a full game tree and the second argument bool indicates if it is the user's turn (true) or the agent's turn (false) // similar to the tree generation maybe?
-int ttt_bestmove(const ttt<Item>*): returns the best move of the agent, maybe what I'm looking for in the firs java function?
I'm trying to learn and having examples would help alot. I'm generating it with linked list over an array just for something different.
Thanks.