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:
Wed Apr 12 14:46:51 2017 +0000
Revision:
7:ec6dc66ee196
Parent:
6:61bcf98e0a88
Child:
8:db24c475f64f
added to check_abxy function, now an action will be carried out on a button press but it has to be written into check_abxy; it won't call the same commands from a different library. Trying to use a timeout to delay the next use of the function

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 7:ec6dc66ee196 19 _delay = 1;
Nathanj94 1:43fbcc3584d6 20
Nathanj94 4:84e29254b988 21 basket.init(_basket_y, _basket_width);
Nathanj94 4:84e29254b988 22 objects.init(_objects_speed);
Nathanj94 0:8d02400f792a 23 }
Nathanj94 0:8d02400f792a 24
Nathanj94 0:8d02400f792a 25 void Catch_Model::input(Gamepad &pad)
Nathanj94 0:8d02400f792a 26 {
Nathanj94 0:8d02400f792a 27 _d = pad.get_direction();
Nathanj94 0:8d02400f792a 28 _mag = pad.get_mag();
Nathanj94 0:8d02400f792a 29 }
Nathanj94 0:8d02400f792a 30
Nathanj94 3:fc9133faec7a 31 void Catch_Model::update(N5110 &lcd, Gamepad &pad)
Nathanj94 0:8d02400f792a 32 {
Nathanj94 3:fc9133faec7a 33 check_basket_catch(lcd, pad);
Nathanj94 3:fc9133faec7a 34 check_basket_miss(lcd, pad);
Nathanj94 7:ec6dc66ee196 35 //check_abxy(lcd, pad);
Nathanj94 3:fc9133faec7a 36
Nathanj94 4:84e29254b988 37 basket.move(_d, _mag, pad);
Nathanj94 4:84e29254b988 38 objects.move();
Nathanj94 0:8d02400f792a 39 }
Nathanj94 0:8d02400f792a 40
Nathanj94 0:8d02400f792a 41 void Catch_Model::draw(N5110 &lcd)
Nathanj94 0:8d02400f792a 42 {
Nathanj94 4:84e29254b988 43 basket.draw(lcd);
Nathanj94 4:84e29254b988 44 objects.draw(lcd);
Nathanj94 4:84e29254b988 45 print_score(lcd);
Nathanj94 4:84e29254b988 46 print_lives(lcd);
Nathanj94 2:8410e09b77aa 47 }
Nathanj94 2:8410e09b77aa 48
Nathanj94 3:fc9133faec7a 49 void Catch_Model::check_basket_catch(N5110 &lcd, Gamepad &pad)
Nathanj94 2:8410e09b77aa 50 {
Nathanj94 4:84e29254b988 51 int b_x_pos = basket.get_x();
Nathanj94 4:84e29254b988 52 int b_y_pos = basket.get_y();
Nathanj94 4:84e29254b988 53 int o_x_pos = objects.get_x();
Nathanj94 4:84e29254b988 54 int o_y_pos = objects.get_y();
Nathanj94 2:8410e09b77aa 55
Nathanj94 3:fc9133faec7a 56 if(
Nathanj94 3:fc9133faec7a 57 (o_y_pos >= b_y_pos) &&
Nathanj94 3:fc9133faec7a 58 (o_x_pos > b_x_pos) &&
Nathanj94 3:fc9133faec7a 59 (o_x_pos <= (b_x_pos + 5))
Nathanj94 3:fc9133faec7a 60 ) {
Nathanj94 4:84e29254b988 61 objects.undraw(lcd);
Nathanj94 5:7db3e43e5aca 62 add_score();
Nathanj94 4:84e29254b988 63 objects.init(_objects_speed);
Nathanj94 3:fc9133faec7a 64 }
Nathanj94 2:8410e09b77aa 65 }
Nathanj94 2:8410e09b77aa 66
Nathanj94 3:fc9133faec7a 67 void Catch_Model::check_basket_miss(N5110 &lcd, Gamepad &pad)
Nathanj94 2:8410e09b77aa 68 {
Nathanj94 4:84e29254b988 69 int b_x_pos = basket.get_x();
Nathanj94 4:84e29254b988 70 int b_y_pos = basket.get_y();
Nathanj94 4:84e29254b988 71 int o_x_pos = objects.get_x();
Nathanj94 4:84e29254b988 72 int o_y_pos = objects.get_y();
Nathanj94 3:fc9133faec7a 73
Nathanj94 6:61bcf98e0a88 74 int score_var;
Nathanj94 6:61bcf98e0a88 75 score_var = objects.get_score_var();
Nathanj94 6:61bcf98e0a88 76
Nathanj94 3:fc9133faec7a 77 if (o_y_pos > b_y_pos) {
Nathanj94 4:84e29254b988 78 objects.undraw(lcd);
Nathanj94 6:61bcf98e0a88 79 if (score_var != 5) {
Nathanj94 6:61bcf98e0a88 80 _lives--;
Nathanj94 6:61bcf98e0a88 81 }
Nathanj94 4:84e29254b988 82 objects.init(_objects_speed);
Nathanj94 3:fc9133faec7a 83 }
Nathanj94 3:fc9133faec7a 84 }
Nathanj94 3:fc9133faec7a 85
Nathanj94 7:ec6dc66ee196 86 void Catch_Model::check_abxy(N5110 &lcd, Gamepad &pad)
Nathanj94 7:ec6dc66ee196 87 {
Nathanj94 7:ec6dc66ee196 88 if (
Nathanj94 7:ec6dc66ee196 89 (pad.check_event(Gamepad::A_PRESSED) == true) &&
Nathanj94 7:ec6dc66ee196 90 (_delay == 1)
Nathanj94 7:ec6dc66ee196 91 ) {
Nathanj94 7:ec6dc66ee196 92 //abxy.a_pressed(_objects_speed, lcd);
Nathanj94 7:ec6dc66ee196 93 objects.undraw(lcd);
Nathanj94 7:ec6dc66ee196 94 objects.init(_objects_speed);
Nathanj94 7:ec6dc66ee196 95
Nathanj94 7:ec6dc66ee196 96 _delay = 0;
Nathanj94 7:ec6dc66ee196 97 //timeout.attach(&set_delay(), 10.0);
Nathanj94 7:ec6dc66ee196 98 }
Nathanj94 7:ec6dc66ee196 99
Nathanj94 7:ec6dc66ee196 100 }
Nathanj94 7:ec6dc66ee196 101
Nathanj94 7:ec6dc66ee196 102 void Catch_Model::set_delay()
Nathanj94 7:ec6dc66ee196 103 {
Nathanj94 7:ec6dc66ee196 104 _delay = 1;
Nathanj94 7:ec6dc66ee196 105 //return _delay;
Nathanj94 7:ec6dc66ee196 106 }
Nathanj94 7:ec6dc66ee196 107
Nathanj94 5:7db3e43e5aca 108 void Catch_Model::add_score()
Nathanj94 5:7db3e43e5aca 109 {
Nathanj94 5:7db3e43e5aca 110 int score_var;
Nathanj94 5:7db3e43e5aca 111 score_var = objects.get_score_var();
Nathanj94 5:7db3e43e5aca 112
Nathanj94 5:7db3e43e5aca 113 if (score_var == 1) {
Nathanj94 5:7db3e43e5aca 114 basket.add_score_1();
Nathanj94 5:7db3e43e5aca 115 } else if (score_var == 2) {
Nathanj94 5:7db3e43e5aca 116 basket.add_score_2();
Nathanj94 5:7db3e43e5aca 117 } else if (score_var == 3) {
Nathanj94 5:7db3e43e5aca 118 basket.add_score_5();
Nathanj94 6:61bcf98e0a88 119 } else if (score_var == 4) {
Nathanj94 6:61bcf98e0a88 120 basket.add_score_10();
Nathanj94 5:7db3e43e5aca 121 } else {
Nathanj94 6:61bcf98e0a88 122 _lives--;
Nathanj94 5:7db3e43e5aca 123 }
Nathanj94 5:7db3e43e5aca 124 }
Nathanj94 5:7db3e43e5aca 125
Nathanj94 4:84e29254b988 126 int Catch_Model::get_lives()
Nathanj94 4:84e29254b988 127 {
Nathanj94 4:84e29254b988 128 return _lives;
Nathanj94 4:84e29254b988 129 }
Nathanj94 4:84e29254b988 130
Nathanj94 4:84e29254b988 131 void Catch_Model::print_lives(N5110 &lcd)
Nathanj94 4:84e29254b988 132 {
Nathanj94 4:84e29254b988 133 char buffer[14];
Nathanj94 4:84e29254b988 134 int lives = get_lives();
Nathanj94 4:84e29254b988 135
Nathanj94 4:84e29254b988 136 int print_lives = sprintf(buffer, "LIVES:%d", lives);
Nathanj94 4:84e29254b988 137 if (print_lives <= 14) {
Nathanj94 4:84e29254b988 138 lcd.printString(buffer,0,0);
Nathanj94 4:84e29254b988 139 lcd.refresh();
Nathanj94 4:84e29254b988 140 }
Nathanj94 4:84e29254b988 141 }
Nathanj94 4:84e29254b988 142
Nathanj94 3:fc9133faec7a 143 void Catch_Model::print_score(N5110 &lcd)
Nathanj94 3:fc9133faec7a 144 {
Nathanj94 3:fc9133faec7a 145 char buffer[14];
Nathanj94 4:84e29254b988 146 int score = basket.get_score();
Nathanj94 2:8410e09b77aa 147
Nathanj94 4:84e29254b988 148 int print_score;
Nathanj94 4:84e29254b988 149
Nathanj94 4:84e29254b988 150 if ((score == 0)||(score <= 9)) {
Nathanj94 4:84e29254b988 151 print_score = sprintf(buffer, "000%d", score);
Nathanj94 4:84e29254b988 152 } else if (score <= 99) {
Nathanj94 4:84e29254b988 153 print_score = sprintf(buffer, "00%2d", score);
Nathanj94 4:84e29254b988 154 } else if (score <= 999 ) {
Nathanj94 4:84e29254b988 155 print_score = sprintf(buffer, "0%3d", score);
Nathanj94 4:84e29254b988 156 } else {
Nathanj94 4:84e29254b988 157 print_score = sprintf(buffer, "%4d", score);
Nathanj94 4:84e29254b988 158 }
Nathanj94 4:84e29254b988 159
Nathanj94 3:fc9133faec7a 160 if (print_score <= 14) {
Nathanj94 4:84e29254b988 161 lcd.printString(buffer,59,0);
Nathanj94 3:fc9133faec7a 162 lcd.refresh();
Nathanj94 3:fc9133faec7a 163 }
Nathanj94 3:fc9133faec7a 164 }
Nathanj94 3:fc9133faec7a 165