“Race Collision” is a one player game in which a truck has to avoid “particles” that appear on the road. By the use of the joystick, the player can guide themselves through the menu system to start the game. The truck is the main element of the game and it can be moved from side to side with the joystick. The road curves randomly from time to time and the player has to be careful to keep the truck within the road boundaries. Particles appear on the screen at random positions and 4 collisions lead to the end of the game.

Dependencies:   ELEC2645_JoystickLCD_LPC1768_2021

Committer:
alex_20
Date:
Thu May 06 12:04:45 2021 +0000
Revision:
9:6f060f495536
Parent:
0:be41a15e7a86
Race Collision for ELEC2645

Who changed what in which revision?

UserRevisionLine numberNew contents of line
eencae 0:be41a15e7a86 1 #ifndef BITMAP_H
eencae 0:be41a15e7a86 2 #define BITMAP_H
eencae 0:be41a15e7a86 3
eencae 0:be41a15e7a86 4 #include <vector>
eencae 0:be41a15e7a86 5
eencae 0:be41a15e7a86 6 // Forward declarations
eencae 0:be41a15e7a86 7 class N5110;
eencae 0:be41a15e7a86 8
eencae 0:be41a15e7a86 9 /**
eencae 0:be41a15e7a86 10 * @brief A black & white bitmap that can be rendered on an N5110 screen
eencae 0:be41a15e7a86 11 * @author Alex Valavanis <a.valavanis@leeds.ac.uk>
eencae 0:be41a15e7a86 12 *
eencae 0:be41a15e7a86 13 * @code
eencae 0:be41a15e7a86 14 // First declare the pixel map data using '1' for black,
eencae 0:be41a15e7a86 15 // or '0' for white pixels
eencae 0:be41a15e7a86 16 static int sprite_data[] = {
eencae 0:be41a15e7a86 17 0,0,1,0,0,
eencae 0:be41a15e7a86 18 0,1,1,1,0,
eencae 0:be41a15e7a86 19 0,0,1,0,0,
eencae 0:be41a15e7a86 20 0,1,1,1,0,
eencae 0:be41a15e7a86 21 1,1,1,1,1,
eencae 0:be41a15e7a86 22 1,1,1,1,1,
eencae 0:be41a15e7a86 23 1,1,0,1,1,
eencae 0:be41a15e7a86 24 1,1,0,1,1
eencae 0:be41a15e7a86 25 };
eencae 0:be41a15e7a86 26
eencae 0:be41a15e7a86 27 // Instantiate the Bitmap object using the data above
eencae 0:be41a15e7a86 28 Bitmap sprite(sprite_data, 8, 5); // Specify rows and columns in sprite
eencae 0:be41a15e7a86 29
eencae 0:be41a15e7a86 30 // We can render the bitmap wherever we want on the screen
eencae 0:be41a15e7a86 31 sprite.render(lcd, 20, 6); // x and y locations for rendering
eencae 0:be41a15e7a86 32 sprite.render(lcd, 30, 10);
eencae 0:be41a15e7a86 33
eencae 0:be41a15e7a86 34 // We can also print its values to the terminal
eencae 0:be41a15e7a86 35 sprite.print();
eencae 0:be41a15e7a86 36 * @endcode
eencae 0:be41a15e7a86 37 */
eencae 0:be41a15e7a86 38 class Bitmap
eencae 0:be41a15e7a86 39 {
eencae 0:be41a15e7a86 40 private:
eencae 0:be41a15e7a86 41 /**
eencae 0:be41a15e7a86 42 * @brief The contents of the drawing, with pixels stored in row-major order
eencae 0:be41a15e7a86 43 * @details '1' represents a black pixel; '0' represents white
eencae 0:be41a15e7a86 44 */
eencae 0:be41a15e7a86 45 std::vector<int> _contents;
eencae 0:be41a15e7a86 46
eencae 0:be41a15e7a86 47 unsigned int _height; ///< The height of the drawing in pixels
eencae 0:be41a15e7a86 48 unsigned int _width; ///< The width of the drawing in pixels
eencae 0:be41a15e7a86 49
eencae 0:be41a15e7a86 50 public:
eencae 0:be41a15e7a86 51 Bitmap(int const *contents,
eencae 0:be41a15e7a86 52 unsigned int const height,
eencae 0:be41a15e7a86 53 unsigned int const width);
eencae 0:be41a15e7a86 54
eencae 0:be41a15e7a86 55 int get_pixel(unsigned int const row,
eencae 0:be41a15e7a86 56 unsigned int const column) const;
eencae 0:be41a15e7a86 57
eencae 0:be41a15e7a86 58 void print() const;
eencae 0:be41a15e7a86 59
eencae 0:be41a15e7a86 60 void render(N5110 &lcd,
eencae 0:be41a15e7a86 61 unsigned int const x0,
eencae 0:be41a15e7a86 62 unsigned int const y0) const;
eencae 0:be41a15e7a86 63 };
eencae 0:be41a15e7a86 64
eencae 0:be41a15e7a86 65 #endif // BITMAP_H