Snake vs Block Game to be run upon K64F.

Dependencies:   mbed

Committer:
AhmedPlaymaker
Date:
Mon May 06 14:28:35 2019 +0000
Revision:
83:329da564799a
Parent:
76:7fa91122907f
Child:
84:9950d561fdf8
Now, I have put gamepad and lcd objects from the main() in a pointer, so that i can declare them in init() in every class i use them in and use them as global objects for each class, without having to send their addresses to all of the functions.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AhmedPlaymaker 3:fbb1fa853f09 1 #ifndef StartScreen_H
AhmedPlaymaker 3:fbb1fa853f09 2 #define StartScreen_H
AhmedPlaymaker 3:fbb1fa853f09 3
AhmedPlaymaker 3:fbb1fa853f09 4 #include "mbed.h"
AhmedPlaymaker 3:fbb1fa853f09 5 #include "N5110.h"
AhmedPlaymaker 3:fbb1fa853f09 6 #include "Gamepad.h"
AhmedPlaymaker 5:e4df87957a5b 7 #include "Settings.h"
AhmedPlaymaker 33:249cf423fb18 8 #include "Stats.h"
AhmedPlaymaker 33:249cf423fb18 9 #include "SDFileSystem.h"
AhmedPlaymaker 60:d3a9e0e4a0de 10 #include "Tutorial.h"
AhmedPlaymaker 3:fbb1fa853f09 11
AhmedPlaymaker 3:fbb1fa853f09 12 class StartScreen
AhmedPlaymaker 3:fbb1fa853f09 13 {
AhmedPlaymaker 67:39b9ba6019b0 14 public:
AhmedPlaymaker 67:39b9ba6019b0 15
AhmedPlaymaker 3:fbb1fa853f09 16 StartScreen();
AhmedPlaymaker 65:2872ca289b49 17 ~StartScreen();
AhmedPlaymaker 67:39b9ba6019b0 18
AhmedPlaymaker 3:fbb1fa853f09 19 /** Initialise StartScreen
AhmedPlaymaker 3:fbb1fa853f09 20 *
AhmedPlaymaker 3:fbb1fa853f09 21 * This function initialises the Game Interface and restarts the display.
AhmedPlaymaker 3:fbb1fa853f09 22 */
AhmedPlaymaker 83:329da564799a 23 void init(N5110 *lcd, Gamepad *pad);
AhmedPlaymaker 67:39b9ba6019b0 24
AhmedPlaymaker 3:fbb1fa853f09 25 /** Draw
AhmedPlaymaker 3:fbb1fa853f09 26 *
AhmedPlaymaker 3:fbb1fa853f09 27 * This function draws the Sprite onto the screen.
AhmedPlaymaker 3:fbb1fa853f09 28 */
AhmedPlaymaker 83:329da564799a 29 void titleScreen();
AhmedPlaymaker 67:39b9ba6019b0 30
AhmedPlaymaker 3:fbb1fa853f09 31 /** Instruct
AhmedPlaymaker 3:fbb1fa853f09 32 *
AhmedPlaymaker 3:fbb1fa853f09 33 * This function updates the user about how to progress after the game banner has been displayed..
AhmedPlaymaker 3:fbb1fa853f09 34 */
AhmedPlaymaker 83:329da564799a 35 void instruct();
AhmedPlaymaker 67:39b9ba6019b0 36
AhmedPlaymaker 3:fbb1fa853f09 37 /** Display userID
AhmedPlaymaker 3:fbb1fa853f09 38 *
AhmedPlaymaker 3:fbb1fa853f09 39 * This function shows who the author of the game is before showing the menu screen.
AhmedPlaymaker 3:fbb1fa853f09 40 */
AhmedPlaymaker 83:329da564799a 41 void credits();
AhmedPlaymaker 67:39b9ba6019b0 42
AhmedPlaymaker 49:441c32f6603e 43 /** Read Stats
AhmedPlaymaker 49:441c32f6603e 44 *
AhmedPlaymaker 49:441c32f6603e 45 * This function just reads the current top level stored in the sd card and saves it for displaying in the menu.
AhmedPlaymaker 49:441c32f6603e 46 */
AhmedPlaymaker 49:441c32f6603e 47 void read_stats(SDFileSystem &sd);
AhmedPlaymaker 67:39b9ba6019b0 48
AhmedPlaymaker 66:e47333ffc6ca 49 /** Check Back Pressed
AhmedPlaymaker 66:e47333ffc6ca 50 *
AhmedPlaymaker 66:e47333ffc6ca 51 * This function makes a centralised approach to check when back is pressed in a loop, so that it can be used to exit it and also go to.
AhmedPlaymaker 66:e47333ffc6ca 52 * the previous menu option.
AhmedPlaymaker 66:e47333ffc6ca 53 */
AhmedPlaymaker 83:329da564799a 54 bool checkBackPressed();
AhmedPlaymaker 67:39b9ba6019b0 55
AhmedPlaymaker 66:e47333ffc6ca 56 /** The Menu Screen
AhmedPlaymaker 3:fbb1fa853f09 57 *
AhmedPlaymaker 3:fbb1fa853f09 58 * This function obtains the user input on how they want to progress.
AhmedPlaymaker 3:fbb1fa853f09 59 */
AhmedPlaymaker 83:329da564799a 60 void menu();
AhmedPlaymaker 67:39b9ba6019b0 61
AhmedPlaymaker 66:e47333ffc6ca 62 /** Main Menu
AhmedPlaymaker 30:461231877c89 63 *
AhmedPlaymaker 66:e47333ffc6ca 64 * This function displays all the Main Menu contents to the player.
AhmedPlaymaker 30:461231877c89 65 */
AhmedPlaymaker 83:329da564799a 66 void mainMenu();
AhmedPlaymaker 67:39b9ba6019b0 67
AhmedPlaymaker 67:39b9ba6019b0 68 /** Draw Selection Arrow
AhmedPlaymaker 67:39b9ba6019b0 69 *
AhmedPlaymaker 67:39b9ba6019b0 70 * This function draws arrow to select main menu options.
AhmedPlaymaker 67:39b9ba6019b0 71 */
AhmedPlaymaker 83:329da564799a 72 void drawSelectionArrow();
AhmedPlaymaker 67:39b9ba6019b0 73
AhmedPlaymaker 34:89f53ffc81bb 74 /** Implementing The First Menu Screen
AhmedPlaymaker 34:89f53ffc81bb 75 *
AhmedPlaymaker 34:89f53ffc81bb 76 * This function just implements the things decided in main menu.
AhmedPlaymaker 34:89f53ffc81bb 77 */
AhmedPlaymaker 83:329da564799a 78 void nextMenu();
AhmedPlaymaker 33:249cf423fb18 79
AhmedPlaymaker 4:1fe015b66bb8 80 /** The Second Menu Screen
AhmedPlaymaker 4:1fe015b66bb8 81 *
AhmedPlaymaker 4:1fe015b66bb8 82 * This function obtains the user input on the game type they would like to play.
AhmedPlaymaker 4:1fe015b66bb8 83 */
AhmedPlaymaker 83:329da564799a 84 void game_mode();
AhmedPlaymaker 67:39b9ba6019b0 85
AhmedPlaymaker 56:142e9fdb77a8 86 /** Displaying Mode Options
AhmedPlaymaker 42:973bb6036f81 87 *
AhmedPlaymaker 56:142e9fdb77a8 88 * This function displays game_mode contents.
AhmedPlaymaker 42:973bb6036f81 89 */
AhmedPlaymaker 83:329da564799a 90 void selectMode();
AhmedPlaymaker 67:39b9ba6019b0 91
AhmedPlaymaker 56:142e9fdb77a8 92 /** Selecting the game mode
AhmedPlaymaker 34:89f53ffc81bb 93 *
AhmedPlaymaker 56:142e9fdb77a8 94 * value of g_mode is changed in this function that allows the choise beteen joystick/motion control..
AhmedPlaymaker 34:89f53ffc81bb 95 */
AhmedPlaymaker 83:329da564799a 96 void scrollModeSelection();
AhmedPlaymaker 67:39b9ba6019b0 97
AhmedPlaymaker 58:affb42c56cf8 98 /** Motion Control Instructions
AhmedPlaymaker 58:affb42c56cf8 99 *
AhmedPlaymaker 58:affb42c56cf8 100 * This promts the user to press A to centre position their angle if Motion Control is selected..
AhmedPlaymaker 58:affb42c56cf8 101 */
AhmedPlaymaker 83:329da564799a 102 void motionControlInstructions();
AhmedPlaymaker 67:39b9ba6019b0 103
AhmedPlaymaker 4:1fe015b66bb8 104 /** The Third Menu Screen
AhmedPlaymaker 4:1fe015b66bb8 105 *
AhmedPlaymaker 4:1fe015b66bb8 106 * This function obtains the user input on the game speed that suits them.
AhmedPlaymaker 4:1fe015b66bb8 107 */
AhmedPlaymaker 83:329da564799a 108 void game_speed();
AhmedPlaymaker 76:7fa91122907f 109
AhmedPlaymaker 76:7fa91122907f 110 /** Displaying GAME speed Contents
AhmedPlaymaker 76:7fa91122907f 111 *
AhmedPlaymaker 76:7fa91122907f 112 * This function just displays game_speed contents.
AhmedPlaymaker 76:7fa91122907f 113 */
AhmedPlaymaker 83:329da564799a 114 void selectSpeed();
AhmedPlaymaker 67:39b9ba6019b0 115
AhmedPlaymaker 35:ce47cde57bd3 116 /** Implementing GS
AhmedPlaymaker 35:ce47cde57bd3 117 *
AhmedPlaymaker 35:ce47cde57bd3 118 * This function just decides what has to be done next.
AhmedPlaymaker 35:ce47cde57bd3 119 */
AhmedPlaymaker 83:329da564799a 120 void scrollSpeedSelection();
AhmedPlaymaker 67:39b9ba6019b0 121
AhmedPlaymaker 67:39b9ba6019b0 122
AhmedPlaymaker 65:2872ca289b49 123 //SETTING THE GAME SPEED AND GAME MODE.
AhmedPlaymaker 65:2872ca289b49 124 int fps; // this sends over the game speed
AhmedPlaymaker 65:2872ca289b49 125 int g_mode; //this helps to select between joystick and motion control.
AhmedPlaymaker 67:39b9ba6019b0 126 int speed_index;
AhmedPlaymaker 67:39b9ba6019b0 127
AhmedPlaymaker 65:2872ca289b49 128 //MENU OPTIONS INDEX.
AhmedPlaymaker 67:39b9ba6019b0 129 int menu_index;
AhmedPlaymaker 67:39b9ba6019b0 130
AhmedPlaymaker 65:2872ca289b49 131 //VARIABLE USED TO DECIDE WEATHER TO SHOW CREDITS.
AhmedPlaymaker 65:2872ca289b49 132 int showCredits;
AhmedPlaymaker 67:39b9ba6019b0 133
AhmedPlaymaker 65:2872ca289b49 134 //VARIABLE USED TO DECIDE THE WAIT TIME OF THE MENU PAGES.
AhmedPlaymaker 65:2872ca289b49 135 float controlSensitivity;
AhmedPlaymaker 67:39b9ba6019b0 136
AhmedPlaymaker 65:2872ca289b49 137 //VARIABLES TO TOGGLE BACK AND FORTH BETWEEN MENU OPTIONS.
AhmedPlaymaker 66:e47333ffc6ca 138 bool _backPressed; //remembers if back is pressed.
AhmedPlaymaker 66:e47333ffc6ca 139 bool _startPressed; //remembers if start is pressed.
AhmedPlaymaker 67:39b9ba6019b0 140
AhmedPlaymaker 67:39b9ba6019b0 141 private:
AhmedPlaymaker 67:39b9ba6019b0 142
AhmedPlaymaker 65:2872ca289b49 143 //OBJECT DECLARATIONS
AhmedPlaymaker 33:249cf423fb18 144 Stats _stats;
AhmedPlaymaker 60:d3a9e0e4a0de 145 Settings _settings;
AhmedPlaymaker 60:d3a9e0e4a0de 146 Tutorial _tutorial;
AhmedPlaymaker 83:329da564799a 147
AhmedPlaymaker 83:329da564799a 148 //Pointer to the game pad object pad.
AhmedPlaymaker 83:329da564799a 149 Gamepad *_pad;
AhmedPlaymaker 83:329da564799a 150 //Pointer to the N5110 object lcd.
AhmedPlaymaker 83:329da564799a 151 N5110 *_lcd;
AhmedPlaymaker 3:fbb1fa853f09 152
AhmedPlaymaker 67:39b9ba6019b0 153
AhmedPlaymaker 3:fbb1fa853f09 154
AhmedPlaymaker 3:fbb1fa853f09 155 };
AhmedPlaymaker 3:fbb1fa853f09 156 #endif