whack-a-mole for the terminal
Usage
-
The README contained everything I needed to easily use the program:
-
The program compiles/runs without errors:
-
The program worked as advertised:
Style
-
The code is cleaning divided into modules and multiple files:
Nice separation of the
option
module. Some implementation code that is in header files would probably be best moved to.cpp
implementation files. -
Variable and function names are meaningful:
-
Comments are used where appropriate:
Probably a good idea to consistently apply docstring style comments for all classes/methods, even though the names make them fairly self explanatory.
Philosophy
-
The program most closely follows the
ed-like
interface pattern: -
This choice of pattern is a good one for this application:
Altough this interface pattern works quite well a
rogue-like
pattern might be appropriate as well. Since it wouldn't make too much sense to make a non-interactive mode anyway, I don't think the rogue-like interface would have any strong dissadvantages. -
This program follows the Rule of Silence and Least Surprise:
-
This program follows the Rules of Modularity and Composition:
If there was a simple command interpreter that would accept commands like
start modeA
, combined with a non-interactive standard input mode you could easily provide a text interface like the one currently available as well as a graphical 'whack-a-mole' style interface using the same game core. -
This program follows the Rules of Representation and Simplicity:
The gamemodes could probably all extend a common base class which would simplify the main game loop. Use polymorphism instead of an if/else if sequence. The size of the row is determined by the magic number 4. This could be made a variable supplied on the command line, or obtaine from a config file.