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

Committer:
Nathanj94
Date:
Tue Apr 04 16:33:19 2017 +0000
Revision:
6:61bcf98e0a88
Parent:
5:7db3e43e5aca
Child:
7:ec6dc66ee196
Added to check_catch and check_miss functions, if antifruit is caught it reduces lives by 1, if it misses it just calls init w/out changing lives or score

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Nathanj94 0:8d02400f792a 1 #include "Catch_Model.h"
Nathanj94 0:8d02400f792a 2
Nathanj94 0:8d02400f792a 3 Catch_Model::Catch_Model()
Nathanj94 0:8d02400f792a 4 {
Nathanj94 0:8d02400f792a 5
Nathanj94 0:8d02400f792a 6 }
Nathanj94 0:8d02400f792a 7
Nathanj94 0:8d02400f792a 8 Catch_Model::~Catch_Model()
Nathanj94 0:8d02400f792a 9 {
Nathanj94 0:8d02400f792a 10
Nathanj94 0:8d02400f792a 11 }
Nathanj94 0:8d02400f792a 12
Nathanj94 4:84e29254b988 13 void Catch_Model::init(int basket_y, int basket_width, int objects_speed, int lives)
Nathanj94 0:8d02400f792a 14 {
Nathanj94 0:8d02400f792a 15 _basket_y = basket_y;
Nathanj94 0:8d02400f792a 16 _basket_width = basket_width;
Nathanj94 1:43fbcc3584d6 17 _objects_speed = objects_speed;
Nathanj94 4:84e29254b988 18 _lives = lives;
Nathanj94 1:43fbcc3584d6 19
Nathanj94 4:84e29254b988 20 basket.init(_basket_y, _basket_width);
Nathanj94 4:84e29254b988 21 objects.init(_objects_speed);
Nathanj94 0:8d02400f792a 22 }
Nathanj94 0:8d02400f792a 23
Nathanj94 0:8d02400f792a 24 void Catch_Model::input(Gamepad &pad)
Nathanj94 0:8d02400f792a 25 {
Nathanj94 0:8d02400f792a 26 _d = pad.get_direction();
Nathanj94 0:8d02400f792a 27 _mag = pad.get_mag();
Nathanj94 0:8d02400f792a 28 }
Nathanj94 0:8d02400f792a 29
Nathanj94 3:fc9133faec7a 30 void Catch_Model::update(N5110 &lcd, Gamepad &pad)
Nathanj94 0:8d02400f792a 31 {
Nathanj94 3:fc9133faec7a 32 check_basket_catch(lcd, pad);
Nathanj94 3:fc9133faec7a 33 check_basket_miss(lcd, pad);
Nathanj94 3:fc9133faec7a 34
Nathanj94 4:84e29254b988 35 basket.move(_d, _mag, pad);
Nathanj94 4:84e29254b988 36 objects.move();
Nathanj94 0:8d02400f792a 37 }
Nathanj94 0:8d02400f792a 38
Nathanj94 0:8d02400f792a 39 void Catch_Model::draw(N5110 &lcd)
Nathanj94 0:8d02400f792a 40 {
Nathanj94 4:84e29254b988 41 basket.draw(lcd);
Nathanj94 4:84e29254b988 42 objects.draw(lcd);
Nathanj94 4:84e29254b988 43 print_score(lcd);
Nathanj94 4:84e29254b988 44 print_lives(lcd);
Nathanj94 2:8410e09b77aa 45 }
Nathanj94 2:8410e09b77aa 46
Nathanj94 3:fc9133faec7a 47 void Catch_Model::check_basket_catch(N5110 &lcd, Gamepad &pad)
Nathanj94 2:8410e09b77aa 48 {
Nathanj94 4:84e29254b988 49 int b_x_pos = basket.get_x();
Nathanj94 4:84e29254b988 50 int b_y_pos = basket.get_y();
Nathanj94 4:84e29254b988 51 int o_x_pos = objects.get_x();
Nathanj94 4:84e29254b988 52 int o_y_pos = objects.get_y();
Nathanj94 2:8410e09b77aa 53
Nathanj94 3:fc9133faec7a 54 if(
Nathanj94 3:fc9133faec7a 55 (o_y_pos >= b_y_pos) &&
Nathanj94 3:fc9133faec7a 56 (o_x_pos > b_x_pos) &&
Nathanj94 3:fc9133faec7a 57 (o_x_pos <= (b_x_pos + 5))
Nathanj94 3:fc9133faec7a 58 ) {
Nathanj94 4:84e29254b988 59 objects.undraw(lcd);
Nathanj94 5:7db3e43e5aca 60 add_score();
Nathanj94 4:84e29254b988 61 objects.init(_objects_speed);
Nathanj94 3:fc9133faec7a 62 }
Nathanj94 2:8410e09b77aa 63 }
Nathanj94 2:8410e09b77aa 64
Nathanj94 3:fc9133faec7a 65 void Catch_Model::check_basket_miss(N5110 &lcd, Gamepad &pad)
Nathanj94 2:8410e09b77aa 66 {
Nathanj94 4:84e29254b988 67 int b_x_pos = basket.get_x();
Nathanj94 4:84e29254b988 68 int b_y_pos = basket.get_y();
Nathanj94 4:84e29254b988 69 int o_x_pos = objects.get_x();
Nathanj94 4:84e29254b988 70 int o_y_pos = objects.get_y();
Nathanj94 3:fc9133faec7a 71
Nathanj94 6:61bcf98e0a88 72 int score_var;
Nathanj94 6:61bcf98e0a88 73 score_var = objects.get_score_var();
Nathanj94 6:61bcf98e0a88 74
Nathanj94 3:fc9133faec7a 75 if (o_y_pos > b_y_pos) {
Nathanj94 4:84e29254b988 76 objects.undraw(lcd);
Nathanj94 6:61bcf98e0a88 77 if (score_var != 5) {
Nathanj94 6:61bcf98e0a88 78 _lives--;
Nathanj94 6:61bcf98e0a88 79 }
Nathanj94 4:84e29254b988 80 objects.init(_objects_speed);
Nathanj94 3:fc9133faec7a 81 }
Nathanj94 3:fc9133faec7a 82 }
Nathanj94 3:fc9133faec7a 83
Nathanj94 5:7db3e43e5aca 84 void Catch_Model::add_score()
Nathanj94 5:7db3e43e5aca 85 {
Nathanj94 5:7db3e43e5aca 86 int score_var;
Nathanj94 5:7db3e43e5aca 87 score_var = objects.get_score_var();
Nathanj94 5:7db3e43e5aca 88
Nathanj94 5:7db3e43e5aca 89 if (score_var == 1) {
Nathanj94 5:7db3e43e5aca 90 basket.add_score_1();
Nathanj94 5:7db3e43e5aca 91 } else if (score_var == 2) {
Nathanj94 5:7db3e43e5aca 92 basket.add_score_2();
Nathanj94 5:7db3e43e5aca 93 } else if (score_var == 3) {
Nathanj94 5:7db3e43e5aca 94 basket.add_score_5();
Nathanj94 6:61bcf98e0a88 95 } else if (score_var == 4) {
Nathanj94 6:61bcf98e0a88 96 basket.add_score_10();
Nathanj94 5:7db3e43e5aca 97 } else {
Nathanj94 6:61bcf98e0a88 98 _lives--;
Nathanj94 5:7db3e43e5aca 99 }
Nathanj94 5:7db3e43e5aca 100 }
Nathanj94 5:7db3e43e5aca 101
Nathanj94 4:84e29254b988 102 int Catch_Model::get_lives()
Nathanj94 4:84e29254b988 103 {
Nathanj94 4:84e29254b988 104 return _lives;
Nathanj94 4:84e29254b988 105 }
Nathanj94 4:84e29254b988 106
Nathanj94 4:84e29254b988 107 void Catch_Model::print_lives(N5110 &lcd)
Nathanj94 4:84e29254b988 108 {
Nathanj94 4:84e29254b988 109 char buffer[14];
Nathanj94 4:84e29254b988 110 int lives = get_lives();
Nathanj94 4:84e29254b988 111
Nathanj94 4:84e29254b988 112 int print_lives = sprintf(buffer, "LIVES:%d", lives);
Nathanj94 4:84e29254b988 113 if (print_lives <= 14) {
Nathanj94 4:84e29254b988 114 lcd.printString(buffer,0,0);
Nathanj94 4:84e29254b988 115 lcd.refresh();
Nathanj94 4:84e29254b988 116 }
Nathanj94 4:84e29254b988 117 }
Nathanj94 4:84e29254b988 118
Nathanj94 3:fc9133faec7a 119 void Catch_Model::print_score(N5110 &lcd)
Nathanj94 3:fc9133faec7a 120 {
Nathanj94 3:fc9133faec7a 121 char buffer[14];
Nathanj94 4:84e29254b988 122 int score = basket.get_score();
Nathanj94 2:8410e09b77aa 123
Nathanj94 4:84e29254b988 124 int print_score;
Nathanj94 4:84e29254b988 125
Nathanj94 4:84e29254b988 126 if ((score == 0)||(score <= 9)) {
Nathanj94 4:84e29254b988 127 print_score = sprintf(buffer, "000%d", score);
Nathanj94 4:84e29254b988 128 } else if (score <= 99) {
Nathanj94 4:84e29254b988 129 print_score = sprintf(buffer, "00%2d", score);
Nathanj94 4:84e29254b988 130 } else if (score <= 999 ) {
Nathanj94 4:84e29254b988 131 print_score = sprintf(buffer, "0%3d", score);
Nathanj94 4:84e29254b988 132 } else {
Nathanj94 4:84e29254b988 133 print_score = sprintf(buffer, "%4d", score);
Nathanj94 4:84e29254b988 134 }
Nathanj94 4:84e29254b988 135
Nathanj94 3:fc9133faec7a 136 if (print_score <= 14) {
Nathanj94 4:84e29254b988 137 lcd.printString(buffer,59,0);
Nathanj94 3:fc9133faec7a 138 lcd.refresh();
Nathanj94 3:fc9133faec7a 139 }
Nathanj94 3:fc9133faec7a 140 }
Nathanj94 3:fc9133faec7a 141