Mini game developed for ECE 4180 lab
Dependencies: 4DGL-uLCD-SE mbed-rtos mbed
entity.h
- Committer:
- slandry8
- Date:
- 2016-03-14
- Revision:
- 0:a358215f57b7
File content as of revision 0:a358215f57b7:
#include "mbed.h" #include "rtos.h" #include "uLCD_4DGL.h" #define DELTA_Y 3 #define DELTA_X 3 #define DELTA_X_P 2 #define COVER_COLOR 0xf0c890 #define H_32 32 #define H_16 16 #define STATE_START 0 #define STATE_GAME 1 #define STATE_LOSE 2 #define STATE_SCORE 4 #define MOVE_LEFT 1 #define MOVE_RIGHT 2 #define MOVE_UP 4 #define MOVE_DOWN 8 class Entity { private: public: //y position of an entity (in pixels) int row; //x position of an entity (in pixels) int col; }; class Cursor : public Entity { public: //size of the s by s square cursor int s; //space that the cursor will move when the joystick is pressed left or right int delta_x; //space that the cursor will move when the joystick is pressed up or down int delta_y; //buffer that will contain the initials for a new high score char initBuf[3]; int c; //flag to see if the user moved the cursor bool hasMoved; //flag to see if the user has pressed the fire button on the high score screen bool letterPressed; //numerical value assoicated with a particular movement int moveFlag; //the last letter that the cursor selected on letterPressed char curChar; //default no-arg constructor Cursor(void); //function to draw the cursor on screen void draw(uLCD_4DGL *u); //function to cover up the previous position of the cursor void coverUp(uLCD_4DGL *u); }; class Player : public Entity { public: //Width of the p;ayer in pixels int w; //Height of the player in pixels int h; //(deprecated) color of the player in RGB int color; //default no-arg constructor Player(void); //flag to see if the user has moved using the joystick bool hasMoved; //flag to see if the user is jumping bool isJumping; //flag to see if the user is falling bool isFalling; //Used to keep track of how long until the player reaches the apex of the jump int upCounter; //Used to check how long until the player lands int fallCounter; //value representing some movement of direction int moveFlag; }; class Obstacle : public Entity { public: //(deprecated) color of the obstacle in RGB int color; //width of the obstacle in pixels int w; //height of the obstacle in pixels int h; //default constructor; color input variable is deprecated Obstacle(int c); }; class Counter : public Entity { }; class Screen { private: public: //(deprecated) sector address of the screen's background int bgAddr; //current position, on or off-screen, in pixels int pos; // void drawScreen(void); //increase the position values of each object and screen, so that they appear to be moving void decScreen(void); //default constructor Screen(int bg, int initPos); //main constructor, though the boolean flag serves no purpose and should be removed Screen(int bg, bool randomSpots, int initPos); //the 4 cactus obstacles associated with this screen Obstacle *obs[4]; //Class destructor. Needed to delete both the screen and its associated obstacle objects ~Screen(void); }; //(Deprecated) draw the rectangles of the obstacles while also checking if they are on-screen void DrawIfOnScreen(Obstacle *o, uLCD_4DGL *u); //draw the cactus image for each obstacle, also checking if any part of the obstacle is off-screen, and drawing the appropriate image if so void DrawSliceBySlice(Obstacle *o, uLCD_4DGL *u); //Draw a filled rectangle with the background color to hide the pixels of the previous position of an object void DrawCoverUp(int row, int col, int w, int h, uLCD_4DGL *u); //Check if any screens are now past the player, and rearrange the screens if so void evalScreens(Screen **s); //draw all objects associated with a screen void drawScreens(uLCD_4DGL *u, Screen **s); //draw the player sprite void drawPlayer(uLCD_4DGL *u, Player *p); //(deprecated) draw the cover up rectangle for x-axis movement of the player void drawPlayerCoverUp(uLCD_4DGL *u, Player *p); //Draw the cover up rectangle for x-axis movement of the player void drawPlayerCoverUp(uLCD_4DGL *u, Player *p, int dir); //draw the cover up rectangle for y-axis movement of the player void drawPlayerAirborneCoverUp(uLCD_4DGL *u, Player *p); //Cover up the small square that occurs if the user moves diagonally void drawPlayerDiagCoverUp(uLCD_4DGL *u, Player *p); //Draw the sun and any other background objects void drawScenery(uLCD_4DGL *u); //Collision Detection //check a collision on the top-right corner of the player bool detectTR(Obstacle *o,Player *p); //check a collision on the bottom-left corner of the player bool detectBL(Obstacle *o,Player *p); //check a collision on the bottom-right corner of the player bool detectBR(Obstacle *o,Player *p); //check a collision on the top-left corner of the player bool detectTL(Obstacle *o, Player *p); //main function for collision detection; runs previous four functions and sets appropriate flags void CollisionDetect(Screen **s, Player *p,bool *flag); //draw the score counter on the right side of the screen void drawScore(uLCD_4DGL *u, int score); //Reset flags and other objects for a new game void initialize(Screen **s, Player *p, int *score, bool* initFlash, bool *scDrawn, bool *collide, int *c, int *r, Cursor *curs);