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
Fire/Fire.h@28:be77ad6c0bda, 2019-05-07 (annotated)
- Committer:
- lewisgw
- Date:
- Tue May 07 08:39:38 2019 +0000
- Revision:
- 28:be77ad6c0bda
- Parent:
- 25:aa145767fda5
Added a tests class to be run in main to test sprites on the LCD. Updated documentation.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lewisgw | 18:304700b5d8f8 | 1 | #ifndef FIRE_H |
lewisgw | 18:304700b5d8f8 | 2 | #define FIRE_H |
lewisgw | 16:331be5c7ed80 | 3 | |
lewisgw | 16:331be5c7ed80 | 4 | #include "mbed.h" |
lewisgw | 16:331be5c7ed80 | 5 | |
lewisgw | 24:c7df5aa476a9 | 6 | /** Fire Class |
lewisgw | 24:c7df5aa476a9 | 7 | * @brief Generates a fire ball that will end the game if the skateboarder touches it |
lewisgw | 24:c7df5aa476a9 | 8 | * @author Lewis Wooltorton |
lewisgw | 24:c7df5aa476a9 | 9 | * @date April 2019 |
lewisgw | 28:be77ad6c0bda | 10 | |
lewisgw | 28:be77ad6c0bda | 11 | @code |
lewisgw | 28:be77ad6c0bda | 12 | |
lewisgw | 28:be77ad6c0bda | 13 | #include "mbed.h" |
lewisgw | 28:be77ad6c0bda | 14 | #include "N5110.h" |
lewisgw | 28:be77ad6c0bda | 15 | #include "Gamepad.h" |
lewisgw | 28:be77ad6c0bda | 16 | #include "Fire.h" |
lewisgw | 28:be77ad6c0bda | 17 | #include <cstdlib> |
lewisgw | 28:be77ad6c0bda | 18 | #include <ctime> |
lewisgw | 28:be77ad6c0bda | 19 | |
lewisgw | 28:be77ad6c0bda | 20 | N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); |
lewisgw | 28:be77ad6c0bda | 21 | Gamepad gamepad; |
lewisgw | 28:be77ad6c0bda | 22 | Fire _fire; |
lewisgw | 28:be77ad6c0bda | 23 | |
lewisgw | 28:be77ad6c0bda | 24 | int _skater_y; |
lewisgw | 28:be77ad6c0bda | 25 | int _fire_y; |
lewisgw | 28:be77ad6c0bda | 26 | |
lewisgw | 28:be77ad6c0bda | 27 | int main() { |
lewisgw | 28:be77ad6c0bda | 28 | _fire.init(); |
lewisgw | 28:be77ad6c0bda | 29 | _fire_y = 20; |
lewisgw | 28:be77ad6c0bda | 30 | while(1) { |
lewisgw | 28:be77ad6c0bda | 31 | |
lewisgw | 28:be77ad6c0bda | 32 | // Generates the x coordinate of the fire. |
lewisgw | 28:be77ad6c0bda | 33 | _fire.generate_fire(); // Generates X coord of fire. |
lewisgw | 28:be77ad6c0bda | 34 | // Y is calculated from parabolic relation to game counter. |
lewisgw | 28:be77ad6c0bda | 35 | |
lewisgw | 28:be77ad6c0bda | 36 | // Check for a collision. |
lewisgw | 28:be77ad6c0bda | 37 | if (_skater_x == _fire.get_fire_x() |
lewisgw | 28:be77ad6c0bda | 38 | && _skater_y > _fire_y - 10 |
lewisgw | 28:be77ad6c0bda | 39 | && _skater_y < _fire_y + 10 |
lewisgw | 28:be77ad6c0bda | 40 | ) { // A range of Y coords to make collision |
lewisgw | 28:be77ad6c0bda | 41 | // more frequent. |
lewisgw | 28:be77ad6c0bda | 42 | |
lewisgw | 28:be77ad6c0bda | 43 | // Print fire. |
lewisgw | 28:be77ad6c0bda | 44 | lcd.drawSprite(_fire.get_fire_x(),_fire_y,5,8, |
lewisgw | 28:be77ad6c0bda | 45 | (int*)_fire.get_fire_sprite()); |
lewisgw | 28:be77ad6c0bda | 46 | } |
lewisgw | 28:be77ad6c0bda | 47 | } |
lewisgw | 28:be77ad6c0bda | 48 | } |
lewisgw | 28:be77ad6c0bda | 49 | |
lewisgw | 28:be77ad6c0bda | 50 | @endcode |
lewisgw | 24:c7df5aa476a9 | 51 | */ |
lewisgw | 24:c7df5aa476a9 | 52 | |
lewisgw | 18:304700b5d8f8 | 53 | class Fire { |
lewisgw | 16:331be5c7ed80 | 54 | public: |
lewisgw | 24:c7df5aa476a9 | 55 | /** Constructor, non user specified.*/ |
lewisgw | 18:304700b5d8f8 | 56 | Fire(); |
lewisgw | 25:aa145767fda5 | 57 | /** Destructor, non user specified.*/ |
lewisgw | 18:304700b5d8f8 | 58 | ~Fire(); |
lewisgw | 16:331be5c7ed80 | 59 | |
lewisgw | 21:20478f086bc2 | 60 | // Mutators. |
lewisgw | 24:c7df5aa476a9 | 61 | /** Initialises Fire object. */ |
lewisgw | 16:331be5c7ed80 | 62 | void init(); |
lewisgw | 21:20478f086bc2 | 63 | |
lewisgw | 21:20478f086bc2 | 64 | // Accessors |
lewisgw | 24:c7df5aa476a9 | 65 | /** Gets the sprite. |
lewisgw | 21:20478f086bc2 | 66 | * @returns The Fire sprite (an integer array) |
lewisgw | 21:20478f086bc2 | 67 | */ |
lewisgw | 18:304700b5d8f8 | 68 | int * get_fire_sprite(); |
lewisgw | 25:aa145767fda5 | 69 | /** Gets the x coordinate. |
lewisgw | 25:aa145767fda5 | 70 | * @returns The x coordinate of the Fire |
lewisgw | 21:20478f086bc2 | 71 | */ |
lewisgw | 18:304700b5d8f8 | 72 | int get_fire_x(); |
lewisgw | 21:20478f086bc2 | 73 | |
lewisgw | 21:20478f086bc2 | 74 | // Member methods. |
lewisgw | 24:c7df5aa476a9 | 75 | /** Generates Fire parameters @details Increments Fire x coordinate and toggles fire sprite.*/ |
lewisgw | 21:20478f086bc2 | 76 | void generate_fire(); |
lewisgw | 16:331be5c7ed80 | 77 | |
lewisgw | 16:331be5c7ed80 | 78 | private: |
lewisgw | 16:331be5c7ed80 | 79 | int _x; |
lewisgw | 18:304700b5d8f8 | 80 | bool _fire_counter; |
lewisgw | 16:331be5c7ed80 | 81 | }; |
lewisgw | 16:331be5c7ed80 | 82 | #endif |