GamePlayer is the super-class of all user-implemented players.

GamePlayer declares some common functions:

A user-implemented player must, depending on target-game, subclass: Each of those above mentioned subclasses implements the function

Note: All implementations should take into account that multiple instances of a player are created when it's playing against itself.