Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Enemy/Enemy.h@6:f06ce4cf068a, 2019-05-08 (annotated)
- Committer:
- adat80
- Date:
- Wed May 08 23:21:32 2019 +0000
- Revision:
- 6:f06ce4cf068a
- Parent:
- 5:8bd09c675f28
finished
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| adat80 | 1:3916f272663e | 1 | #ifndef ENEMY_H |
| adat80 | 1:3916f272663e | 2 | #define ENEMY_H |
| adat80 | 1:3916f272663e | 3 | |
| adat80 | 1:3916f272663e | 4 | #include "mbed.h" |
| adat80 | 1:3916f272663e | 5 | #include "N5110.h" |
| adat80 | 1:3916f272663e | 6 | #include "Gamepad.h" |
| adat80 | 1:3916f272663e | 7 | #include <time.h> |
| adat80 | 1:3916f272663e | 8 | |
| adat80 | 1:3916f272663e | 9 | |
| adat80 | 1:3916f272663e | 10 | /** CrossHairs Class |
| adat80 | 1:3916f272663e | 11 | @author Adam Jones, University of Leeds |
| adat80 | 1:3916f272663e | 12 | @brief Controls the Enemy Sprites in the Wall Defence game |
| adat80 | 6:f06ce4cf068a | 13 | @date April 2019 |
| adat80 | 5:8bd09c675f28 | 14 | @brief Revision 1.0 |
| adat80 | 5:8bd09c675f28 | 15 | |
| adat80 | 5:8bd09c675f28 | 16 | @code |
| adat80 | 5:8bd09c675f28 | 17 | #include "Enemy.h" |
| adat80 | 5:8bd09c675f28 | 18 | #include "N5110.h" |
| adat80 | 5:8bd09c675f28 | 19 | |
| adat80 | 5:8bd09c675f28 | 20 | |
| adat80 | 5:8bd09c675f28 | 21 | int main() |
| adat80 | 5:8bd09c675f28 | 22 | { |
| adat80 | 5:8bd09c675f28 | 23 | //initialise |
| adat80 | 5:8bd09c675f28 | 24 | float timeToAttack = 0.0; //time at which the enemy will begin to move forwards |
| adat80 | 5:8bd09c675f28 | 25 | float speed = 0.5; //speed in pixels per frame at which enemy will move forwards |
| adat80 | 5:8bd09c675f28 | 26 | Enemy _enemy; |
| adat80 | 5:8bd09c675f28 | 27 | _enemy.init(timeToAttack, speed); |
| adat80 | 5:8bd09c675f28 | 28 | |
| adat80 | 5:8bd09c675f28 | 29 | //set action |
| adat80 | 5:8bd09c675f28 | 30 | Action myAc = moving; //Action enumerator |
| adat80 | 5:8bd09c675f28 | 31 | _enemy.set_current_action(myAc); //set enemies current action |
| adat80 | 5:8bd09c675f28 | 32 | |
| adat80 | 6:f06ce4cf068a | 33 | //get action |
| adat80 | 6:f06ce4cf068a | 34 | myAc = _enemy.get_current_action(); |
| adat80 | 6:f06ce4cf068a | 35 | |
| adat80 | 6:f06ce4cf068a | 36 | //get position |
| adat80 | 6:f06ce4cf068a | 37 | enemy.get_pos() |
| adat80 | 6:f06ce4cf068a | 38 | |
| adat80 | 6:f06ce4cf068a | 39 | //set position |
| adat80 | 6:f06ce4cf068a | 40 | Vector2D p = {2, 2} //{x,y} |
| adat80 | 6:f06ce4cf068a | 41 | enemy.set_pos(p); |
| adat80 | 6:f06ce4cf068a | 42 | |
| adat80 | 6:f06ce4cf068a | 43 | //get time at which enemy will begin moving |
| adat80 | 6:f06ce4cf068a | 44 | float time = get_timeToAttack(); |
| adat80 | 6:f06ce4cf068a | 45 | |
| adat80 | 6:f06ce4cf068a | 46 | //set enemies alive flag true/false |
| adat80 | 6:f06ce4cf068a | 47 | enemy.set_alive(true); |
| adat80 | 6:f06ce4cf068a | 48 | |
| adat80 | 6:f06ce4cf068a | 49 | //get enemies alive flag true/false |
| adat80 | 6:f06ce4cf068a | 50 | enemy.get_alive(); |
| adat80 | 6:f06ce4cf068a | 51 | |
| adat80 | 6:f06ce4cf068a | 52 | |
| adat80 | 6:f06ce4cf068a | 53 | //update enemy |
| adat80 | 6:f06ce4cf068a | 54 | int fps = 30; |
| adat80 | 6:f06ce4cf068a | 55 | enemy.update(int fps); |
| adat80 | 6:f06ce4cf068a | 56 | |
| adat80 | 6:f06ce4cf068a | 57 | |
| adat80 | 5:8bd09c675f28 | 58 | //draw enemy |
| adat80 | 5:8bd09c675f28 | 59 | N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); |
| adat80 | 5:8bd09c675f28 | 60 | lcd.init(); |
| adat80 | 5:8bd09c675f28 | 61 | _enemy.draw(lcd); //draw enemy sprite to display |
| adat80 | 5:8bd09c675f28 | 62 | |
| adat80 | 5:8bd09c675f28 | 63 | |
| adat80 | 5:8bd09c675f28 | 64 | |
| adat80 | 5:8bd09c675f28 | 65 | |
| adat80 | 6:f06ce4cf068a | 66 | |
| adat80 | 6:f06ce4cf068a | 67 | |
| adat80 | 5:8bd09c675f28 | 68 | } |
| adat80 | 5:8bd09c675f28 | 69 | |
| adat80 | 5:8bd09c675f28 | 70 | @endcode |
| adat80 | 5:8bd09c675f28 | 71 | |
| adat80 | 5:8bd09c675f28 | 72 | |
| adat80 | 1:3916f272663e | 73 | */ |
| adat80 | 2:88019d96e1da | 74 | |
| adat80 | 5:8bd09c675f28 | 75 | //action enumerator keeps track of enemies current state |
| adat80 | 5:8bd09c675f28 | 76 | //and allows for quick routing to correct process via switch state |
| adat80 | 5:8bd09c675f28 | 77 | enum Action { |
| adat80 | 5:8bd09c675f28 | 78 | waiting, //enemy not yet attacking (off screen) |
| adat80 | 5:8bd09c675f28 | 79 | moving, //enemy moving towards players wall |
| adat80 | 5:8bd09c675f28 | 80 | attacking, //enemy damaging players wall |
| adat80 | 5:8bd09c675f28 | 81 | dying //enemy has been killed by player |
| adat80 | 5:8bd09c675f28 | 82 | }; |
| adat80 | 2:88019d96e1da | 83 | |
| adat80 | 1:3916f272663e | 84 | class Enemy |
| adat80 | 1:3916f272663e | 85 | { |
| adat80 | 1:3916f272663e | 86 | public: |
| adat80 | 1:3916f272663e | 87 | Enemy(); |
| adat80 | 1:3916f272663e | 88 | ~Enemy(); |
| adat80 | 2:88019d96e1da | 89 | |
| adat80 | 2:88019d96e1da | 90 | |
| adat80 | 5:8bd09c675f28 | 91 | /** |
| adat80 | 5:8bd09c675f28 | 92 | * @brief Initialises an enemy with a time to attack and a set speed |
| adat80 | 5:8bd09c675f28 | 93 | * @param timeToAttack @details The time into the new level that the enemy will start moving forwards |
| adat80 | 5:8bd09c675f28 | 94 | * @param speed @details The speed of the enemy in pixels per frame |
| adat80 | 5:8bd09c675f28 | 95 | */ |
| adat80 | 3:97cd7b3d89d0 | 96 | void init(float timeToAttack, float speed); |
| adat80 | 5:8bd09c675f28 | 97 | /** |
| adat80 | 5:8bd09c675f28 | 98 | * @brief Draws the enemy on the lcd |
| adat80 | 5:8bd09c675f28 | 99 | * @param lcd @details the N5110 object |
| adat80 | 5:8bd09c675f28 | 100 | */ |
| adat80 | 1:3916f272663e | 101 | void draw(N5110 &lcd); |
| adat80 | 5:8bd09c675f28 | 102 | /** |
| adat80 | 5:8bd09c675f28 | 103 | * @brief Updates the position of the enemy based on its state |
| adat80 | 5:8bd09c675f28 | 104 | * @param fps @details the games frames per second as an integer |
| adat80 | 5:8bd09c675f28 | 105 | */ |
| adat80 | 2:88019d96e1da | 106 | void update(int fps); |
| adat80 | 5:8bd09c675f28 | 107 | |
| adat80 | 1:3916f272663e | 108 | /// accessors and mutators |
| adat80 | 5:8bd09c675f28 | 109 | /** |
| adat80 | 5:8bd09c675f28 | 110 | * @brief Gets the enemies position |
| adat80 | 5:8bd09c675f28 | 111 | * @return position @details a Vector2D object detailing enemies position |
| adat80 | 5:8bd09c675f28 | 112 | |
| adat80 | 5:8bd09c675f28 | 113 | */ |
| adat80 | 1:3916f272663e | 114 | Vector2D get_pos(); |
| adat80 | 5:8bd09c675f28 | 115 | /** |
| adat80 | 5:8bd09c675f28 | 116 | * @brief Sets the enemies position |
| adat80 | 5:8bd09c675f28 | 117 | * @param position @details a Vector2D position |
| adat80 | 5:8bd09c675f28 | 118 | */ |
| adat80 | 1:3916f272663e | 119 | void set_pos(Vector2D p); |
| adat80 | 2:88019d96e1da | 120 | |
| adat80 | 5:8bd09c675f28 | 121 | /** |
| adat80 | 5:8bd09c675f28 | 122 | * @brief Gets the enemies delay time to it starting to attack |
| adat80 | 5:8bd09c675f28 | 123 | * @return time to attack @details returns a float value for the time in to the level the enemy begins to attack |
| adat80 | 5:8bd09c675f28 | 124 | */ |
| adat80 | 1:3916f272663e | 125 | float get_timeToAttack(); |
| adat80 | 1:3916f272663e | 126 | |
| adat80 | 5:8bd09c675f28 | 127 | /** |
| adat80 | 5:8bd09c675f28 | 128 | * @brief Sets enemies current action |
| adat80 | 5:8bd09c675f28 | 129 | * @param Action @details an enumerator with 1 of the following values { waiting, moving, attacking, dying }; |
| adat80 | 5:8bd09c675f28 | 130 | */ |
| adat80 | 2:88019d96e1da | 131 | void set_current_action(Action act); |
| adat80 | 5:8bd09c675f28 | 132 | /** |
| adat80 | 5:8bd09c675f28 | 133 | * @brief Returns enemies current action |
| adat80 | 5:8bd09c675f28 | 134 | * @return Action @details an enumerator with 1 of the following values { waiting, moving, attacking, dying }; |
| adat80 | 5:8bd09c675f28 | 135 | */ |
| adat80 | 3:97cd7b3d89d0 | 136 | Action get_current_action(); |
| adat80 | 5:8bd09c675f28 | 137 | /** |
| adat80 | 5:8bd09c675f28 | 138 | * @brief Set Flag if enemy is alive |
| adat80 | 5:8bd09c675f28 | 139 | * @param alive @details a boolean value detailing if the enemy is alive |
| adat80 | 5:8bd09c675f28 | 140 | */ |
| adat80 | 1:3916f272663e | 141 | void set_alive(bool alive); |
| adat80 | 5:8bd09c675f28 | 142 | /** |
| adat80 | 5:8bd09c675f28 | 143 | * @brief Get Flag if enemy is alive |
| adat80 | 5:8bd09c675f28 | 144 | * @return alive @details a boolean value detailing if the enemy is alive |
| adat80 | 5:8bd09c675f28 | 145 | */ |
| adat80 | 1:3916f272663e | 146 | bool get_alive(); |
| adat80 | 2:88019d96e1da | 147 | |
| adat80 | 2:88019d96e1da | 148 | |
| adat80 | 1:3916f272663e | 149 | private: |
| adat80 | 1:3916f272663e | 150 | |
| adat80 | 3:97cd7b3d89d0 | 151 | float _x; |
| adat80 | 3:97cd7b3d89d0 | 152 | float _y; |
| adat80 | 2:88019d96e1da | 153 | |
| adat80 | 1:3916f272663e | 154 | bool _attack; |
| adat80 | 1:3916f272663e | 155 | bool _alive; |
| adat80 | 1:3916f272663e | 156 | float _timeToAttack; |
| adat80 | 3:97cd7b3d89d0 | 157 | float _speed; |
| adat80 | 2:88019d96e1da | 158 | |
| adat80 | 2:88019d96e1da | 159 | float _animationTick; |
| adat80 | 2:88019d96e1da | 160 | Action currentAction; |
| adat80 | 2:88019d96e1da | 161 | |
| adat80 | 2:88019d96e1da | 162 | |
| adat80 | 2:88019d96e1da | 163 | |
| adat80 | 2:88019d96e1da | 164 | |
| adat80 | 1:3916f272663e | 165 | }; |
| adat80 | 1:3916f272663e | 166 | #endif |