Harry Rance 200925395 Embedded Systems Project

Dependencies:   mbed

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?

UserRevisionLine numberNew 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