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@4:84e29254b988, 2017-03-23 (annotated)
- Committer:
- Nathanj94
- Date:
- Thu Mar 23 15:26:39 2017 +0000
- Revision:
- 4:84e29254b988
- Parent:
- 3:fc9133faec7a
- Child:
- 5:7db3e43e5aca
Created HUD element using four functions: get_score, print_score, get_lives and print_lives; moved these functions from check_catch to draw and now they stay solid on screen and update accordingly
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 | 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 | 4:84e29254b988 | 60 | basket.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 | 3:fc9133faec7a | 72 | if (o_y_pos > b_y_pos) { |
Nathanj94 | 4:84e29254b988 | 73 | objects.undraw(lcd); |
Nathanj94 | 4:84e29254b988 | 74 | objects.init(_objects_speed); |
Nathanj94 | 4:84e29254b988 | 75 | _lives--; |
Nathanj94 | 3:fc9133faec7a | 76 | } |
Nathanj94 | 3:fc9133faec7a | 77 | } |
Nathanj94 | 3:fc9133faec7a | 78 | |
Nathanj94 | 4:84e29254b988 | 79 | int Catch_Model::get_lives() |
Nathanj94 | 4:84e29254b988 | 80 | { |
Nathanj94 | 4:84e29254b988 | 81 | return _lives; |
Nathanj94 | 4:84e29254b988 | 82 | } |
Nathanj94 | 4:84e29254b988 | 83 | |
Nathanj94 | 4:84e29254b988 | 84 | void Catch_Model::print_lives(N5110 &lcd) |
Nathanj94 | 4:84e29254b988 | 85 | { |
Nathanj94 | 4:84e29254b988 | 86 | char buffer[14]; |
Nathanj94 | 4:84e29254b988 | 87 | int lives = get_lives(); |
Nathanj94 | 4:84e29254b988 | 88 | |
Nathanj94 | 4:84e29254b988 | 89 | int print_lives = sprintf(buffer, "LIVES:%d", lives); |
Nathanj94 | 4:84e29254b988 | 90 | if (print_lives <= 14) { |
Nathanj94 | 4:84e29254b988 | 91 | lcd.printString(buffer,0,0); |
Nathanj94 | 4:84e29254b988 | 92 | lcd.refresh(); |
Nathanj94 | 4:84e29254b988 | 93 | } |
Nathanj94 | 4:84e29254b988 | 94 | } |
Nathanj94 | 4:84e29254b988 | 95 | |
Nathanj94 | 3:fc9133faec7a | 96 | void Catch_Model::print_score(N5110 &lcd) |
Nathanj94 | 3:fc9133faec7a | 97 | { |
Nathanj94 | 3:fc9133faec7a | 98 | char buffer[14]; |
Nathanj94 | 4:84e29254b988 | 99 | int score = basket.get_score(); |
Nathanj94 | 2:8410e09b77aa | 100 | |
Nathanj94 | 4:84e29254b988 | 101 | int print_score; |
Nathanj94 | 4:84e29254b988 | 102 | |
Nathanj94 | 4:84e29254b988 | 103 | if ((score == 0)||(score <= 9)) { |
Nathanj94 | 4:84e29254b988 | 104 | print_score = sprintf(buffer, "000%d", score); |
Nathanj94 | 4:84e29254b988 | 105 | } else if (score <= 99) { |
Nathanj94 | 4:84e29254b988 | 106 | print_score = sprintf(buffer, "00%2d", score); |
Nathanj94 | 4:84e29254b988 | 107 | } else if (score <= 999 ) { |
Nathanj94 | 4:84e29254b988 | 108 | print_score = sprintf(buffer, "0%3d", score); |
Nathanj94 | 4:84e29254b988 | 109 | } else { |
Nathanj94 | 4:84e29254b988 | 110 | print_score = sprintf(buffer, "%4d", score); |
Nathanj94 | 4:84e29254b988 | 111 | } |
Nathanj94 | 4:84e29254b988 | 112 | |
Nathanj94 | 3:fc9133faec7a | 113 | if (print_score <= 14) { |
Nathanj94 | 4:84e29254b988 | 114 | lcd.printString(buffer,59,0); |
Nathanj94 | 3:fc9133faec7a | 115 | lcd.refresh(); |
Nathanj94 | 3:fc9133faec7a | 116 | } |
Nathanj94 | 3:fc9133faec7a | 117 | } |
Nathanj94 | 3:fc9133faec7a | 118 |