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@3:fc9133faec7a, 2017-03-21 (annotated)
- Committer:
- Nathanj94
- Date:
- Tue Mar 21 11:12:18 2017 +0000
- Revision:
- 3:fc9133faec7a
- Parent:
- 2:8410e09b77aa
- Child:
- 4:84e29254b988
collision functions added to check for catch or miss, new objects fall at the end of each function and score is updated if the object is caught. Score is printed on the screen but it flickers so needs to be moved to a different function
Who changed what in which revision?
User | Revision | Line number | New 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 | 1:43fbcc3584d6 | 13 | void Catch_Model::init(int basket_y, int basket_width, int objects_speed) |
Nathanj94 | 0:8d02400f792a | 14 | { |
Nathanj94 | 0:8d02400f792a | 15 | _basket_y = basket_y; |
Nathanj94 | 0:8d02400f792a | 16 | _basket_width = basket_width; |
Nathanj94 | 0:8d02400f792a | 17 | |
Nathanj94 | 1:43fbcc3584d6 | 18 | _objects_speed = objects_speed; |
Nathanj94 | 1:43fbcc3584d6 | 19 | |
Nathanj94 | 0:8d02400f792a | 20 | _basket.Basket_init(_basket_y, _basket_width); |
Nathanj94 | 1:43fbcc3584d6 | 21 | _objects.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 | 3:fc9133faec7a | 35 | print_score(lcd); |
Nathanj94 | 3:fc9133faec7a | 36 | |
Nathanj94 | 1:43fbcc3584d6 | 37 | _basket.Basket_move(_d, _mag); |
Nathanj94 | 1:43fbcc3584d6 | 38 | _objects.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 | 0:8d02400f792a | 43 | _basket.Basket_draw(lcd); |
Nathanj94 | 1:43fbcc3584d6 | 44 | _objects.Objects_draw(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 | 3:fc9133faec7a | 49 | int b_x_pos = _basket.get_Basket_x(); |
Nathanj94 | 3:fc9133faec7a | 50 | int b_y_pos = _basket.get_Basket_y(); |
Nathanj94 | 3:fc9133faec7a | 51 | int o_x_pos = _objects.get_Objects_x(); |
Nathanj94 | 3:fc9133faec7a | 52 | int o_y_pos = _objects.get_Objects_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 | 3:fc9133faec7a | 59 | _objects.Objects_undraw(lcd); |
Nathanj94 | 3:fc9133faec7a | 60 | _basket.Basket_score(); |
Nathanj94 | 3:fc9133faec7a | 61 | _objects.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 | 3:fc9133faec7a | 67 | int b_x_pos = _basket.get_Basket_x(); |
Nathanj94 | 3:fc9133faec7a | 68 | int b_y_pos = _basket.get_Basket_y(); |
Nathanj94 | 3:fc9133faec7a | 69 | int o_x_pos = _objects.get_Objects_x(); |
Nathanj94 | 3:fc9133faec7a | 70 | int o_y_pos = _objects.get_Objects_y(); |
Nathanj94 | 3:fc9133faec7a | 71 | |
Nathanj94 | 3:fc9133faec7a | 72 | if (o_y_pos > b_y_pos) { |
Nathanj94 | 3:fc9133faec7a | 73 | _objects.Objects_undraw(lcd); |
Nathanj94 | 3:fc9133faec7a | 74 | _objects.Objects_init(_objects_speed); |
Nathanj94 | 3:fc9133faec7a | 75 | } |
Nathanj94 | 3:fc9133faec7a | 76 | } |
Nathanj94 | 3:fc9133faec7a | 77 | |
Nathanj94 | 3:fc9133faec7a | 78 | void Catch_Model::print_score(N5110 &lcd) |
Nathanj94 | 3:fc9133faec7a | 79 | { |
Nathanj94 | 3:fc9133faec7a | 80 | char buffer[14]; |
Nathanj94 | 2:8410e09b77aa | 81 | |
Nathanj94 | 3:fc9133faec7a | 82 | int score = _basket.get_Basket_score(); |
Nathanj94 | 3:fc9133faec7a | 83 | int print_score = sprintf(buffer, "SCORE: %2d", score); |
Nathanj94 | 3:fc9133faec7a | 84 | if (print_score <= 14) { |
Nathanj94 | 3:fc9133faec7a | 85 | lcd.printString(buffer,0,0); |
Nathanj94 | 3:fc9133faec7a | 86 | lcd.refresh(); |
Nathanj94 | 3:fc9133faec7a | 87 | } |
Nathanj94 | 3:fc9133faec7a | 88 | } |
Nathanj94 | 3:fc9133faec7a | 89 |