seeking advice about strategic-game ai

namenobodywants at gmail.com namenobodywants at gmail.com
Tue Sep 5 13:56:21 EDT 2017


i plan to try writing an ai for a strategic game, and i've pretty much narrowed the candidates down to either checkers or 

reversi. i would prefer to tackle the easier game, so can anybody tell me which one is easier to program decently? (or maybe 

i'm missing a good candidate - basically all i want is a game that's less trivial than tictactoe). by "decently" i mean that it 

should make reasonably skillful moves in a reasonable amount of time, but speed and playing strength take a backseat to the 

simplicity and well-motivatedness of the algorithm. (this isn't supposed to be a professional-caliber ai ... it will be more like a 

kid's science-fair project). 

more particularly, can anybody give me some high-level guidance about evaluation functions for either game? (no spoilers 

please - i want this to be really my own project). as far as reversi goes, my ideas on this matter are based mostly on the 

"basic diagram" in goro hasegawa's "how to win at othello". (i have a library hold on norvig's "paradigms of ai programming", 

which devotes an entire chapter to reversi, but the book hasn't come in yet). as for checkers, i was thinking about a weighted 

sum of three basic measurements ... if "you" and "i" are the players, then i would measure

*) (my relative mobility)          = (the number of moves i have) - (the number of moves you have)
*) (my relative king presence)  = (the number of kings i have)  - (the number of kings you have)
*) (my relative pawn presence) = (the number of pawns i have) - (the number of pawns you have)

indeed, i've even wondered whether a viable evaluation could be based on relative mobility alone - that would, after all, work 

perfectly if there were no limit to the search horizon - but on the other hand i'm also prepared to find out that any viable 

evaluation needs to be more sophisticated. i wouldn't be surprised, for example, if the approach i'm suggesting could work 

but only if the weights in the sum are adjusted according to the number of moves made or some other criterion. 

anyway, that should suffice to give you an idea of where i'm at with this. thanks if you can help

peace
stm 



More information about the Python-list mailing list