Skip to content

Latest commit

 

History

History
25 lines (18 loc) · 1.87 KB

asteroids.md

File metadata and controls

25 lines (18 loc) · 1.87 KB
title description
ePortfolio
Moon Lander and Asteroids

For my Object-Oriented Programming class, I worked on several big projects throughout the semester, including remakes of the classic games Moon Lander and Asteroids. These projects helped me learn OOP principles such as encapsulation and inheritance. I made several additions to the games in order to further develop my programming skills. My projects were written in C++, and used OpenGL for the graphics. Moon Lander was completed in 2 weeks, and Asteroids was completed in 4.

Moon Lander

In the Moon Lander game, you need to maneuver your spacecraft to the landing pad before running out of fuel and without crashing into the moon. Some of the additions I made were:

  • Varying levels of difficulty that affect the size of the landing platform and adapt the algorithm for ground generation.
  • A landing guide that predicts your trajectory and shows the latest time you can activate your engine to avoid crashing.
  • A user interface including a game menu and a fuel meter.
<iframe width="100%" height="360" src="https://www.youtube.com/embed/4S6C239ms9Y" frameborder="0" allowfullscreen></iframe>

Asteroids

In the Asteroids game, you fly your spaceship through an asteroid field and can gain points by shooting and breaking asteroids. I really wanted to go above and beyond with this project, and I made quite a few additions that were not part of the original assignment. These included:

  • An AI system for enemy ships that allows them to target the player while avoiding asteroids.
  • Various ship and weapon types. Defeated ships will drop pickups such as health and ammunition.
  • A system for drawing scalable graphics with OpenGL.
  • Animation and particle effects, game HUD, and menu and button systems.
<iframe width="100%" height="360" src="https://www.youtube.com/embed/v7Lh0hoqH3Q" frameborder="0" allowfullscreen></iframe>