I descend into Descendo
Usage
-
The README contained everything I needed to easily use the program:
Out of date? Mention's running
qmake
but no.pro
files are provided whichqmake
needs and noMakefile
provided which would eliminate the need forqmake
-
The program compiles/runs without errors:
It compiles without warnings and without Qt dependancies, I just added a simple
Makefile
-
The program worked as advertised:
Style
-
The code is cleaning divided into modules and multiple files:
There was a preliminary separation of modules with the
Animation.h
,Battle.h
andRole.h
but themain.cpp
could be greatly cleaned up by refactoring out a player class modle, monster module and control module. In addition, there was coupling between the animation module which requirs intimate knowledge about monsters, fights and castles. -
Variable and function names are meaningful:
-
Comments are used where appropriate:
Code is easy to follow, but consistent docstraings would aid in understanding how to use what modules are defined.
Philosophy
-
The program most closely follows the
ed-like
interface pattern:The interface was prompt-based rather than command based. With a well defined menu and selection module this wouldn't add too much complexity, but as implemented I'm not convinced the menu-based system is worth the extra complexity in the code over a simpler command interface.
-
This choice of pattern is a good one for this application:
-
This program follows the Rule of Silence and Least Surprise:
-
This program follows the Rules of Modularity and Composition:
A refactoring of a character class or player module, a monster module and a command interface module would allow for much more flexibility in interface style.
-
This program follows the Rules of Representation and Simplicity:
Lots of magic numbers and string literals in the code make for difficult maintenance and development. Moving complexity, especially in the form of character and monster stats and options into external text files would simplify the code and allow for easy game modification.