![](/media/cache/profiles/LinkedIn_0NghoZJ.jpeg.50x50_q85.jpg)
Snake vs Block Game to be run upon K64F.
GameEngine/SnakevsBlock/SnakevsBlock.h@59:c65a2e933c47, 2019-04-29 (annotated)
- Committer:
- AhmedPlaymaker
- Date:
- Mon Apr 29 12:09:31 2019 +0000
- Revision:
- 59:c65a2e933c47
- Parent:
- 56:142e9fdb77a8
- Child:
- 62:ebf6ecf8a6d5
Changed Winning criteria and level progression in general, also fixed an error with motion control in menu and joystick misbehavior problem, next is tutorials.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AhmedPlaymaker | 7:48ba87cd79b5 | 1 | #ifndef SNAKEVSBLOCK_H |
AhmedPlaymaker | 7:48ba87cd79b5 | 2 | #define SNAKEVSBLOCK_H |
AhmedPlaymaker | 7:48ba87cd79b5 | 3 | |
AhmedPlaymaker | 7:48ba87cd79b5 | 4 | #include "mbed.h" |
AhmedPlaymaker | 7:48ba87cd79b5 | 5 | #include "N5110.h" |
AhmedPlaymaker | 38:30e4e6191762 | 6 | #include "FXOS8700CQ.h" |
AhmedPlaymaker | 7:48ba87cd79b5 | 7 | #include "Gamepad.h" |
AhmedPlaymaker | 7:48ba87cd79b5 | 8 | #include "Snake.h" |
AhmedPlaymaker | 41:4edac50f010d | 9 | #include "LengthCalc.h" |
AhmedPlaymaker | 44:cd10d07ea1e5 | 10 | #include "WinLoose.h" |
AhmedPlaymaker | 9:d1d79d4ee673 | 11 | #include "SnakeFood.h" |
AhmedPlaymaker | 10:751bd953fa27 | 12 | #include "Blocks.h" |
AhmedPlaymaker | 33:249cf423fb18 | 13 | #include "StartScreen.h" |
AhmedPlaymaker | 33:249cf423fb18 | 14 | #include "Stats.h" |
AhmedPlaymaker | 33:249cf423fb18 | 15 | #include "SDFileSystem.h" |
AhmedPlaymaker | 7:48ba87cd79b5 | 16 | |
AhmedPlaymaker | 7:48ba87cd79b5 | 17 | class SnakevsBlock |
AhmedPlaymaker | 7:48ba87cd79b5 | 18 | { |
AhmedPlaymaker | 7:48ba87cd79b5 | 19 | public: |
AhmedPlaymaker | 7:48ba87cd79b5 | 20 | SnakevsBlock(); |
AhmedPlaymaker | 7:48ba87cd79b5 | 21 | ~SnakevsBlock(); |
AhmedPlaymaker | 7:48ba87cd79b5 | 22 | |
AhmedPlaymaker | 7:48ba87cd79b5 | 23 | /** Initialise Game Machine |
AhmedPlaymaker | 7:48ba87cd79b5 | 24 | * |
AhmedPlaymaker | 7:48ba87cd79b5 | 25 | * This function initialises the game machine. |
AhmedPlaymaker | 7:48ba87cd79b5 | 26 | */ |
AhmedPlaymaker | 49:441c32f6603e | 27 | void init(); |
AhmedPlaymaker | 7:48ba87cd79b5 | 28 | |
AhmedPlaymaker | 41:4edac50f010d | 29 | /** Reset Game Machine |
AhmedPlaymaker | 41:4edac50f010d | 30 | * |
AhmedPlaymaker | 41:4edac50f010d | 31 | * This function prepares the game machine for the next level. |
AhmedPlaymaker | 41:4edac50f010d | 32 | */ |
AhmedPlaymaker | 41:4edac50f010d | 33 | void reset( ); |
AhmedPlaymaker | 41:4edac50f010d | 34 | |
AhmedPlaymaker | 49:441c32f6603e | 35 | /** Initialise objects |
AhmedPlaymaker | 49:441c32f6603e | 36 | * |
AhmedPlaymaker | 49:441c32f6603e | 37 | * This function initialises the objects that are used to functionalise the game. |
AhmedPlaymaker | 49:441c32f6603e | 38 | */ |
AhmedPlaymaker | 49:441c32f6603e | 39 | void object_initialisations(); |
AhmedPlaymaker | 49:441c32f6603e | 40 | |
AhmedPlaymaker | 7:48ba87cd79b5 | 41 | /** Read Input |
AhmedPlaymaker | 7:48ba87cd79b5 | 42 | * |
AhmedPlaymaker | 7:48ba87cd79b5 | 43 | * This function obtains numeric data from the gamepads joystick. |
AhmedPlaymaker | 7:48ba87cd79b5 | 44 | */ |
AhmedPlaymaker | 38:30e4e6191762 | 45 | void read_input(Gamepad &pad, FXOS8700CQ &device, int gm); |
AhmedPlaymaker | 7:48ba87cd79b5 | 46 | |
AhmedPlaymaker | 7:48ba87cd79b5 | 47 | /** Draw |
AhmedPlaymaker | 7:48ba87cd79b5 | 48 | * |
AhmedPlaymaker | 7:48ba87cd79b5 | 49 | * This function contains the draw functions of the other libraries used in the game. |
AhmedPlaymaker | 7:48ba87cd79b5 | 50 | */ |
AhmedPlaymaker | 49:441c32f6603e | 51 | void draw(N5110 &lcd, Gamepad &pad); |
AhmedPlaymaker | 39:210ac915e0a0 | 52 | |
AhmedPlaymaker | 56:142e9fdb77a8 | 53 | /** Update |
AhmedPlaymaker | 56:142e9fdb77a8 | 54 | * |
AhmedPlaymaker | 56:142e9fdb77a8 | 55 | * This function contains the update functions of the other libraries used in the game. |
AhmedPlaymaker | 56:142e9fdb77a8 | 56 | */ |
AhmedPlaymaker | 56:142e9fdb77a8 | 57 | int update(N5110 &lcd, Gamepad &pad, SDFileSystem &sd); |
AhmedPlaymaker | 56:142e9fdb77a8 | 58 | |
AhmedPlaymaker | 7:48ba87cd79b5 | 59 | /** Get Position |
AhmedPlaymaker | 7:48ba87cd79b5 | 60 | * |
AhmedPlaymaker | 7:48ba87cd79b5 | 61 | * This function contains the Get Position functions of the otehr libraries used in the game. |
AhmedPlaymaker | 7:48ba87cd79b5 | 62 | */ |
AhmedPlaymaker | 7:48ba87cd79b5 | 63 | void get_pos(); |
AhmedPlaymaker | 7:48ba87cd79b5 | 64 | |
AhmedPlaymaker | 29:c6358c39a70e | 65 | /** Check Block |
AhmedPlaymaker | 29:c6358c39a70e | 66 | * |
AhmedPlaymaker | 29:c6358c39a70e | 67 | * This function returns the srn of the block we are colliding with; |
AhmedPlaymaker | 29:c6358c39a70e | 68 | */ |
AhmedPlaymaker | 29:c6358c39a70e | 69 | int CheckBlock(int Block); |
AhmedPlaymaker | 29:c6358c39a70e | 70 | |
AhmedPlaymaker | 27:3b4775a0d0bb | 71 | /** Implement Collision |
AhmedPlaymaker | 27:3b4775a0d0bb | 72 | * |
AhmedPlaymaker | 27:3b4775a0d0bb | 73 | * This function allows the appropriate maths to take place after every collision. |
AhmedPlaymaker | 27:3b4775a0d0bb | 74 | */ |
AhmedPlaymaker | 27:3b4775a0d0bb | 75 | void ImplementCollision(Gamepad &pad); |
AhmedPlaymaker | 27:3b4775a0d0bb | 76 | |
AhmedPlaymaker | 41:4edac50f010d | 77 | int snakex; //x position of top beed |
AhmedPlaymaker | 41:4edac50f010d | 78 | int snakey; //y position of top beed |
AhmedPlaymaker | 59:c65a2e933c47 | 79 | int length; //saves the length of the snake, for collision detection relative to it's length and calculations. |
AhmedPlaymaker | 39:210ac915e0a0 | 80 | int velocity; //this is to stop/move the background (food and blocks), when collision occurs at a length greater than 10. |
AhmedPlaymaker | 59:c65a2e933c47 | 81 | int level; // this is diffrent to int _length as this stops at 10 to not complicate collisions as the snake doesn't grow longer than 10 visually. |
AhmedPlaymaker | 41:4edac50f010d | 82 | char bufferlevel[14]; //this helps me print the level on screen. |
AhmedPlaymaker | 38:30e4e6191762 | 83 | int garbage; //to save the angle at the point button A is pressed. |
AhmedPlaymaker | 38:30e4e6191762 | 84 | float angle; //saves the angle of tilt. |
AhmedPlaymaker | 9:d1d79d4ee673 | 85 | int foodbuff; //this makes food 1,2,and 3 come at seperate times |
AhmedPlaymaker | 59:c65a2e933c47 | 86 | int blocknum; // saves the number inside the colliding block, for calculations. |
AhmedPlaymaker | 19:05cc9f801468 | 87 | int blockgap; //to change frequency of fall |
AhmedPlaymaker | 59:c65a2e933c47 | 88 | int srn; //sr number of the block we are colliding with (1 to 5) |
AhmedPlaymaker | 42:973bb6036f81 | 89 | int send_block_number; //makes sure that the block number is only updated when send is activated. |
AhmedPlaymaker | 25:e827f1a8fadc | 90 | int back; //enables the player to go back on main menu if back is pressed. |
AhmedPlaymaker | 59:c65a2e933c47 | 91 | int b[15]; //this saves the beed number of the colliding snake, if beed 3 from top was colliding with any obstruction, b[2] will be 1. |
AhmedPlaymaker | 41:4edac50f010d | 92 | int *b_number; //pointer to save the numbers inside the block. |
AhmedPlaymaker | 59:c65a2e933c47 | 93 | Vector2D snake_pos[15]; //saves the position of all the snake beeds in an array for ease of collision processing. |
AhmedPlaymaker | 59:c65a2e933c47 | 94 | Vector2D food_pos[3]; //saves the position of all 3 snake food on the screen in a single array for ease of collision processing. |
AhmedPlaymaker | 59:c65a2e933c47 | 95 | Vector2D b_pos; //saves the origin of the blocks on the screen (this is the top left corner of the block row). |
AhmedPlaymaker | 7:48ba87cd79b5 | 96 | |
AhmedPlaymaker | 7:48ba87cd79b5 | 97 | private: |
AhmedPlaymaker | 7:48ba87cd79b5 | 98 | Snake _s; |
AhmedPlaymaker | 41:4edac50f010d | 99 | LengthCalc _l; |
AhmedPlaymaker | 44:cd10d07ea1e5 | 100 | WinLoose _wl; |
AhmedPlaymaker | 9:d1d79d4ee673 | 101 | SnakeFood _f; |
AhmedPlaymaker | 9:d1d79d4ee673 | 102 | SnakeFood _ff; |
AhmedPlaymaker | 9:d1d79d4ee673 | 103 | SnakeFood _fff; |
AhmedPlaymaker | 10:751bd953fa27 | 104 | Blocks _b; |
AhmedPlaymaker | 49:441c32f6603e | 105 | Stats _Setstats; |
AhmedPlaymaker | 7:48ba87cd79b5 | 106 | int _speed; |
AhmedPlaymaker | 59:c65a2e933c47 | 107 | int _length; //this is diffrent to the int length as this saves the length of the snake, for collision detection relative to it's length and calculations. |
AhmedPlaymaker | 59:c65a2e933c47 | 108 | int _maxLength; // this makes us go to the next level if if maxLength is achieved; |
AhmedPlaymaker | 7:48ba87cd79b5 | 109 | Direction _d; |
AhmedPlaymaker | 7:48ba87cd79b5 | 110 | float _mag; |
AhmedPlaymaker | 37:ee47699915b8 | 111 | int _detect_slowly; //this makes sure that when the length is more than 10, the colliding block doesnt decrease the all the length in a single itteration. |
AhmedPlaymaker | 7:48ba87cd79b5 | 112 | int n; |
AhmedPlaymaker | 7:48ba87cd79b5 | 113 | |
AhmedPlaymaker | 9:d1d79d4ee673 | 114 | /** Check for Snake and Food collision |
AhmedPlaymaker | 9:d1d79d4ee673 | 115 | * |
AhmedPlaymaker | 9:d1d79d4ee673 | 116 | * This function checks if the Snake has come into contact with it's food. |
AhmedPlaymaker | 9:d1d79d4ee673 | 117 | */ |
AhmedPlaymaker | 9:d1d79d4ee673 | 118 | void CheckSnakeFoodCollision(Gamepad &pad); |
AhmedPlaymaker | 9:d1d79d4ee673 | 119 | |
AhmedPlaymaker | 12:1e601b176437 | 120 | /** Check for Snake and Block collision |
AhmedPlaymaker | 12:1e601b176437 | 121 | * |
AhmedPlaymaker | 12:1e601b176437 | 122 | * This function checks if the Snake has come into contact with any Block. |
AhmedPlaymaker | 12:1e601b176437 | 123 | */ |
AhmedPlaymaker | 12:1e601b176437 | 124 | void CheckSnakeBlockCollision(Gamepad &pad); |
AhmedPlaymaker | 13:9785f2404045 | 125 | |
AhmedPlaymaker | 39:210ac915e0a0 | 126 | /** Implement velocity alteration. |
AhmedPlaymaker | 39:210ac915e0a0 | 127 | * |
AhmedPlaymaker | 39:210ac915e0a0 | 128 | * this is to stop/move the background (food and blocks), when collision occurs at a length greater than 10.lock. |
AhmedPlaymaker | 39:210ac915e0a0 | 129 | */ |
AhmedPlaymaker | 39:210ac915e0a0 | 130 | void _set_velocity(); |
AhmedPlaymaker | 39:210ac915e0a0 | 131 | |
AhmedPlaymaker | 13:9785f2404045 | 132 | /** Check for Snake and Block Sides collision |
AhmedPlaymaker | 13:9785f2404045 | 133 | * |
AhmedPlaymaker | 13:9785f2404045 | 134 | * This function checks if the Snake has come into contact with any the sides of the block and stops it moving. |
AhmedPlaymaker | 13:9785f2404045 | 135 | */ |
AhmedPlaymaker | 38:30e4e6191762 | 136 | void CheckSnakeBlockSidesCollision(Gamepad &pad); |
AhmedPlaymaker | 7:48ba87cd79b5 | 137 | }; |
AhmedPlaymaker | 7:48ba87cd79b5 | 138 | #endif |