I was contacted recently by a PHD student of Mathematical Statistics and a lecturer of Computer Science topics in South Africa. He is on a quest for a project for his advanced students and he suggested that my Ingenious implementation provides a unique opportunity for creating bot logic without having to design and/or implement a user interface.
The bot implementations answer these questions by navigating their own copy of the board and by using those objects (and their corresponding data structures) make their decision based on a weighted analysis of options. The final answers are derived and returned to the core game logic and play continues with subsequent players. The human player implementation overrides these methods by simply passing control to the user interface for the human to answer. Once answered, the selections are returned to the core logic in the same fashion as the bot and play continues. The core game logic is neither aware nor interested in distinguishing human players from bots.
I’m flattered by the request and relish the idea of being part of the project. However, after some thought I respectfully declined the offer. My reason for implementing Ingenious was not to provide the best bots and/or online experience for the game. The best experience you can have is with the physical game and I openly encourage those who like the game to purchase a copy. By submitting my code to the project I feel that I would lose control of the implementation and would be unable to remove it from the web if requested by the designer and/or the publisher. I also feel that I would indirectly contribute to potentially multiple implementations were the code morphed and published on other sites.