Uses accompanying Basket, Objects and Fruit libraries to create Fruit Basket game. If an object is caught, points are added; if an object in missed, a 'life' is lost.
Dependents: Game_Controller_Project
Catch_Model.h
- Committer:
- Nathanj94
- Date:
- 2017-04-27
- Revision:
- 14:6764bb61d413
- Parent:
- 13:ae2dac4ab786
- Child:
- 15:1a0bd800f1f1
File content as of revision 14:6764bb61d413:
#ifndef CATCH_MODEL_H #define CATCH_MODEL_H #include "mbed.h" #include "N5110.h" #include "Gamepad.h" #include "Basket.h" #include "Objects.h" class Catch_Model { public: Catch_Model(); ~Catch_Model(); //INITILISATION FUNCTIONS// /** Initialise Game * * Main initialisation function. The parameters are used to call * Basket::init(int y, int width) and Objects::init(int speed), as well * as set the number of lives/misses the player will be allowed and set * the default value of a variable that restricts how often the player * can use the A and B buttons. * @param basket_y - y co-ordinate of the basket (0 to 47) * @param basket_width - width of the basket (0 to 83) * @param objects_speed - "fall" speed of the object (2,3,4,5) * @param lives - number of lives/misses the player has */ void init(int basket_y, int basket_width, int objects_speed, int lives); //UPDATE FUNCTIONS// /** Read Joystick Input * * Read the direction and magnitude of the joystick and assign * the values to variables by calling functions from the Gamepad * library. * @param pad - Gamepad custom library */ void input(Gamepad &pad); /** Update Game * * Checks if an object is caught by the basket or not then increases * score or reduces lives appropriately. Moves the basket with either * joystick or buttons and moves the objects too. * @param lcd - N5110 custom library * @param pad - Gamepad custom library */ void update(N5110 &lcd, Gamepad &pad); //GAME RULES FUNCTIONS// /** Check Object has been Caught * * Gets the x and y reference co-ordinates of the basket and the * falling object from their respective libraries; if the x co-ordinate * of the object is within the width of the basket and the y co-ordinate * of the object is greater than that of the basket the object will be * undrawn, the appropriate score will be added and the object will be * re-initialised. * @param lcd - N5110 custom library * @param pad - Gamepad custom library */ void check_basket_catch(N5110 &lcd, Gamepad &pad); /** Check Object has Missed * * Gets the x and y reference co-ordinates of the basket and the * falling object from their respective libraries; if the x co-ordinate * of the object is outside the width of the basket and the y co-ordinate * of the object is greater than that of the basket the object will be * undrawn, the number of lives will be reduced and the object will be * re-initialised. * @param lcd - N5110 custom library * @param pad - Gamepad custom library */ void check_basket_miss(N5110 &lcd, Gamepad &pad); /** Add Correct Score * * Gets the value of a variable from Objects that is specific to each * object (type of fruit) and uses it to call the appropriate add_score * function from Basket; increasing the score by 1, 2, 5 or 10. */ void add_score(); /** Get Lives * * Return the remaining number of lives available to the player. */ int get_lives(); //BUTTON FUNCTIONS// /** Check A Button * * If the A button is pressed, call Objects::undraw(N5110 &lcd) wherever * it is on the display and call Objects::init(int speed) to give * the player a second chance. Also set the value of a variable to zero * so that the function cannot be recalled straight away. * @param lcd - N5110 custom library * @param pad - Gamepad custom library */ void check_a(N5110 &lcd, Gamepad &pad); /** Check B Button * * If the B button is pressed, increase number of lives by 1. Also set * the value of a variable to zero so that the function cannot be * recalled straight away. * @param lcd - N5110 custom library * @param pad - Gamepad custom library */ void check_b(N5110 &lcd, Gamepad &pad); /** Set Delay to ON * * 10 seconds after the buttons A or B are pressed this function is called * resetting the value of a variable to 1 so the buttons can be used again. */ void set_delay(); //DISPLAY FUNCTIONS// /** Draw All Features * * Calls draw functions from the Basket and Objects libraries as well * as functions to display the score, remaining lives and an indicator * that tells the player if the A and B buttons are ready to be used. * @param lcd - N5110 custom library */ void draw(N5110 &lcd); /** Display the Number of Lives * * Print a string of characters to the buffer, indicating how many lives * remain. * @param lcd - N5110 custom library */ void print_lives(N5110 &lcd); /** Display the Score * * Print a string of characters to the buffer, indicating the score. * @param lcd - N5110 custom library */ void print_score(N5110 &lcd); /** Display the Powerup Indicator * * Print a tick or cross to the buffer, indicating whether or not * the A and B buttons are ready to be used. * @param lcd - N5110 custom library */ void print_delay(N5110 &lcd); private: //OBJECTS// Basket basket; Objects objects; Timeout timeout; //VARIABLES// int _basket_y; int _basket_width; int _objects_speed; int _lives; int _delay; //JOYSTICK PARAMETERS// Direction _d; float _mag; }; #endif