Lunar Lander Assignment#
Lunar Lander is one of the oldest genres of computer games. It was literally inspired by the moon landings in the 1960s and 1970s. As player, you get to control a landing capsule to land it safely on the moon surface. One (advanced!) version that you can play right in your browser is Moon Lander by Seb Lee-Delisle. One very similar thing is the SpaceX Docking Simulator.
With your knowledge of drawing to the screen, using variables and deciding things in code, it is now time to write your very own little game! A lunar lander is a perfect fit for that. Especially since there are endless ways to customize it.
Minimum Requirements#
- Topic / Theme / Visuals are completely up to you (go nuts!)
- Needs to have an “Intro” screen that explains how to steer
- Needs to have a falling object
- Player controls it somehow (mouse, keyboard, yelling)
- Object is drawn to the ground (like gravity)
- Landing needs to be in the correct spot
- Landing needs to be “soft”
- Player must get feedback if they succeeded or failed
- Must be easily replayable (not by restarting the program!)
Optional#
Your Lunar Lander could be special in a number of ways. Here are some popular examples. This is not an exhaustive list, if you have other ideas than these, that is perfectly fine, too!
- Limited Fuel
- Points
- Time-Constraints
- Obstacles
- Animations
- 2D or even 3D physics
- Enemies
- Different Levels
- Audio
- Additional Game Mechanics
Grading#
This assignment (like the other assignments) will be graded. Because its scope is much larger, I would like you to know what I'm looking for in these games:
- Code Quality is paramount
- Use all the programming constructs like
variables
(remember the importance of good names!),if/else
statements, user input and so on. - Make good use of existing functions (
random()
,sin()
, etc.) - Make sure your code is modular (use functions, for example)
- Use all the programming constructs like
- Complexity of the simulation
- A simple solution (just one axis, very simplified physics) will satisfy the requirements
- Advanced simulations in two or three dimensions, maybe with directional momentum etc. will give you extra points
- Planning
- Take the planning stage seriously, and try a few of the methods we discussed in this course
- Add sketches or other planning documents you made to the git repository!
- Any Extras?
- Have at least ONE thing that stands out for your game (bare minimum!) – if you're out of ideas, look at "optional" above for inspiration.
- Putting in more effort will be rewarded (but the big one is still code quality; get that right first!)
- Git History
- Do not just hand in a single commit. Approach this in individual parts.
- Commit whenever you reach something that works (even if something else is still not fully finished!)
Assignment: Write a Lunar Lander
Write your own Lunar Lander, based on the description above. Please hand in your lunar lander by Thursday, December 7th 2023 18:30. This will give you three opportunities to get help in person, but you can always ask for help via e-mail or chat.
Give Credit
Please make sure to mention all help you were using! You are allowed to use external tutorials or help from your fellow students, but do mention it somewhere in your project's documentation.