chess 2-player chess game that can be run from the command line important concepts slideable and steppable parent classes to separate functionality of different pieces recursive deep-duping to calculate validity of moves how to run