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.
For Stage 3 : The aim is to add a nice GUI to the simulation.
add to Stage 2 to complete the planetarium. This will include:
- changing the time step for the simulation
- zoom capabilities for zooming in and out of the viewing window setting the centre of the view in the simulation
- it must compile and run in the lab
- preserve the previous two stage’s functionality
- appropriate use of a behavioural design pattern for the GUI
- clear code using meaningful variable and method names as well as informative commenting and documentation
- a memory efficient design.
- interface to change the time step of the simulation
- interface to center the viewing window of the simulation
- interface to scale the viewing window
- a sensible testing framework for your code;
- introduce an automatic adjust “button“ that adjust the viewing window at a given point in time so that all planets are visible in the viewing window.
- have additional info panels that show information of planetary objects by clicking on planetary objects