Helios Lyons
/
ELEC2645_Project_mc18hal
Helios Lyons 201239214
Canon/Canon.cpp@5:72f59786b695, 2020-04-14 (annotated)
- Committer:
- helioslyons
- Date:
- Tue Apr 14 13:22:35 2020 +0000
- Revision:
- 5:72f59786b695
- Parent:
- 4:c644522ff9d9
Import to Mbed Studio
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
helioslyons | 2:ef7f9892ba4f | 1 | #include "Canon.h" |
helioslyons | 4:c644522ff9d9 | 2 | #include "Bitmap.h" |
helioslyons | 4:c644522ff9d9 | 3 | #include <vector> |
helioslyons | 4:c644522ff9d9 | 4 | |
helioslyons | 2:ef7f9892ba4f | 5 | Canon::Canon() |
helioslyons | 2:ef7f9892ba4f | 6 | { |
helioslyons | 2:ef7f9892ba4f | 7 | |
helioslyons | 2:ef7f9892ba4f | 8 | } |
helioslyons | 2:ef7f9892ba4f | 9 | |
helioslyons | 2:ef7f9892ba4f | 10 | Canon::~Canon() |
helioslyons | 2:ef7f9892ba4f | 11 | { |
helioslyons | 2:ef7f9892ba4f | 12 | |
helioslyons | 2:ef7f9892ba4f | 13 | } |
helioslyons | 2:ef7f9892ba4f | 14 | |
helioslyons | 4:c644522ff9d9 | 15 | void Canon::init(int y,int height,int width) |
helioslyons | 2:ef7f9892ba4f | 16 | { |
helioslyons | 2:ef7f9892ba4f | 17 | _y = y; // y value on screen is fixed |
helioslyons | 4:c644522ff9d9 | 18 | _x = WIDTH/2 - width/2; // x depends on width of screen and width of canon |
helioslyons | 2:ef7f9892ba4f | 19 | _height = height; |
helioslyons | 2:ef7f9892ba4f | 20 | _width = width; |
helioslyons | 2:ef7f9892ba4f | 21 | _speed = 1; // init speed, add in options – accessible? |
helioslyons | 2:ef7f9892ba4f | 22 | _score = 0; // start all at 0 |
helioslyons | 2:ef7f9892ba4f | 23 | _inv1_kill = 0; |
helioslyons | 2:ef7f9892ba4f | 24 | _inv2_kill = 0; |
helioslyons | 2:ef7f9892ba4f | 25 | _inv3_kill = 0; |
helioslyons | 2:ef7f9892ba4f | 26 | _total_kill = 0; |
helioslyons | 2:ef7f9892ba4f | 27 | _life = 3; |
helioslyons | 2:ef7f9892ba4f | 28 | } |
helioslyons | 2:ef7f9892ba4f | 29 | |
helioslyons | 2:ef7f9892ba4f | 30 | void Canon::draw(N5110 &lcd) |
helioslyons | 2:ef7f9892ba4f | 31 | { |
helioslyons | 2:ef7f9892ba4f | 32 | // draw canon in screen buffer – need to replace with a different shape |
helioslyons | 4:c644522ff9d9 | 33 | //lcd.drawRect(_x,_y,_width,_height,FILL_BLACK); |
helioslyons | 4:c644522ff9d9 | 34 | static int sprite_data[] = { |
helioslyons | 4:c644522ff9d9 | 35 | 0,0,0,1,1,0,0,0, |
helioslyons | 4:c644522ff9d9 | 36 | 0,0,0,1,1,0,0,0, |
helioslyons | 4:c644522ff9d9 | 37 | 1,1,1,1,1,1,1,1, |
helioslyons | 4:c644522ff9d9 | 38 | 1,1,1,1,1,1,1,1 |
helioslyons | 4:c644522ff9d9 | 39 | }; |
helioslyons | 4:c644522ff9d9 | 40 | Bitmap canon_sprite(sprite_data, 8, 4); |
helioslyons | 4:c644522ff9d9 | 41 | canon_sprite.render(lcd, _x,_y); |
helioslyons | 2:ef7f9892ba4f | 42 | } |
helioslyons | 2:ef7f9892ba4f | 43 | |
helioslyons | 2:ef7f9892ba4f | 44 | void Canon::update(Direction d,float mag) |
helioslyons | 2:ef7f9892ba4f | 45 | { |
helioslyons | 2:ef7f9892ba4f | 46 | _speed = int(mag*10.0f); // scale is arbitrary, could be changed in future – add in options menu |
helioslyons | 2:ef7f9892ba4f | 47 | |
helioslyons | 2:ef7f9892ba4f | 48 | // update x value based on direction |
helioslyons | 2:ef7f9892ba4f | 49 | // North is decrement as origin is at the top-left so decreasing moves up |
helioslyons | 2:ef7f9892ba4f | 50 | if (d == W) { |
helioslyons | 2:ef7f9892ba4f | 51 | _x-=_speed; |
helioslyons | 2:ef7f9892ba4f | 52 | } else if (d == E) { |
helioslyons | 2:ef7f9892ba4f | 53 | _x+=_speed; |
helioslyons | 2:ef7f9892ba4f | 54 | } |
helioslyons | 2:ef7f9892ba4f | 55 | |
helioslyons | 2:ef7f9892ba4f | 56 | // check the x origin to set boundaries |
helioslyons | 2:ef7f9892ba4f | 57 | if (_x < 1) { |
helioslyons | 2:ef7f9892ba4f | 58 | _x = 1; |
helioslyons | 2:ef7f9892ba4f | 59 | } |
helioslyons | 2:ef7f9892ba4f | 60 | if (_x > WIDTH - _width - 1) { |
helioslyons | 2:ef7f9892ba4f | 61 | _x = WIDTH - _width - 1; |
helioslyons | 2:ef7f9892ba4f | 62 | } |
helioslyons | 2:ef7f9892ba4f | 63 | } |
helioslyons | 2:ef7f9892ba4f | 64 | |
helioslyons | 4:c644522ff9d9 | 65 | int Canon::add_inv1_kill(int n) |
helioslyons | 2:ef7f9892ba4f | 66 | { |
helioslyons | 4:c644522ff9d9 | 67 | _inv1_kill = _inv1_kill + n; |
helioslyons | 4:c644522ff9d9 | 68 | return _inv1_kill; |
helioslyons | 2:ef7f9892ba4f | 69 | } |
helioslyons | 2:ef7f9892ba4f | 70 | |
helioslyons | 4:c644522ff9d9 | 71 | int Canon::add_inv2_kill(int n) |
helioslyons | 2:ef7f9892ba4f | 72 | { |
helioslyons | 4:c644522ff9d9 | 73 | _inv2_kill = _inv2_kill + n; |
helioslyons | 4:c644522ff9d9 | 74 | return _inv2_kill; |
helioslyons | 2:ef7f9892ba4f | 75 | } |
helioslyons | 2:ef7f9892ba4f | 76 | |
helioslyons | 4:c644522ff9d9 | 77 | int Canon::add_inv3_kill(int n) |
helioslyons | 2:ef7f9892ba4f | 78 | { |
helioslyons | 4:c644522ff9d9 | 79 | _inv3_kill = _inv3_kill + n; |
helioslyons | 4:c644522ff9d9 | 80 | return _inv3_kill; |
helioslyons | 2:ef7f9892ba4f | 81 | } |
helioslyons | 2:ef7f9892ba4f | 82 | |
helioslyons | 4:c644522ff9d9 | 83 | int Canon::add_boss_kill() |
helioslyons | 2:ef7f9892ba4f | 84 | { |
helioslyons | 2:ef7f9892ba4f | 85 | _boss_kill++; |
helioslyons | 4:c644522ff9d9 | 86 | return _boss_kill; |
helioslyons | 2:ef7f9892ba4f | 87 | } |
helioslyons | 2:ef7f9892ba4f | 88 | |
helioslyons | 2:ef7f9892ba4f | 89 | int Canon::get_total_kill() |
helioslyons | 2:ef7f9892ba4f | 90 | { |
helioslyons | 2:ef7f9892ba4f | 91 | _total_kill = _inv1_kill + _inv2_kill + _inv3_kill + _boss_kill; |
helioslyons | 2:ef7f9892ba4f | 92 | return _total_kill; |
helioslyons | 4:c644522ff9d9 | 93 | } |
helioslyons | 2:ef7f9892ba4f | 94 | |
helioslyons | 2:ef7f9892ba4f | 95 | int Canon::get_score() |
helioslyons | 2:ef7f9892ba4f | 96 | { |
helioslyons | 2:ef7f9892ba4f | 97 | _score = (_inv1_kill * 10) + (_inv2_kill * 20) + (_inv1_kill * 30) + (_boss_kill * 100); |
helioslyons | 2:ef7f9892ba4f | 98 | return _score; |
helioslyons | 2:ef7f9892ba4f | 99 | } |
helioslyons | 2:ef7f9892ba4f | 100 | |
helioslyons | 2:ef7f9892ba4f | 101 | Vector2D Canon::get_pos() { |
helioslyons | 2:ef7f9892ba4f | 102 | Vector2D p = {_x,_y}; |
helioslyons | 3:13fd052f79c6 | 103 | return p; |
helioslyons | 2:ef7f9892ba4f | 104 | } |
helioslyons | 2:ef7f9892ba4f | 105 | |
helioslyons | 2:ef7f9892ba4f | 106 | int Canon::get_life() |
helioslyons | 2:ef7f9892ba4f | 107 | { |
helioslyons | 2:ef7f9892ba4f | 108 | return _life; |
helioslyons | 2:ef7f9892ba4f | 109 | } |
helioslyons | 2:ef7f9892ba4f | 110 | |
helioslyons | 2:ef7f9892ba4f | 111 | int Canon::remove_life() |
helioslyons | 2:ef7f9892ba4f | 112 | { |
helioslyons | 2:ef7f9892ba4f | 113 | _life--; |
helioslyons | 4:c644522ff9d9 | 114 | return _life; |
helioslyons | 2:ef7f9892ba4f | 115 | } |
helioslyons | 2:ef7f9892ba4f | 116 | |
helioslyons | 2:ef7f9892ba4f | 117 | int Canon::reset_life() |
helioslyons | 2:ef7f9892ba4f | 118 | { |
helioslyons | 2:ef7f9892ba4f | 119 | _life = 3; |
helioslyons | 4:c644522ff9d9 | 120 | return _life; |
helioslyons | 2:ef7f9892ba4f | 121 | } |