ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el19tb

Dependencies:   mbed

Frogger/Frogger.h

Committer:
el19tb
Date:
2020-05-23
Revision:
46:e39abe665271
Parent:
44:f02510eeb165
Child:
47:29c4796a49e5

File content as of revision 46:e39abe665271:

#ifndef FROGGER_H
#define FROGGER_H

#include "mbed.h"
#include "N5110.h"
#include "Gamepad.h"

#include "Frog.h"
#include "Menu.h"
#include "GraphicEngine.h"
#include "WaterSprites.h"
#include "Vehicle.h"
#include "Background.h"

#include <vector>
#include <stdio.h> 
#include <cstddef>
#include <vector>

class Frogger
{
    public: 
        
        //GraphicEngine *graphics; // local renderer object
        Frog *frog; // one frog object

        int grid; // size of one game unit
       
        Frogger();
        Frogger(Frog *frog, int grid, int w, int h); // constructor
        
    public:
        int current_level;
        bool frogWater; 
        bool frogOnLog; // attached
        
    public:
    
        Gamepad gamepad; // actual hardware object

        int row_number;
        int grid_width; // screen width in grid units
        int lcd_w;
        int lcd_h;

    public:

        // Level One Car objects
        Object car_row_one_one[3]; 
        Object car_row_two_one[2];
        Object car_row_three_one[3];
        Object car_row_four_one[4];

        // Level One Log objects
        Object row_one_log[3]; // large sized
        Object row_two_log[2]; // medium sized
        Object row_three_log[3]; // large sized

        // Level two Car Objects
        Object car_row_one_two[4];
        Object car_row_two_two[3];
        Object car_row_three_two[4];
        Object car_row_four_two[3];

        // level two log objects
        Object level_row_one[2];
        Object level_row_two[2];
        Object level_row_three[3];
    
    public:
        void checkFrogOnWater();
        void checkFrogAction(Object log);
        void setupLevelTwoRows();
        void moveFrogWithLog(Object *log);

        void levelOneCollision();
        void levelTwoCollision();
        void checkCollison(Object object);

        void setupRowDistance(Object *objects, int dis, int array_size);
        void setDistance(Object *object, int dis);

        void setRowObjects(Object *objecs, int row, int array_size);
        void createRow(Object *object, int row);

        void setSpriteObjects(Object *objects, char c, int array_size);
        void setSprite(Object *object, char c);

        void setDirObjects(Object *objecs, int dir, int array_size);
        void setDir(Object *objecs, int dir);

        //void moveLogLevelTwo();

        void moveLogsLevelOne();

        void moveLogsLevelTwo();


        void speedSlow();
        void speedMedium();
        void speedFast();

        // LEVEL ONE FUNCTIONS
        void setupLevelOne();
        
        // set up vehicles
        void setupLevelOneRow();
        void setupLevelOneXPos();
        void setupLevelOneSprites();
        void setupLevelOneDir();

        // set up logs
        void setupLogsLevelOne();

        void setLogLevelOneXPos();
        void setLogLevelOneRow();
        void setLogLevelOneDir();
        void setLogLevelOneSprites();

        // LEVEL TWO FUNCTIONS
        void setupLevelTwo();
        int randCars();

         // setup vehicles
        void setupLevelTwoXPos();
        void setupLevelTwoSprites();  
        void setupLevelTwoDir();

         //log objects    
        void setupLogLevelTwo();

        void setLogLevelTwoXPos();
        void setLogLevelTwoRow();
        void setLogLevelTwoSprite();
        void setLogLevelTwoDir();
        void initializeLevelTwo();

        void displayObject(Object &temp_object);  
       
    public:

        void start();
        void input();  
        void process_input(); 
        void clear();
        void runLevelOne();
        void runLevelTwo();
        void moveVehiclesLevelOne();
        void moveVehiclesLevelTwo();
        void moveVehicle(Object *row, char c, int array_size);
        void moveIndividualObject(Object *vehicle, char c);
        void checkOutOfBounds(Object *vehicle);

        void runCurrentLevel();
        void initializeParams(int w, int h, int grid);
        void initializeEmbeddedSystem();
        void checkCurrentLevelCollision();
        void checkIfFrogIsInWater();
        void moveFrog(int xWay, int yWay);
        void game();
        void refresh();
        void createWaterLane();
        void createMultipleLanesWater();
        void drawRoadObjects();
        void createRoadLane();
        void createMultipleRoadLane();
        void drawSafety();
        void createSafetyObject();
        void createMultipleSafetyLane();

        void drawEndPost();
        void drawWater();
        void loopWater();
        void moveWater();
         
        
        void move();
        void checkFrogOutOfBounds();

        void setup();
        void createGoalPost();     
};

#endif