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
Coin/Coin.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 | 25:aa145767fda5 | 1 | #ifndef COIN_H |
lewisgw | 25:aa145767fda5 | 2 | #define COIN_H |
lewisgw | 25:aa145767fda5 | 3 | |
lewisgw | 25:aa145767fda5 | 4 | #include "mbed.h" |
lewisgw | 25:aa145767fda5 | 5 | |
lewisgw | 15:876c047a6ec9 | 6 | /** Coin Class |
lewisgw | 28:be77ad6c0bda | 7 | * @brief Generates a coin for the skateboarder to collect *@author Lewis Wooltorton |
lewisgw | 15:876c047a6ec9 | 8 | * @date April 2019 |
lewisgw | 28:be77ad6c0bda | 9 | |
lewisgw | 28:be77ad6c0bda | 10 | @code |
lewisgw | 28:be77ad6c0bda | 11 | |
lewisgw | 28:be77ad6c0bda | 12 | #include "mbed.h" |
lewisgw | 28:be77ad6c0bda | 13 | #include "N5110.h" |
lewisgw | 28:be77ad6c0bda | 14 | #include "Gamepad.h" |
lewisgw | 28:be77ad6c0bda | 15 | #include "Coin.h" |
lewisgw | 28:be77ad6c0bda | 16 | #include <cstdlib> |
lewisgw | 28:be77ad6c0bda | 17 | #include <ctime> |
lewisgw | 28:be77ad6c0bda | 18 | |
lewisgw | 28:be77ad6c0bda | 19 | N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); |
lewisgw | 28:be77ad6c0bda | 20 | Gamepad gamepad; |
lewisgw | 28:be77ad6c0bda | 21 | Coin _coin; |
lewisgw | 28:be77ad6c0bda | 22 | |
lewisgw | 28:be77ad6c0bda | 23 | int _skater_x; |
lewisgw | 28:be77ad6c0bda | 24 | int _skater_y; |
lewisgw | 28:be77ad6c0bda | 25 | int _player_score; |
lewisgw | 28:be77ad6c0bda | 26 | bool _coin_collision_flag; |
lewisgw | 28:be77ad6c0bda | 27 | |
lewisgw | 28:be77ad6c0bda | 28 | int main() { |
lewisgw | 28:be77ad6c0bda | 29 | _coin.init(); |
lewisgw | 28:be77ad6c0bda | 30 | srand(time(NULL)); |
lewisgw | 28:be77ad6c0bda | 31 | _player_score = 0; |
lewisgw | 28:be77ad6c0bda | 32 | _skater_x = 50; |
lewisgw | 28:be77ad6c0bda | 33 | _skater_y = 20; |
lewisgw | 28:be77ad6c0bda | 34 | while(1) { |
lewisgw | 28:be77ad6c0bda | 35 | |
lewisgw | 28:be77ad6c0bda | 36 | // If the skater collides with the coin, set the flag, add 1 to the score |
lewisgw | 28:be77ad6c0bda | 37 | // move the coin to a new random position and make a noise on the buzzer. |
lewisgw | 28:be77ad6c0bda | 38 | if (_skater_x == _coin.get_coin_x() |
lewisgw | 28:be77ad6c0bda | 39 | && (_skater_y == _coin.get_coin_y() - 10)) { |
lewisgw | 28:be77ad6c0bda | 40 | _coin_collision_flag = true; |
lewisgw | 28:be77ad6c0bda | 41 | _player_score++; |
lewisgw | 28:be77ad6c0bda | 42 | _coin.set_coin((rand() % 100),(abs(rand() % 100 - 20))); // Place coin |
lewisgw | 28:be77ad6c0bda | 43 | // on a constrained random position. |
lewisgw | 28:be77ad6c0bda | 44 | gamepad.tone(1500, 0.05); // Make collection noise on buzzer. |
lewisgw | 28:be77ad6c0bda | 45 | wait(0.05); |
lewisgw | 28:be77ad6c0bda | 46 | gamepad.tone(3000, 0.05); |
lewisgw | 28:be77ad6c0bda | 47 | } |
lewisgw | 28:be77ad6c0bda | 48 | |
lewisgw | 28:be77ad6c0bda | 49 | // Print the coin. |
lewisgw | 28:be77ad6c0bda | 50 | lcd.drawSprite(_coin.get_coin_x(),_coin.get_coin_y(),5,5, |
lewisgw | 28:be77ad6c0bda | 51 | (int*)_coin.get_coin_sprite()); |
lewisgw | 28:be77ad6c0bda | 52 | } |
lewisgw | 28:be77ad6c0bda | 53 | } |
lewisgw | 28:be77ad6c0bda | 54 | |
lewisgw | 28:be77ad6c0bda | 55 | @endcode |
lewisgw | 15:876c047a6ec9 | 56 | */ |
lewisgw | 15:876c047a6ec9 | 57 | |
lewisgw | 15:876c047a6ec9 | 58 | class Coin { |
lewisgw | 15:876c047a6ec9 | 59 | public: |
lewisgw | 21:20478f086bc2 | 60 | // Constructor and Destructor. |
lewisgw | 21:20478f086bc2 | 61 | /** |
lewisgw | 21:20478f086bc2 | 62 | * @brief Constructor @details Non user specified. |
lewisgw | 21:20478f086bc2 | 63 | */ |
lewisgw | 15:876c047a6ec9 | 64 | Coin(); |
lewisgw | 21:20478f086bc2 | 65 | /** |
lewisgw | 21:20478f086bc2 | 66 | * @brief Destructor @details Non user specified. |
lewisgw | 21:20478f086bc2 | 67 | */ |
lewisgw | 15:876c047a6ec9 | 68 | ~Coin(); |
lewisgw | 15:876c047a6ec9 | 69 | |
lewisgw | 21:20478f086bc2 | 70 | // Mutators. |
lewisgw | 21:20478f086bc2 | 71 | /** |
lewisgw | 21:20478f086bc2 | 72 | * @breif Initialises Coin object. |
lewisgw | 21:20478f086bc2 | 73 | */ |
lewisgw | 15:876c047a6ec9 | 74 | void init(); |
lewisgw | 21:20478f086bc2 | 75 | /** |
lewisgw | 21:20478f086bc2 | 76 | * @breif Sets the Coin coordinates. |
lewisgw | 21:20478f086bc2 | 77 | * @param rand_x @details a random number that determines the x coordinate |
lewisgw | 21:20478f086bc2 | 78 | * @param rand_y @details a random number that determines if the Coin is generated on the upper or lower platforms |
lewisgw | 21:20478f086bc2 | 79 | */ |
lewisgw | 21:20478f086bc2 | 80 | void set_coin(int rand_x, int rand_y); |
lewisgw | 21:20478f086bc2 | 81 | |
lewisgw | 21:20478f086bc2 | 82 | // Accessors. |
lewisgw | 21:20478f086bc2 | 83 | /** |
lewisgw | 21:20478f086bc2 | 84 | * @breif Gets the Coin sprite. |
lewisgw | 21:20478f086bc2 | 85 | * @returns The Coin sprite (an integer array) |
lewisgw | 21:20478f086bc2 | 86 | */ |
lewisgw | 21:20478f086bc2 | 87 | int * get_coin_sprite(); |
lewisgw | 21:20478f086bc2 | 88 | /** |
lewisgw | 21:20478f086bc2 | 89 | * @breif Gets the x coordinate. |
lewisgw | 21:20478f086bc2 | 90 | * @returns The x coordinate of the Coin |
lewisgw | 21:20478f086bc2 | 91 | */ |
lewisgw | 21:20478f086bc2 | 92 | int get_coin_x(); |
lewisgw | 21:20478f086bc2 | 93 | /** |
lewisgw | 21:20478f086bc2 | 94 | * @breif Gets the y coordinate. |
lewisgw | 21:20478f086bc2 | 95 | * @returns The y coordinate of the Coin |
lewisgw | 21:20478f086bc2 | 96 | */ |
lewisgw | 21:20478f086bc2 | 97 | int get_coin_y(); |
lewisgw | 21:20478f086bc2 | 98 | |
lewisgw | 21:20478f086bc2 | 99 | // Member Methods. |
lewisgw | 21:20478f086bc2 | 100 | /** |
lewisgw | 21:20478f086bc2 | 101 | * @breif Generates the coin. @details Selects the coin sprite |
lewisgw | 21:20478f086bc2 | 102 | */ |
lewisgw | 15:876c047a6ec9 | 103 | void generate_coin(); |
lewisgw | 15:876c047a6ec9 | 104 | |
lewisgw | 15:876c047a6ec9 | 105 | private: |
lewisgw | 15:876c047a6ec9 | 106 | int _x; |
lewisgw | 15:876c047a6ec9 | 107 | int _y; |
lewisgw | 15:876c047a6ec9 | 108 | int _coin_counter; |
lewisgw | 15:876c047a6ec9 | 109 | bool _rotate_coin; |
lewisgw | 15:876c047a6ec9 | 110 | }; |
lewisgw | 21:20478f086bc2 | 111 | #endif |