player. Works for gtk client. Compiles for Android but there's no UI
yet to specify more than one dict. Management of dupicate dicts
without duplicating memory -- refcounting -- will be up to the
platforms.
implemented (when not smart) as trying to match the human's score to a
per-robot value between 1 and 100 that gives the percentage of best
moves to store before picking randomly from among them. So a 1 means
save only the best move and always pick it; 100 means save all the
best moves (how many are saved is compile-time configurable) and pick
one of them. Because it's settable per-robot a smarter robot can be
played against a dumber one (though I may choose not to make it
settable per-robot on shipping versions.)
possible moves in either order both within a cached subset and when
building cached subsets. Still a bit buggy (shows the same move twice
when moving backwards and reaches the top-scoring move) and not well
tested.
constrain the search for moves to those that involve filling only
tiles within the rect -- while still using the rest of the board as
context for the moves. Robot moves use the whole board.