The dictionary I use for Lexicant is an open-source spell-checking dictionary... its not perfect, no dictionary is, but I've found it pretty decent so far.
I purposely tried not to make the computer "
super"
smart, because the game is fairly difficult as it is. I'm pretty sure that if I wanted to I could make it so that the computer would win 99.5% of the time, but then it wouldn't be much fun now would it! Right now the script just searches for a random word which matches the wordstem in play, and then plays it. Whether or not that word has the proper # of letters for it to win (i.e. odd or even depending on who went first) isn't calculated. The computer's benefit is that it will always have a better vocabulary than the person its playing. Easy / Normal / Difficult is the way to regulates the script's vocabulary (though it also regulates the vocabulary allowed to be used by the human player, a bug I've not yet fixed).
Hope that makes sense! Originally I had inserted logic into the script's calculations - i.e. it would choose 10 random words that fit the word stem, and then decide from there which of those 10 would be the most appropriate play based on word-length and additional extensions that could be played off of it. But then I discovered the thing was practically unbeatable. (At least by me)
Person-to-person gameplay would be ideal because then you level out the playing field... you could also allow for bluffing, which is actually crucial to the game but sort of difficult to implement with a computer player. (In the paper-and-pencil version of this game, a common strategy is to "
bluff"
that you have a word in mind - your opponent can then "
challenge"
you to specify the word you were playing, and he will win if you can't answer.)