Stage1:
the following must all be achieved:
it must compile and run on the lab machines; sensible / appropriate OO design.
it must read the configuration file;
define our solar system
objects are moving according to Newton’s laws
appropriate use of a creational design pattern; 用了factory design pattern
sensible error checking, e.g., for missing or incorrect configuration files;
clear code using meaningful variable and method names as well as informative commenting and documentation;
memory is handled efficiently;
clear code structure, that will be simple to maintain and extend;
Extensions to the functionality that are simple and effective, using only Qt libraries and what you write: e.g., ability to change colours, position, velocity and size of planetary objects from within the program and then save the changes to the existing configuration file,
pause and resume the simulation, use bitmaps for planets.
Stage2:
Structure your planetary objects into:
Solar Systems that contain a sun and planets
Galaxies that contain solar systems and black holes Cluster that may contain either other clusters or galaxies
Define zodiacs as a set of lines between stars and render them in the simulation
it must compile and run on the lab machines;
the previous behaviour must be preserved;
appropriate use of a structural design pattern for solar systems, galaxies, and clusters;用了component design pattern
it must correctly use the configuration file to render all planets on the screen
crash safety: the program will not crash given invalid configuration files;
clear code using meaningful variable and method names as well as informative commenting and documentation;
have clusters implemented in a compositional fashion
the configuration file has a format that permits loading solar systems, galaxies, and clusters.
zodiac lines are definable in the configure file or via a dialog box; zodiac lines are rendered depending whether they are enabled via a “zodiac” button,
Solar systems, galaxies,and clusters are treated compositionally in the force computations between planetary objects.