ELEC2645 (2018/19) / Mbed 2 deprecated el17lw

Dependencies:   mbed

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?

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