harry rance
/
Revised_Space_Invaders
Harry Rance 200925395 Embedded Systems Project
Boss.h@7:569f3fc70ac5, 2017-05-03 (annotated)
- Committer:
- harryrance
- Date:
- Wed May 03 16:33:20 2017 +0000
- Revision:
- 7:569f3fc70ac5
- Parent:
- 6:dca8b5e2ebe5
Committed with full documentation generated.;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
harryrance | 2:50feb42b982c | 1 | #ifndef BOSS_H |
harryrance | 2:50feb42b982c | 2 | #define BOSS_H |
harryrance | 2:50feb42b982c | 3 | |
harryrance | 2:50feb42b982c | 4 | #include "mbed.h" |
harryrance | 2:50feb42b982c | 5 | #include "N5110.h" |
harryrance | 2:50feb42b982c | 6 | #include "Gamepad.h" |
harryrance | 2:50feb42b982c | 7 | |
harryrance | 6:dca8b5e2ebe5 | 8 | /** Boss Class |
harryrance | 6:dca8b5e2ebe5 | 9 | @brief Library for generating the boss fight and it's mechanics. |
harryrance | 6:dca8b5e2ebe5 | 10 | @brief Can draw the main boss with it's health bar, and implement the movement and bullet collision mechanics. |
harryrance | 6:dca8b5e2ebe5 | 11 | @brief Can also set the velocity and position of the boss sprite, and drop bombs periodically to increase difficulty. |
harryrance | 6:dca8b5e2ebe5 | 12 | |
harryrance | 6:dca8b5e2ebe5 | 13 | @author Harry Rance |
harryrance | 6:dca8b5e2ebe5 | 14 | @date 2nd May 2017 |
harryrance | 6:dca8b5e2ebe5 | 15 | |
harryrance | 6:dca8b5e2ebe5 | 16 | */ |
harryrance | 2:50feb42b982c | 17 | class Boss |
harryrance | 2:50feb42b982c | 18 | { |
harryrance | 2:50feb42b982c | 19 | public: |
harryrance | 6:dca8b5e2ebe5 | 20 | |
harryrance | 6:dca8b5e2ebe5 | 21 | // Constructor |
harryrance | 2:50feb42b982c | 22 | Boss(); |
harryrance | 6:dca8b5e2ebe5 | 23 | |
harryrance | 6:dca8b5e2ebe5 | 24 | //Destructor |
harryrance | 2:50feb42b982c | 25 | ~Boss(); |
harryrance | 6:dca8b5e2ebe5 | 26 | |
harryrance | 6:dca8b5e2ebe5 | 27 | /** Initialise |
harryrance | 6:dca8b5e2ebe5 | 28 | * Initialises with the x and y origin of both the boss sprite and health bar, and also the original amount of |
harryrance | 6:dca8b5e2ebe5 | 29 | * health, movement speed, coins and score. |
harryrance | 6:dca8b5e2ebe5 | 30 | * @param x_origin - sets the origin column (0-83) for the boss sprite. |
harryrance | 6:dca8b5e2ebe5 | 31 | * @param y_origin - sets the origin row (0-47) for the boss sprite. |
harryrance | 6:dca8b5e2ebe5 | 32 | * @param health_x - sets the origin column (0-83) for the health bar. |
harryrance | 6:dca8b5e2ebe5 | 33 | * @param health_y - sets the origin row (0-47) for the health bar. |
harryrance | 6:dca8b5e2ebe5 | 34 | * @param health - sets the original amount of health for the boss to have (integer value). |
harryrance | 6:dca8b5e2ebe5 | 35 | * @param speed - sets the speed of movement for the boss. |
harryrance | 6:dca8b5e2ebe5 | 36 | * @param coins - sets the original amount of coins at the start of the boss fight. |
harryrance | 6:dca8b5e2ebe5 | 37 | * @param score - sets the original score at the start of the boss fight. |
harryrance | 6:dca8b5e2ebe5 | 38 | */ |
harryrance | 3:43970d8d642e | 39 | void initialise(int x_origin, int y_origin, int health_x, int health_y, int health, int speed, int coins, int score); |
harryrance | 6:dca8b5e2ebe5 | 40 | |
harryrance | 6:dca8b5e2ebe5 | 41 | /** Draw |
harryrance | 6:dca8b5e2ebe5 | 42 | * Draws the boss sprite, bombs and health bar on the screen, with regards to the update function. |
harryrance | 6:dca8b5e2ebe5 | 43 | */ |
harryrance | 2:50feb42b982c | 44 | void draw(N5110 &lcd); |
harryrance | 6:dca8b5e2ebe5 | 45 | |
harryrance | 6:dca8b5e2ebe5 | 46 | /** Boss_Sprite |
harryrance | 6:dca8b5e2ebe5 | 47 | * Sets the respective pixels for the boss sprite to be drawn with regards to arbitraty x and y positions. |
harryrance | 6:dca8b5e2ebe5 | 48 | */ |
harryrance | 2:50feb42b982c | 49 | void boss_sprite(N5110 &lcd); |
harryrance | 6:dca8b5e2ebe5 | 50 | |
harryrance | 6:dca8b5e2ebe5 | 51 | /** Health_Bar_Draw |
harryrance | 6:dca8b5e2ebe5 | 52 | * Sets the pixels for both the outer, static health bar border, and the inner, dynamic health bar which |
harryrance | 6:dca8b5e2ebe5 | 53 | * changes length with regards to how many times the boss has been bit with a user's bullet. |
harryrance | 6:dca8b5e2ebe5 | 54 | */ |
harryrance | 2:50feb42b982c | 55 | void health_bar_draw(N5110 &lcd); |
harryrance | 6:dca8b5e2ebe5 | 56 | |
harryrance | 6:dca8b5e2ebe5 | 57 | /** Draw_Bombs |
harryrance | 6:dca8b5e2ebe5 | 58 | * Periodically draws three bombs that fall down from the boss position to collide with the user ship. |
harryrance | 6:dca8b5e2ebe5 | 59 | * Can reset the position of the bombs when the screen limit is reached in order to loop movement an indefinite amount of times. |
harryrance | 6:dca8b5e2ebe5 | 60 | */ |
harryrance | 2:50feb42b982c | 61 | void draw_bombs(N5110 &lcd); |
harryrance | 6:dca8b5e2ebe5 | 62 | |
harryrance | 6:dca8b5e2ebe5 | 63 | /** Update |
harryrance | 6:dca8b5e2ebe5 | 64 | * Updates the movement and game mechanics parameters for the boss fight section of the game. |
harryrance | 6:dca8b5e2ebe5 | 65 | */ |
harryrance | 2:50feb42b982c | 66 | void update(); |
harryrance | 6:dca8b5e2ebe5 | 67 | |
harryrance | 6:dca8b5e2ebe5 | 68 | /** Set Bomb Velocity |
harryrance | 6:dca8b5e2ebe5 | 69 | * Sets the velocity for the bombs to move at in a 2D Vector with x and y members. |
harryrance | 6:dca8b5e2ebe5 | 70 | * @param b_vel - 2D vector with x and y members of bomb velocity. |
harryrance | 6:dca8b5e2ebe5 | 71 | */ |
harryrance | 2:50feb42b982c | 72 | void set_bomb_vel(Vector2D b_vel); |
harryrance | 6:dca8b5e2ebe5 | 73 | |
harryrance | 6:dca8b5e2ebe5 | 74 | /** Set Bomb Position |
harryrance | 6:dca8b5e2ebe5 | 75 | * Sets the position for the bombs in a 2D Vector with x and y members. |
harryrance | 6:dca8b5e2ebe5 | 76 | * @param b_pos - 2D vector with x and y members of bomb position. |
harryrance | 6:dca8b5e2ebe5 | 77 | */ |
harryrance | 2:50feb42b982c | 78 | void set_bomb_pos(Vector2D b_pos); |
harryrance | 6:dca8b5e2ebe5 | 79 | |
harryrance | 6:dca8b5e2ebe5 | 80 | /** Get Bomb Velocity |
harryrance | 6:dca8b5e2ebe5 | 81 | * Gets the velocity that the bombs are moving at and returns a 2D Vector with x and y members. |
harryrance | 6:dca8b5e2ebe5 | 82 | */ |
harryrance | 2:50feb42b982c | 83 | Vector2D get_bomb_vel(); |
harryrance | 6:dca8b5e2ebe5 | 84 | |
harryrance | 6:dca8b5e2ebe5 | 85 | /** Get Bomb Position |
harryrance | 6:dca8b5e2ebe5 | 86 | * Gets the position of the bombs and returns a 2D Vector with x and y members. |
harryrance | 6:dca8b5e2ebe5 | 87 | */ |
harryrance | 2:50feb42b982c | 88 | Vector2D get_bomb_pos(); |
harryrance | 6:dca8b5e2ebe5 | 89 | |
harryrance | 6:dca8b5e2ebe5 | 90 | /** Set Boss Velocity |
harryrance | 6:dca8b5e2ebe5 | 91 | * Sets the velocity for the boss to move at in a 2D Vector with x and y members. |
harryrance | 6:dca8b5e2ebe5 | 92 | * @param v - 2D vector with x and y members of boss velocity. |
harryrance | 6:dca8b5e2ebe5 | 93 | */ |
harryrance | 2:50feb42b982c | 94 | void set_velocity(Vector2D v); |
harryrance | 6:dca8b5e2ebe5 | 95 | |
harryrance | 6:dca8b5e2ebe5 | 96 | /** Get Boss Velocity |
harryrance | 6:dca8b5e2ebe5 | 97 | * Gets the velocity that the boss is moving at and returns a 2D Vector with x and y members. |
harryrance | 6:dca8b5e2ebe5 | 98 | */ |
harryrance | 2:50feb42b982c | 99 | Vector2D get_velocity(); |
harryrance | 6:dca8b5e2ebe5 | 100 | |
harryrance | 6:dca8b5e2ebe5 | 101 | /** Get Boss Position |
harryrance | 6:dca8b5e2ebe5 | 102 | * Gets the position of the boss and returns a 2D Vector with x and y members. |
harryrance | 6:dca8b5e2ebe5 | 103 | */ |
harryrance | 2:50feb42b982c | 104 | Vector2D get_pos(); |
harryrance | 6:dca8b5e2ebe5 | 105 | |
harryrance | 6:dca8b5e2ebe5 | 106 | /** Set Boss Position |
harryrance | 6:dca8b5e2ebe5 | 107 | * Sets the position for the boss in a 2D Vector with x and y members. |
harryrance | 6:dca8b5e2ebe5 | 108 | * @param p - 2D vector with x and y members of boss position. |
harryrance | 6:dca8b5e2ebe5 | 109 | */ |
harryrance | 2:50feb42b982c | 110 | void set_pos(Vector2D p); |
harryrance | 6:dca8b5e2ebe5 | 111 | |
harryrance | 6:dca8b5e2ebe5 | 112 | /** Decrement Health Constant |
harryrance | 6:dca8b5e2ebe5 | 113 | * Function to decrement the intialised health constant by an integer value every time |
harryrance | 6:dca8b5e2ebe5 | 114 | * the boss is hit with a bullet. |
harryrance | 6:dca8b5e2ebe5 | 115 | */ |
harryrance | 2:50feb42b982c | 116 | void decrement_health_constant(); |
harryrance | 6:dca8b5e2ebe5 | 117 | |
harryrance | 6:dca8b5e2ebe5 | 118 | /** Get Health Bar Constant |
harryrance | 6:dca8b5e2ebe5 | 119 | * Returns the current health of the boss before/after being decremented. |
harryrance | 6:dca8b5e2ebe5 | 120 | */ |
harryrance | 2:50feb42b982c | 121 | int get_health_bar_constant(); |
harryrance | 6:dca8b5e2ebe5 | 122 | |
harryrance | 6:dca8b5e2ebe5 | 123 | /** Add Boss Score |
harryrance | 6:dca8b5e2ebe5 | 124 | * Function to add an integer value onto the score variable each time the boss is hit. |
harryrance | 6:dca8b5e2ebe5 | 125 | */ |
harryrance | 2:50feb42b982c | 126 | void add_boss_score(); |
harryrance | 6:dca8b5e2ebe5 | 127 | |
harryrance | 6:dca8b5e2ebe5 | 128 | /** Add Boss Coins |
harryrance | 6:dca8b5e2ebe5 | 129 | * Function to add an integer value onto the coins variable each time the boss is hit. |
harryrance | 6:dca8b5e2ebe5 | 130 | */ |
harryrance | 2:50feb42b982c | 131 | void add_boss_coins(); |
harryrance | 6:dca8b5e2ebe5 | 132 | |
harryrance | 6:dca8b5e2ebe5 | 133 | /** Get Boss Score |
harryrance | 6:dca8b5e2ebe5 | 134 | * Returns an integer value for the current score in the boss fight. |
harryrance | 6:dca8b5e2ebe5 | 135 | */ |
harryrance | 2:50feb42b982c | 136 | int get_boss_score(); |
harryrance | 6:dca8b5e2ebe5 | 137 | |
harryrance | 6:dca8b5e2ebe5 | 138 | /** Get Boss Coins |
harryrance | 6:dca8b5e2ebe5 | 139 | * Returns an integer value for the current coins in the boss fight. |
harryrance | 6:dca8b5e2ebe5 | 140 | */ |
harryrance | 2:50feb42b982c | 141 | int get_boss_coins(); |
harryrance | 6:dca8b5e2ebe5 | 142 | |
harryrance | 6:dca8b5e2ebe5 | 143 | /** Draw Lives |
harryrance | 6:dca8b5e2ebe5 | 144 | * Sets the pixels in the shape of a heart to indicate how many lives remain for the user. |
harryrance | 6:dca8b5e2ebe5 | 145 | * Sets either 0, 1, 2 or 3 hearts depending on how many lives should be remaining. |
harryrance | 6:dca8b5e2ebe5 | 146 | */ |
harryrance | 2:50feb42b982c | 147 | void draw_lives(N5110 &lcd); |
harryrance | 6:dca8b5e2ebe5 | 148 | |
harryrance | 6:dca8b5e2ebe5 | 149 | /** Decrement Lives |
harryrance | 6:dca8b5e2ebe5 | 150 | * Decrements the amount of lives to be displayed by 1 every time the user is hit by a bomb from the boss. |
harryrance | 6:dca8b5e2ebe5 | 151 | */ |
harryrance | 2:50feb42b982c | 152 | void dec_lives(); |
harryrance | 6:dca8b5e2ebe5 | 153 | |
harryrance | 6:dca8b5e2ebe5 | 154 | /** Increment Lives |
harryrance | 6:dca8b5e2ebe5 | 155 | * Implements the ability for users to buy back one life per 100 coins in game. |
harryrance | 6:dca8b5e2ebe5 | 156 | * Increments the life variable in order to re-draw one heart on the screen every time a life is purchased. |
harryrance | 6:dca8b5e2ebe5 | 157 | * Up to 3 lives can be displayed at once. |
harryrance | 6:dca8b5e2ebe5 | 158 | */ |
harryrance | 3:43970d8d642e | 159 | void inc_lives(); |
harryrance | 6:dca8b5e2ebe5 | 160 | |
harryrance | 6:dca8b5e2ebe5 | 161 | /** Lives |
harryrance | 6:dca8b5e2ebe5 | 162 | * Integer value that records how many lives the user currently has. |
harryrance | 6:dca8b5e2ebe5 | 163 | * Can be decremented by taking damage from the boss boms. |
harryrance | 6:dca8b5e2ebe5 | 164 | * Can be incremented by buying back one life per 100 coins in game (max 3 lives). |
harryrance | 6:dca8b5e2ebe5 | 165 | */ |
harryrance | 2:50feb42b982c | 166 | int lives(); |
harryrance | 2:50feb42b982c | 167 | |
harryrance | 2:50feb42b982c | 168 | private: |
harryrance | 2:50feb42b982c | 169 | int _boss_x; |
harryrance | 2:50feb42b982c | 170 | int _boss_y; |
harryrance | 2:50feb42b982c | 171 | int _bomb_x; |
harryrance | 2:50feb42b982c | 172 | int _bomb_y; |
harryrance | 2:50feb42b982c | 173 | int _heart_x; |
harryrance | 2:50feb42b982c | 174 | int _heart_y; |
harryrance | 2:50feb42b982c | 175 | int _heart_var; |
harryrance | 2:50feb42b982c | 176 | int _b_x; |
harryrance | 2:50feb42b982c | 177 | int _b_y; |
harryrance | 2:50feb42b982c | 178 | int _health_x; |
harryrance | 2:50feb42b982c | 179 | int _health_y; |
harryrance | 2:50feb42b982c | 180 | int _health; |
harryrance | 2:50feb42b982c | 181 | int _x; |
harryrance | 2:50feb42b982c | 182 | int _y; |
harryrance | 2:50feb42b982c | 183 | int _health_bar_constant; |
harryrance | 2:50feb42b982c | 184 | int _boss_score; |
harryrance | 2:50feb42b982c | 185 | int _boss_coins; |
harryrance | 2:50feb42b982c | 186 | int _boss_lives; |
harryrance | 2:50feb42b982c | 187 | |
harryrance | 2:50feb42b982c | 188 | Vector2D _velocity; |
harryrance | 2:50feb42b982c | 189 | Vector2D _b_velocity; |
harryrance | 2:50feb42b982c | 190 | }; |
harryrance | 2:50feb42b982c | 191 | #endif |
harryrance | 2:50feb42b982c | 192 |