Ben Evans University Second Year Project. Game Called Defender.

Dependencies:   mbed

https://os.mbed.com/media/uploads/evanso/84bc1a30759fd6a1e3f1fd1fae3e97c2.png

Hello, soldier, you have been specially selected as the defender of planet earth.

Your mission, if you choose to accept it. Fly around the planet and pulverise invading alien ships for as long as you can. Stop the aliens abducting the innocent people on the ground. Be warned if an alien ship manages to abduct a person and take them to top of the screen, they will no longer move randomly and will begin to hunt you down. This sounds like a challenge you were trained for.

But don’t worry soldier you’re not going into battle empty-handed. Your ship is equipped with a state of the art laser beam that has unlimited ammo and four smart bombs that will destroy anything on the screen. The ship also has three lives so use them wisely.

As time goes on more alien ships will arrive on planet earth increasing the difficulty of your mission. And remember the landscape bellow loops around so if you continually fly in the same direction you go to your original position. Good luck soldier.

Committer:
evanso
Date:
Mon May 25 18:39:51 2020 +0000
Revision:
82:3211b31e9421
Parent:
40:71f947254fda
Child:
85:87bc28b151d8
Made commenting and formatting of code more consistent.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
evanso 19:1bc0a2d22054 1 #ifndef ALIEN_H
evanso 19:1bc0a2d22054 2 #define ALIEN_H
evanso 19:1bc0a2d22054 3
evanso 82:3211b31e9421 4 // Included Headers ------------------------------------------------------------
evanso 19:1bc0a2d22054 5 #include "mbed.h"
evanso 19:1bc0a2d22054 6 #include "N5110.h"
evanso 19:1bc0a2d22054 7 #include "Gamepad.h"
evanso 20:febd920ec29e 8 #include "Weapons.h"
evanso 28:a5958497d5ce 9 #include "RandomMovement.h"
evanso 35:577c65bf914e 10 #include "CheckCollision.h"
evanso 19:1bc0a2d22054 11
evanso 20:febd920ec29e 12 /** Alien class
evanso 27:8bb2bd97c319 13 * @brief Draws and moves aliens
evanso 27:8bb2bd97c319 14 * @author Benjamin Evans, University of Leeds
evanso 27:8bb2bd97c319 15 * @date May 2020
evanso 27:8bb2bd97c319 16 */
evanso 35:577c65bf914e 17 class Alien: public RandomMovement, public CheckCollision {
evanso 19:1bc0a2d22054 18 public:
evanso 19:1bc0a2d22054 19 /** Constructor */
evanso 19:1bc0a2d22054 20 Alien();
evanso 19:1bc0a2d22054 21
evanso 19:1bc0a2d22054 22 /** Destructor */
evanso 19:1bc0a2d22054 23 ~Alien();
evanso 19:1bc0a2d22054 24
evanso 32:c006a9882778 25 /** Initalises Alien
evanso 32:c006a9882778 26 * @param position_x_start @details Random x start pos of alien
evanso 32:c006a9882778 27 * @param position_y_start @details Random y start pos of alien
evanso 82:3211b31e9421 28 * @param pad @details Gamepad object
evanso 32:c006a9882778 29 */
evanso 32:c006a9882778 30 void init(Gamepad &pad, int position_x_start, int position_y_start);
evanso 20:febd920ec29e 31
evanso 20:febd920ec29e 32 /** Draws the alien
evanso 27:8bb2bd97c319 33 * @param lcd @details N5110 object
evanso 27:8bb2bd97c319 34 * @param spaceship_pos @details xy spaceship position
evanso 27:8bb2bd97c319 35 * @param d_ @details Direction of joystick
evanso 27:8bb2bd97c319 36 * @param map_length_ @details length of map
evanso 27:8bb2bd97c319 37 * @param position_x_map_ @details x position of map
evanso 82:3211b31e9421 38 * @param alien_collision @details bool if a collision happend
evanso 20:febd920ec29e 39 */
evanso 27:8bb2bd97c319 40 void draw_alien(N5110 &lcd, Vector2D spaceship_pos, Direction d_,
evanso 34:85ccc16f24d2 41 int map_length_, int position_x_map_, bool alien_collision);
evanso 19:1bc0a2d22054 42
evanso 21:f7d7834e3af1 43 // Accessors and mutators --------------------------------------------------
evanso 20:febd920ec29e 44
evanso 31:6015e8ed859c 45 /** Gets the counter for alien time to fire
evanso 31:6015e8ed859c 46 * @return alien_fire_counter_
evanso 22:053c11a202e1 47 */
evanso 31:6015e8ed859c 48 int get_alien_fire_counter();
evanso 28:a5958497d5ce 49
evanso 82:3211b31e9421 50 /** Sets the position_x_ of alien
evanso 33:7fedd8029473 51 * @param position_x
evanso 33:7fedd8029473 52 */
evanso 33:7fedd8029473 53 void set_alien_x_pos(int position_x);
evanso 33:7fedd8029473 54
evanso 82:3211b31e9421 55 /** Sets the collision_people_element number
evanso 34:85ccc16f24d2 56 * @param people_element
evanso 34:85ccc16f24d2 57 */
evanso 34:85ccc16f24d2 58 void set_collision_people_element(int people_element);
evanso 34:85ccc16f24d2 59
evanso 34:85ccc16f24d2 60 /** Gets the the collision_people_element number
evanso 34:85ccc16f24d2 61 * @return collision_people_element
evanso 34:85ccc16f24d2 62 */
evanso 34:85ccc16f24d2 63 int get_collision_people_element();
evanso 34:85ccc16f24d2 64
evanso 82:3211b31e9421 65 /** Sets alien track_flag
evanso 34:85ccc16f24d2 66 * @param track_flag_
evanso 34:85ccc16f24d2 67 */
evanso 34:85ccc16f24d2 68 void set_track_flag(bool track_flag);
evanso 34:85ccc16f24d2 69
evanso 40:71f947254fda 70 /** Gets alien track_flag
evanso 40:71f947254fda 71 * @return track_flag_
evanso 40:71f947254fda 72 */
evanso 40:71f947254fda 73 bool get_track_flag();
evanso 40:71f947254fda 74
evanso 19:1bc0a2d22054 75 private:
evanso 19:1bc0a2d22054 76 // Function prototypes -----------------------------------------------------
evanso 21:f7d7834e3af1 77
evanso 21:f7d7834e3af1 78 /** Moves the alien towards the spaceship and around the map
evanso 21:f7d7834e3af1 79 * @param spaceship_pos @details : Position of the spaceship
evanso 21:f7d7834e3af1 80 */
evanso 24:479da6ca0e7e 81 void move_hunt_mode(Vector2D spaceship_pos);
evanso 19:1bc0a2d22054 82
evanso 27:8bb2bd97c319 83 /** Stops the alien from moving off the edge of the map and moves alien
evanso 27:8bb2bd97c319 84 * if the map loops
evanso 24:479da6ca0e7e 85 * @param map_length_@details : length of the map
evanso 27:8bb2bd97c319 86 * @param position_x_map_ @detials : the drawing start posisiton of the
evanso 27:8bb2bd97c319 87 * map
evanso 24:479da6ca0e7e 88 */
evanso 24:479da6ca0e7e 89 void off_screen_x_y_checker(int map_length_, int position_x_map_);
evanso 24:479da6ca0e7e 90
evanso 19:1bc0a2d22054 91 // Variables ---------------------------------------------------------------
evanso 19:1bc0a2d22054 92
evanso 27:8bb2bd97c319 93 /** Alien movement counter */
evanso 28:a5958497d5ce 94 int alien_move_counter_;
evanso 28:a5958497d5ce 95
evanso 28:a5958497d5ce 96 /** Alien fire bullet counter */
evanso 34:85ccc16f24d2 97 int alien_fire_counter_;
evanso 34:85ccc16f24d2 98
evanso 34:85ccc16f24d2 99 /** People element that alien as collided with */
evanso 34:85ccc16f24d2 100 int collision_people_element_;
evanso 34:85ccc16f24d2 101
evanso 34:85ccc16f24d2 102 /** Alien abducted people and now track spacehsip flag */
evanso 34:85ccc16f24d2 103 bool track_flag_;
evanso 28:a5958497d5ce 104
evanso 19:1bc0a2d22054 105 };
evanso 19:1bc0a2d22054 106
evanso 19:1bc0a2d22054 107 #endif