The goal of this project is to create your own terraformer program.
Your challenge is to display a map and edit it at runtime. The map is a wireframed map with tiles that are squares having all the same size. The ground must be altered by raising, lowering or tilting tiles.
- the window can be closed using events,
- the game manages the input from the mouse click and keyboard,
- animations in your program are frame rate independent.
- The map must be displayed using a 3D projection (whether isometric or parallel),
- the tiles and their corners must be selected using the mouse,
- at least 3 effects (including the modification of altitude) must be implemented and selectable with a toolbar in the window (e.g. reinitialization of the tiles’ altitudes, modification of the size of the area of effect, switching between “tiles selectable” and “corners selectable”).
- Your window should stick between 800x600 pixels and 1920x1080 pixels,
- the size of the map should be selected using editable textboxes in the window,
- help boxes should appear as the mouse hovers elements in the toolbar(s),
- the buttons should have at least 3 visual states : idle, hover, and clicked,
- tiles should have a texture,
- the format of saved maps should be in a .legend file,
- moving around on the map should be done with arrow keys and/or by positionning the mouse cursor on the edges of the window,
- zooming up and down should be done with keyboard and/or the scrolling button of the mouse.
- The program could save the map in a file at the end of the program in the terminal,
- the program could save the map in a file at runtime using buttons and tools,
- the program could load a map at the beginning of the program in the terminal (argument or stdin),
- the program could load a map at runtime using buttons and tools,
- the name of the saved files could be chosen at runtime,
- tools can be selected using keyboard shortcuts,
- sounds could be played on user actions,
- textures of the tiles could change depending on the direction of their slope,
- elements (e.g. buildings, roads) could be added on the map in compliance with the landforms,
- water areas could be added.
- Procedural generation using perlin noise.
- Lot of animations using 3d formulas.