Snake vs Block Game to be run upon K64F.

Dependencies:   mbed

SnakevsBlock/SnakevsBlock.h

Committer:
AhmedPlaymaker
Date:
2019-04-17
Revision:
33:249cf423fb18
Parent:
29:c6358c39a70e
Child:
37:ee47699915b8

File content as of revision 33:249cf423fb18:

#ifndef SNAKEVSBLOCK_H
#define SNAKEVSBLOCK_H

#include "mbed.h"
#include "N5110.h"
#include "Gamepad.h"
#include "Snake.h"
#include "SnakeFood.h"
#include "Blocks.h"
#include "StartScreen.h"
#include "Stats.h"
#include "SDFileSystem.h"

class SnakevsBlock
{
    public:
    SnakevsBlock();
    ~SnakevsBlock();
    
    /** Initialise Game Machine
    *
    *   This function initialises the game machine.
    */
    void init( );
    
    /** Read Input
    *
    *   This function obtains numeric data from the gamepads joystick.
    */
    void read_input(Gamepad &pad);
    
    /** Update
    *
    *   This function contains the update functions of the other libraries used in the game.
    */
    int update(Gamepad &pad, SDFileSystem &sd);
    
    /** Draw 
    *
    *   This function contains the draw functions of the other libraries used in the game.
    */
    void draw(N5110 &lcd, Gamepad &pad);
    
    /** Get Position
    *
    *   This function contains the Get Position functions of the otehr libraries used in the game.
    */
    void get_pos();
    
    /** Check Block
    *
    *   This function returns the srn of the block we are colliding with;
    */
    int CheckBlock(int Block);
    
    /** Implement Collision
    *
    *   This function allows the appropriate maths to take place after every collision.
    */
    void ImplementCollision(Gamepad &pad);
    
    
    int snakex;
    int snakey;
    int length;
    int level;
    int foodbuff;  //this makes food 1,2,and 3 come at seperate times
    int blocknum;
    int blockgap; //to change frequency of fall
    int blockbuff; // to manage the fall of food relative to the blocks
    int srn;
    int send; //makes sure that the block number is only updated when send is activated.
    int speed; //makes sure that snake only moves if not colliding to block walls
    int back; //enables the player to go back on main menu if back is pressed.
    int b[15];
    int b0_to_b14[15];
    Vector2D snake_pos[15];
    
    private:
    
    Snake _s;
    SnakeFood _f;
    SnakeFood _ff;
    SnakeFood _fff;
    Blocks _b;
    Stats _statset;
    int _speed;
    Direction _d;
    float _mag;
    int n;
    
    /** Check for Snake and Food collision
    *
    *   This function checks if the Snake has come into contact with it's food.
    */
    void CheckSnakeFoodCollision(Gamepad &pad);
    
    /** Check for Snake and Block collision
    *
    *   This function checks if the Snake has come into contact with any Block.
    */
    void CheckSnakeBlockCollision(Gamepad &pad);
    
    /** Check for Snake and Block Sides collision
    *
    *   This function checks if the Snake has come into contact with any the sides of the block and stops it moving.
    */
    void CheckSnakeBlockSidesCollision(Gamepad &pad, Direction d);
};
#endif