I am trying to find a good evaluation function for a game with:

  • A 7x7 tile board

  • 2 players, given an equal number(>=3 currently undetermined) of stones placed randomly on the tiles

  • A turn is consisted of a player moving a stone owned by that player, vertically or horizontally but not diagonally to a very next tile of itself

  • A player loses when out of moves: a player is out of moves when every stone that player owns, has its very next tiles, except not for diagonals necessarily, occupied either by the board edge or other stones

Right now, my evaluation function's return value increases:

  • if the total moves available to the player is increasing, and/or

  • average distance to the middle tile of the board is decreasing

Question: Is there a better strategy? How can I improve my evaluation function?

  • 1
    $\begingroup$ Welcome to AI! This is definitely the type of problem studied in Combinatorial Game Theory. There's even a formal name for your victory condition: "normal play". It sounds like pathfinding is a factor, so you might want to take a look at that. I'm not fully understanding your current evaluation function--please describe it comprehensively in full detail. $\endgroup$
    – DukeZhou
    Commented Nov 12, 2017 at 22:27

1 Answer 1


If you have the best combination of distance between the stones, you should choose the best move to win. In this case, you have to be close to where your opponent plays. It is best to do this by surrounding your opponent's stones. You should always put the first stone in middle or corner of the table.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .