Uses accompanying Basket, Objects and Fruit libraries to create Fruit Basket game. If an object is caught, points are added; if an object in missed, a 'life' is lost.

Dependents:   Game_Controller_Project

Catch_Model.cpp

Committer:
Nathanj94
Date:
2017-03-21
Revision:
3:fc9133faec7a
Parent:
2:8410e09b77aa
Child:
4:84e29254b988

File content as of revision 3:fc9133faec7a:

#include "Catch_Model.h"

Catch_Model::Catch_Model()
{
    
}

Catch_Model::~Catch_Model()
{
    
}

void Catch_Model::init(int basket_y, int basket_width, int objects_speed)
{
    _basket_y = basket_y;
    _basket_width = basket_width;
    
    _objects_speed = objects_speed;
    
    _basket.Basket_init(_basket_y, _basket_width);
    _objects.Objects_init(_objects_speed);
}

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

void Catch_Model::update(N5110 &lcd, Gamepad &pad)
{
    check_basket_catch(lcd, pad);
    check_basket_miss(lcd, pad);
    
    print_score(lcd);
    
    _basket.Basket_move(_d, _mag);
    _objects.Objects_move();
}

void Catch_Model::draw(N5110 &lcd)
{
    _basket.Basket_draw(lcd);
    _objects.Objects_draw(lcd);
}

void Catch_Model::check_basket_catch(N5110 &lcd, Gamepad &pad)
{
   int b_x_pos = _basket.get_Basket_x();
   int b_y_pos = _basket.get_Basket_y();
   int o_x_pos = _objects.get_Objects_x();
   int o_y_pos = _objects.get_Objects_y();
    
    if(
       (o_y_pos >= b_y_pos) &&
       (o_x_pos > b_x_pos) &&
       (o_x_pos <= (b_x_pos + 5))
       ) {
           _objects.Objects_undraw(lcd);
           _basket.Basket_score();
           _objects.Objects_init(_objects_speed);
    }
}

void Catch_Model::check_basket_miss(N5110 &lcd, Gamepad &pad)
{
   int b_x_pos = _basket.get_Basket_x();
   int b_y_pos = _basket.get_Basket_y();
   int o_x_pos = _objects.get_Objects_x();
   int o_y_pos = _objects.get_Objects_y();
   
   if (o_y_pos > b_y_pos) {
       _objects.Objects_undraw(lcd);
       _objects.Objects_init(_objects_speed);
   } 
}

void Catch_Model::print_score(N5110 &lcd)
{
    char buffer[14];
    
    int score = _basket.get_Basket_score();
    int print_score = sprintf(buffer, "SCORE: %2d", score);
    if (print_score <= 14) {
        lcd.printString(buffer,0,0);
        lcd.refresh();
    }
}