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