Library containing the Game Engine

GameEngine.cpp

Committer:
ll14c4p
Date:
2017-05-03
Revision:
9:0f359bc0922f
Parent:
8:bd718162a87c
Child:
10:df8ea4e747e2

File content as of revision 9:0f359bc0922f:

#include "GameEngine.h"

GameEngine::GameEngine()
{

}

GameEngine::~GameEngine()
{

}

void GameEngine::init()
{
    
}



void GameEngine::read_input(Gamepad &pad)
{
    _d = pad.get_direction();
    _mag = pad.get_mag();
}

void GameEngine::draw(N5110 &lcd, Gamepad &pad)
{
    _p.draw(lcd);
    /*while ( pad.check_event(Gamepad::A_PRESSED) == true) {
        _proj.draw(lcd);
    }*/
    _proj.draw(lcd);
    _t.draw(lcd);
    _tt.draw(lcd);
    _ttt.draw(lcd);
}


void GameEngine::update(Gamepad &pad)
{
    _p.update(_d,_mag);
    _proj.update(); 
    _t.update();
    _tt.update();
    _ttt.update();
    CheckProjTargetCollision(pad);
    CheckPlayerTargetCollision(pad);
}

void GameEngine::get_pos()
{
    Vector2D player_pos = _p.get_pos();
    //printf("player pos = %f %f \n", player_pos.x, player_pos.y); //top left of player sprite
    // 81.000000 0.000000 top right
    // 0.000000 0.000000 is top left
    // 81.000000 45.000000 bottom right
    Vector2D proj_pos = _proj.get_pos();
    //printf("proj pos = %f %f \n", proj_pos.x, proj_pos.y);
    
    playerx = player_pos.x;
    playery = player_pos.y;
    //printf("playerxy in GAME = %d %d \n", playerx, playery);
    _proj.init(playerx,playery);
    
    }
    
    
    
void GameEngine::CheckProjTargetCollision(Gamepad &pad)
{
    Vector2D proj_pos = _proj.get_pos();
    Vector2D t_pos = _t.get_pos();
    Vector2D tt_pos = _tt.get_pos();
    Vector2D ttt_pos = _ttt.get_pos();

    Vector2D player_pos = _p.get_pos();

   // printf("proj %f %f \n", proj_pos.x, proj_pos.y);
    //printf("targ %f %f \n", t_pos.x, t_pos.y);
    
    if (
        ((proj_pos.y == t_pos.y) ||
        (proj_pos.y == t_pos.y + 1) ||
        (proj_pos.y == t_pos.y + 2) ||
        (proj_pos.y == t_pos.y + 3) ||
        (proj_pos.y == t_pos.y + 4) ||
        (proj_pos.y == t_pos.y + 5) ||
        (proj_pos.y == t_pos.y + 6) ||
        (proj_pos.y == t_pos.y + 7) ||
        (proj_pos.y + 1 == t_pos.y) ||
        (proj_pos.y + 1 == t_pos.y + 1) ||
        (proj_pos.y + 1 == t_pos.y + 2) ||
        (proj_pos.y + 1 == t_pos.y + 3) ||
        (proj_pos.y + 1 == t_pos.y + 4) ||
        (proj_pos.y + 1 == t_pos.y + 5) ||
        (proj_pos.y + 1 == t_pos.y + 6) ||
        (proj_pos.y + 1 == t_pos.y + 7)) &&
        ((proj_pos.x == t_pos.x) ||
        (proj_pos.x == t_pos.x + 1) ||
        (proj_pos.x == t_pos.x + 2) ||
        (proj_pos.x == t_pos.x + 3) ||
        (proj_pos.x == t_pos.x + 4) ||
        (proj_pos.x == t_pos.x + 5) ||
        (proj_pos.x == t_pos.x + 6) ||
        (proj_pos.x == t_pos.x + 7) ||
        (proj_pos.x + 1 == t_pos.x) ||
        (proj_pos.x + 1 == t_pos.x + 1) ||
        (proj_pos.x + 1 == t_pos.x + 2) ||
        (proj_pos.x + 1 == t_pos.x + 3) ||
        (proj_pos.x + 1 == t_pos.x + 4) ||
        (proj_pos.x + 1 == t_pos.x + 5) ||
        (proj_pos.x + 1 == t_pos.x + 6) ||
        (proj_pos.x + 1 == t_pos.x + 7) ||
        (proj_pos.x + 1 == t_pos.x + 8) ||
        (proj_pos.x + 1 == t_pos.x + 9) ||
        (proj_pos.x + 1 == t_pos.x + 10))
    ) {
        
        //printf("projtarget working \n");
        proj_pos.x = player_pos.x +2;
        proj_pos.y = player_pos.y;
        t_pos.x = rand() % 79;
        t_pos.y = 0;
        // audio feedback
        //pad.tone(1000.0,0.1);
    }
    
    if (
        ((proj_pos.y == tt_pos.y) ||
        (proj_pos.y == tt_pos.y + 1) ||
        (proj_pos.y == tt_pos.y + 2) ||
        (proj_pos.y == tt_pos.y + 3) ||
        (proj_pos.y == tt_pos.y + 4) ||
        (proj_pos.y == tt_pos.y + 5) ||
        (proj_pos.y == tt_pos.y + 6) ||
        (proj_pos.y == tt_pos.y + 7) ||
        (proj_pos.y + 1 == tt_pos.y) ||
        (proj_pos.y + 1 == tt_pos.y + 1) ||
        (proj_pos.y + 1 == tt_pos.y + 2) ||
        (proj_pos.y + 1 == tt_pos.y + 3) ||
        (proj_pos.y + 1 == tt_pos.y + 4) ||
        (proj_pos.y + 1 == tt_pos.y + 5) ||
        (proj_pos.y + 1 == tt_pos.y + 6) ||
        (proj_pos.y + 1 == tt_pos.y + 7)) &&
        ((proj_pos.x == tt_pos.x) ||
        (proj_pos.x == tt_pos.x + 1) ||
        (proj_pos.x == tt_pos.x + 2) ||
        (proj_pos.x == tt_pos.x + 3) ||
        (proj_pos.x == tt_pos.x + 4) ||
        (proj_pos.x == tt_pos.x + 5) ||
        (proj_pos.x == tt_pos.x + 6) ||
        (proj_pos.x == tt_pos.x + 7) ||
        (proj_pos.x + 1 == tt_pos.x) ||
        (proj_pos.x + 1 == tt_pos.x + 1) ||
        (proj_pos.x + 1 == tt_pos.x + 2) ||
        (proj_pos.x + 1 == tt_pos.x + 3) ||
        (proj_pos.x + 1 == tt_pos.x + 4) ||
        (proj_pos.x + 1 == tt_pos.x + 5) ||
        (proj_pos.x + 1 == tt_pos.x + 6) ||
        (proj_pos.x + 1 == tt_pos.x + 7) ||
        (proj_pos.x + 1 == tt_pos.x + 8) ||
        (proj_pos.x + 1 == tt_pos.x + 9) ||
        (proj_pos.x + 1 == tt_pos.x + 10))
    ) {
        
        //printf("projtarget working \n");
        proj_pos.x = player_pos.x +2;
        proj_pos.y = player_pos.y;
        tt_pos.x = rand() % 79;
        tt_pos.y = 0;
        // audio feedback
        //pad.tone(1000.0,0.1);
    }
    
    if (
        ((proj_pos.y == ttt_pos.y) ||
        (proj_pos.y == ttt_pos.y + 1) ||
        (proj_pos.y == ttt_pos.y + 2) ||
        (proj_pos.y == ttt_pos.y + 3) ||
        (proj_pos.y == ttt_pos.y + 4) ||
        (proj_pos.y == ttt_pos.y + 5) ||
        (proj_pos.y == ttt_pos.y + 6) ||
        (proj_pos.y == ttt_pos.y + 7) ||
        (proj_pos.y + 1 == ttt_pos.y) ||
        (proj_pos.y + 1 == ttt_pos.y + 1) ||
        (proj_pos.y + 1 == ttt_pos.y + 2) ||
        (proj_pos.y + 1 == ttt_pos.y + 3) ||
        (proj_pos.y + 1 == ttt_pos.y + 4) ||
        (proj_pos.y + 1 == ttt_pos.y + 5) ||
        (proj_pos.y + 1 == ttt_pos.y + 6) ||
        (proj_pos.y + 1 == ttt_pos.y + 7)) &&
        ((proj_pos.x == ttt_pos.x) ||
        (proj_pos.x == ttt_pos.x + 1) ||
        (proj_pos.x == ttt_pos.x + 2) ||
        (proj_pos.x == ttt_pos.x + 3) ||
        (proj_pos.x == ttt_pos.x + 4) ||
        (proj_pos.x == ttt_pos.x + 5) ||
        (proj_pos.x == ttt_pos.x + 6) ||
        (proj_pos.x == ttt_pos.x + 7) ||
        (proj_pos.x + 1 == ttt_pos.x) ||
        (proj_pos.x + 1 == ttt_pos.x + 1) ||
        (proj_pos.x + 1 == ttt_pos.x + 2) ||
        (proj_pos.x + 1 == ttt_pos.x + 3) ||
        (proj_pos.x + 1 == ttt_pos.x + 4) ||
        (proj_pos.x + 1 == ttt_pos.x + 5) ||
        (proj_pos.x + 1 == ttt_pos.x + 6) ||
        (proj_pos.x + 1 == ttt_pos.x + 7) ||
        (proj_pos.x + 1 == ttt_pos.x + 8) ||
        (proj_pos.x + 1 == ttt_pos.x + 9) ||
        (proj_pos.x + 1 == ttt_pos.x + 10))
    ) {
        
        //printf("projtarget working \n");
        proj_pos.x = player_pos.x +2;
        proj_pos.y = player_pos.y;
        ttt_pos.x = rand() % 79;
        ttt_pos.y = 0;
        // audio feedback
        //pad.tone(1000.0,0.1);
    }
     

    _proj.set_pos(proj_pos);
    _t.set_pos(t_pos);
    _tt.set_pos(tt_pos);
    _ttt.set_pos(ttt_pos);

       
    }
    
    
    
    
    
void GameEngine::CheckPlayerTargetCollision(Gamepad &pad)
    {
        Vector2D t_pos = _t.get_pos();
        Vector2D tt_pos = _tt.get_pos();
        Vector2D ttt_pos = _ttt.get_pos();
        Vector2D player_pos = _p.get_pos();
        
         
    if (
        ((player_pos.y == t_pos.y) ||
        (player_pos.y == t_pos.y + 1) ||
        (player_pos.y == t_pos.y + 2) ||
        (player_pos.y == t_pos.y + 3) ||
        (player_pos.y == t_pos.y + 4) ||
        (player_pos.y == t_pos.y + 5) ||
        (player_pos.y == t_pos.y + 6) ||
        (player_pos.y == t_pos.y + 7) ||
        (player_pos.y + 4 == t_pos.y) ||
        (player_pos.y + 4 == t_pos.y + 1) ||
        (player_pos.y + 4 == t_pos.y + 2) ||
        (player_pos.y + 4 == t_pos.y + 3) ||
        (player_pos.y + 4 == t_pos.y + 4) ||
        (player_pos.y + 4 == t_pos.y + 5) ||
        (player_pos.y + 4 == t_pos.y + 6) ||
        (player_pos.y + 4 == t_pos.y + 7)) &&
        ((player_pos.x == t_pos.x) ||
        (player_pos.x == t_pos.x + 1) ||
        (player_pos.x == t_pos.x + 2) ||
        (player_pos.x == t_pos.x + 3) ||
        (player_pos.x == t_pos.x + 4) ||
        (player_pos.x == t_pos.x + 5) ||
        (player_pos.x == t_pos.x + 6) ||
        (player_pos.x == t_pos.x + 7) ||
        (player_pos.x == t_pos.x + 8) ||
        (player_pos.x == t_pos.x + 9) ||
        (player_pos.x == t_pos.x + 10) ||
        (player_pos.x + 5 == t_pos.x) ||
        (player_pos.x + 5 == t_pos.x + 1) ||
        (player_pos.x + 5 == t_pos.x + 2) ||
        (player_pos.x + 5 == t_pos.x + 3) ||
        (player_pos.x + 5 == t_pos.x + 4) ||
        (player_pos.x + 5 == t_pos.x + 5) ||
        (player_pos.x + 5 == t_pos.x + 6) ||
        (player_pos.x + 5 == t_pos.x + 7) ||
        (player_pos.x + 5 == t_pos.x + 8) ||
        (player_pos.x + 5 == t_pos.x + 9) ||
        (player_pos.x + 5 == t_pos.x + 10))
    ) {
        
        //printf("collision working \n");
        // audio feedback
        //pad.tone(1000.0,0.1);
        t_pos.x = rand() % 79;
        t_pos.y = 0;
        printf("hit");
    }
    
    if (
        ((player_pos.y == tt_pos.y) ||
        (player_pos.y == tt_pos.y + 1) ||
        (player_pos.y == tt_pos.y + 2) ||
        (player_pos.y == tt_pos.y + 3) ||
        (player_pos.y == tt_pos.y + 4) ||
        (player_pos.y == tt_pos.y + 5) ||
        (player_pos.y == tt_pos.y + 6) ||
        (player_pos.y == tt_pos.y + 7) ||
        (player_pos.y + 4 == tt_pos.y) ||
        (player_pos.y + 4 == tt_pos.y + 1) ||
        (player_pos.y + 4 == tt_pos.y + 2) ||
        (player_pos.y + 4 == tt_pos.y + 3) ||
        (player_pos.y + 4 == tt_pos.y + 4) ||
        (player_pos.y + 4 == tt_pos.y + 5) ||
        (player_pos.y + 4 == tt_pos.y + 6) ||
        (player_pos.y + 4 == tt_pos.y + 7)) &&
        ((player_pos.x == tt_pos.x) ||
        (player_pos.x == tt_pos.x + 1) ||
        (player_pos.x == tt_pos.x + 2) ||
        (player_pos.x == tt_pos.x + 3) ||
        (player_pos.x == tt_pos.x + 4) ||
        (player_pos.x == tt_pos.x + 5) ||
        (player_pos.x == tt_pos.x + 6) ||
        (player_pos.x == tt_pos.x + 7) ||
        (player_pos.x == tt_pos.x + 8) ||
        (player_pos.x == tt_pos.x + 9) ||
        (player_pos.x == tt_pos.x + 10) ||
        (player_pos.x + 5 == tt_pos.x) ||
        (player_pos.x + 5 == tt_pos.x + 1) ||
        (player_pos.x + 5 == tt_pos.x + 2) ||
        (player_pos.x + 5 == tt_pos.x + 3) ||
        (player_pos.x + 5 == tt_pos.x + 4) ||
        (player_pos.x + 5 == tt_pos.x + 5) ||
        (player_pos.x + 5 == tt_pos.x + 6) ||
        (player_pos.x + 5 == tt_pos.x + 7) ||
        (player_pos.x + 5 == tt_pos.x + 8) ||
        (player_pos.x + 5 == tt_pos.x + 9) ||
        (player_pos.x + 5 == tt_pos.x + 10))
    ) {
        
        //printf("collision working \n");
        // audio feedback
        //pad.tone(1000.0,0.1);
        tt_pos.x = rand() % 79;
        tt_pos.y = 0;
        printf("hit");
    }
    
    if (
        ((player_pos.y == ttt_pos.y) ||
        (player_pos.y == ttt_pos.y + 1) ||
        (player_pos.y == ttt_pos.y + 2) ||
        (player_pos.y == ttt_pos.y + 3) ||
        (player_pos.y == ttt_pos.y + 4) ||
        (player_pos.y == ttt_pos.y + 5) ||
        (player_pos.y == ttt_pos.y + 6) ||
        (player_pos.y == ttt_pos.y + 7) ||
        (player_pos.y + 4 == ttt_pos.y) ||
        (player_pos.y + 4 == ttt_pos.y + 1) ||
        (player_pos.y + 4 == ttt_pos.y + 2) ||
        (player_pos.y + 4 == ttt_pos.y + 3) ||
        (player_pos.y + 4 == ttt_pos.y + 4) ||
        (player_pos.y + 4 == ttt_pos.y + 5) ||
        (player_pos.y + 4 == ttt_pos.y + 6) ||
        (player_pos.y + 4 == ttt_pos.y + 7)) &&
        ((player_pos.x == ttt_pos.x) ||
        (player_pos.x == ttt_pos.x + 1) ||
        (player_pos.x == ttt_pos.x + 2) ||
        (player_pos.x == ttt_pos.x + 3) ||
        (player_pos.x == ttt_pos.x + 4) ||
        (player_pos.x == ttt_pos.x + 5) ||
        (player_pos.x == ttt_pos.x + 6) ||
        (player_pos.x == ttt_pos.x + 7) ||
        (player_pos.x == ttt_pos.x + 8) ||
        (player_pos.x == ttt_pos.x + 9) ||
        (player_pos.x == ttt_pos.x + 10) ||
        (player_pos.x + 5 == ttt_pos.x) ||
        (player_pos.x + 5 == ttt_pos.x + 1) ||
        (player_pos.x + 5 == ttt_pos.x + 2) ||
        (player_pos.x + 5 == ttt_pos.x + 3) ||
        (player_pos.x + 5 == ttt_pos.x + 4) ||
        (player_pos.x + 5 == ttt_pos.x + 5) ||
        (player_pos.x + 5 == ttt_pos.x + 6) ||
        (player_pos.x + 5 == ttt_pos.x + 7) ||
        (player_pos.x + 5 == ttt_pos.x + 8) ||
        (player_pos.x + 5 == ttt_pos.x + 9) ||
        (player_pos.x + 5 == ttt_pos.x + 10))
    ) {
        
        //printf("collision working \n");
        // audio feedback
        //pad.tone(1000.0,0.1);
        ttt_pos.x = rand() % 79;
        ttt_pos.y = 0;
        printf("hit");
    }

    _t.set_pos(t_pos);
    _tt.set_pos(tt_pos);
    _ttt.set_pos(ttt_pos);
    }