Snake vs Block Game to be run upon K64F.

Dependencies:   mbed

Committer:
AhmedPlaymaker
Date:
Mon Apr 22 04:24:38 2019 +0000
Revision:
38:30e4e6191762
Parent:
37:ee47699915b8
Child:
39:210ac915e0a0
This might be the biggest yet!!! THIS HAS MOTION CONTROL

Who changed what in which revision?

UserRevisionLine numberNew 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 9:d1d79d4ee673 9 #include "SnakeFood.h"
AhmedPlaymaker 10:751bd953fa27 10 #include "Blocks.h"
AhmedPlaymaker 33:249cf423fb18 11 #include "StartScreen.h"
AhmedPlaymaker 33:249cf423fb18 12 #include "Stats.h"
AhmedPlaymaker 33:249cf423fb18 13 #include "SDFileSystem.h"
AhmedPlaymaker 7:48ba87cd79b5 14
AhmedPlaymaker 7:48ba87cd79b5 15 class SnakevsBlock
AhmedPlaymaker 7:48ba87cd79b5 16 {
AhmedPlaymaker 7:48ba87cd79b5 17 public:
AhmedPlaymaker 7:48ba87cd79b5 18 SnakevsBlock();
AhmedPlaymaker 7:48ba87cd79b5 19 ~SnakevsBlock();
AhmedPlaymaker 7:48ba87cd79b5 20
AhmedPlaymaker 7:48ba87cd79b5 21 /** Initialise Game Machine
AhmedPlaymaker 7:48ba87cd79b5 22 *
AhmedPlaymaker 7:48ba87cd79b5 23 * This function initialises the game machine.
AhmedPlaymaker 7:48ba87cd79b5 24 */
AhmedPlaymaker 7:48ba87cd79b5 25 void init( );
AhmedPlaymaker 7:48ba87cd79b5 26
AhmedPlaymaker 7:48ba87cd79b5 27 /** Read Input
AhmedPlaymaker 7:48ba87cd79b5 28 *
AhmedPlaymaker 7:48ba87cd79b5 29 * This function obtains numeric data from the gamepads joystick.
AhmedPlaymaker 7:48ba87cd79b5 30 */
AhmedPlaymaker 38:30e4e6191762 31 void read_input(Gamepad &pad, FXOS8700CQ &device, int gm);
AhmedPlaymaker 7:48ba87cd79b5 32
AhmedPlaymaker 7:48ba87cd79b5 33 /** Update
AhmedPlaymaker 7:48ba87cd79b5 34 *
AhmedPlaymaker 7:48ba87cd79b5 35 * This function contains the update functions of the other libraries used in the game.
AhmedPlaymaker 7:48ba87cd79b5 36 */
AhmedPlaymaker 33:249cf423fb18 37 int update(Gamepad &pad, SDFileSystem &sd);
AhmedPlaymaker 7:48ba87cd79b5 38
AhmedPlaymaker 7:48ba87cd79b5 39 /** Draw
AhmedPlaymaker 7:48ba87cd79b5 40 *
AhmedPlaymaker 7:48ba87cd79b5 41 * This function contains the draw functions of the other libraries used in the game.
AhmedPlaymaker 7:48ba87cd79b5 42 */
AhmedPlaymaker 7:48ba87cd79b5 43 void draw(N5110 &lcd, Gamepad &pad);
AhmedPlaymaker 7:48ba87cd79b5 44
AhmedPlaymaker 7:48ba87cd79b5 45 /** Get Position
AhmedPlaymaker 7:48ba87cd79b5 46 *
AhmedPlaymaker 7:48ba87cd79b5 47 * This function contains the Get Position functions of the otehr libraries used in the game.
AhmedPlaymaker 7:48ba87cd79b5 48 */
AhmedPlaymaker 7:48ba87cd79b5 49 void get_pos();
AhmedPlaymaker 7:48ba87cd79b5 50
AhmedPlaymaker 29:c6358c39a70e 51 /** Check Block
AhmedPlaymaker 29:c6358c39a70e 52 *
AhmedPlaymaker 29:c6358c39a70e 53 * This function returns the srn of the block we are colliding with;
AhmedPlaymaker 29:c6358c39a70e 54 */
AhmedPlaymaker 29:c6358c39a70e 55 int CheckBlock(int Block);
AhmedPlaymaker 29:c6358c39a70e 56
AhmedPlaymaker 27:3b4775a0d0bb 57 /** Implement Collision
AhmedPlaymaker 27:3b4775a0d0bb 58 *
AhmedPlaymaker 27:3b4775a0d0bb 59 * This function allows the appropriate maths to take place after every collision.
AhmedPlaymaker 27:3b4775a0d0bb 60 */
AhmedPlaymaker 27:3b4775a0d0bb 61 void ImplementCollision(Gamepad &pad);
AhmedPlaymaker 27:3b4775a0d0bb 62
AhmedPlaymaker 7:48ba87cd79b5 63
AhmedPlaymaker 7:48ba87cd79b5 64 int snakex;
AhmedPlaymaker 7:48ba87cd79b5 65 int snakey;
AhmedPlaymaker 7:48ba87cd79b5 66 int length;
AhmedPlaymaker 19:05cc9f801468 67 int level;
AhmedPlaymaker 38:30e4e6191762 68 int garbage; //to save the angle at the point button A is pressed.
AhmedPlaymaker 38:30e4e6191762 69 float angle; //saves the angle of tilt.
AhmedPlaymaker 9:d1d79d4ee673 70 int foodbuff; //this makes food 1,2,and 3 come at seperate times
AhmedPlaymaker 12:1e601b176437 71 int blocknum;
AhmedPlaymaker 19:05cc9f801468 72 int blockgap; //to change frequency of fall
AhmedPlaymaker 19:05cc9f801468 73 int blockbuff; // to manage the fall of food relative to the blocks
AhmedPlaymaker 12:1e601b176437 74 int srn;
AhmedPlaymaker 12:1e601b176437 75 int send; //makes sure that the block number is only updated when send is activated.
AhmedPlaymaker 13:9785f2404045 76 int speed; //makes sure that snake only moves if not colliding to block walls
AhmedPlaymaker 25:e827f1a8fadc 77 int back; //enables the player to go back on main menu if back is pressed.
AhmedPlaymaker 22:ee698f66146f 78 int b[15];
AhmedPlaymaker 18:b391caa5754c 79 int b0_to_b14[15];
AhmedPlaymaker 24:1c118b071430 80 Vector2D snake_pos[15];
AhmedPlaymaker 7:48ba87cd79b5 81
AhmedPlaymaker 7:48ba87cd79b5 82 private:
AhmedPlaymaker 7:48ba87cd79b5 83
AhmedPlaymaker 7:48ba87cd79b5 84 Snake _s;
AhmedPlaymaker 9:d1d79d4ee673 85 SnakeFood _f;
AhmedPlaymaker 9:d1d79d4ee673 86 SnakeFood _ff;
AhmedPlaymaker 9:d1d79d4ee673 87 SnakeFood _fff;
AhmedPlaymaker 10:751bd953fa27 88 Blocks _b;
AhmedPlaymaker 33:249cf423fb18 89 Stats _statset;
AhmedPlaymaker 7:48ba87cd79b5 90 int _speed;
AhmedPlaymaker 7:48ba87cd79b5 91 Direction _d;
AhmedPlaymaker 7:48ba87cd79b5 92 float _mag;
AhmedPlaymaker 37:ee47699915b8 93 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 94 int n;
AhmedPlaymaker 7:48ba87cd79b5 95
AhmedPlaymaker 9:d1d79d4ee673 96 /** Check for Snake and Food collision
AhmedPlaymaker 9:d1d79d4ee673 97 *
AhmedPlaymaker 9:d1d79d4ee673 98 * This function checks if the Snake has come into contact with it's food.
AhmedPlaymaker 9:d1d79d4ee673 99 */
AhmedPlaymaker 9:d1d79d4ee673 100 void CheckSnakeFoodCollision(Gamepad &pad);
AhmedPlaymaker 9:d1d79d4ee673 101
AhmedPlaymaker 12:1e601b176437 102 /** Check for Snake and Block collision
AhmedPlaymaker 12:1e601b176437 103 *
AhmedPlaymaker 12:1e601b176437 104 * This function checks if the Snake has come into contact with any Block.
AhmedPlaymaker 12:1e601b176437 105 */
AhmedPlaymaker 12:1e601b176437 106 void CheckSnakeBlockCollision(Gamepad &pad);
AhmedPlaymaker 13:9785f2404045 107
AhmedPlaymaker 13:9785f2404045 108 /** Check for Snake and Block Sides collision
AhmedPlaymaker 13:9785f2404045 109 *
AhmedPlaymaker 13:9785f2404045 110 * This function checks if the Snake has come into contact with any the sides of the block and stops it moving.
AhmedPlaymaker 13:9785f2404045 111 */
AhmedPlaymaker 38:30e4e6191762 112 void CheckSnakeBlockSidesCollision(Gamepad &pad);
AhmedPlaymaker 7:48ba87cd79b5 113 };
AhmedPlaymaker 7:48ba87cd79b5 114 #endif