Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Fork of el17zl by
PushingEngine/PushingEngine.cpp@4:750d3f9b54de, 2019-04-09 (annotated)
- Committer:
- franklzw
- Date:
- Tue Apr 09 08:31:27 2019 +0000
- Revision:
- 4:750d3f9b54de
- Parent:
- 3:9fa31396d89d
- Child:
- 5:b50ce6160013
fourth commit;
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| franklzw | 2:9f0d9516a6cd | 1 | #include "PushingEngine.h" |
| franklzw | 2:9f0d9516a6cd | 2 | |
| franklzw | 2:9f0d9516a6cd | 3 | PushingEngine::PushingEngine() |
| franklzw | 2:9f0d9516a6cd | 4 | { |
| franklzw | 2:9f0d9516a6cd | 5 | |
| franklzw | 2:9f0d9516a6cd | 6 | } |
| franklzw | 2:9f0d9516a6cd | 7 | |
| franklzw | 2:9f0d9516a6cd | 8 | PushingEngine::~PushingEngine() |
| franklzw | 2:9f0d9516a6cd | 9 | { |
| franklzw | 2:9f0d9516a6cd | 10 | |
| franklzw | 2:9f0d9516a6cd | 11 | } |
| franklzw | 2:9f0d9516a6cd | 12 | |
| franklzw | 2:9f0d9516a6cd | 13 | void PushingEngine::init(int box1_x,int box1_y,int box2_x,int box2_y, |
| franklzw | 4:750d3f9b54de | 14 | int ppl_x,int ppl_y) |
| franklzw | 2:9f0d9516a6cd | 15 | { |
| franklzw | 2:9f0d9516a6cd | 16 | // boxes position on screen |
| franklzw | 2:9f0d9516a6cd | 17 | _b1x = box1_x; |
| franklzw | 2:9f0d9516a6cd | 18 | _b2x = box2_x; |
| franklzw | 2:9f0d9516a6cd | 19 | _b1y = box1_y; |
| franklzw | 2:9f0d9516a6cd | 20 | _b2y = box2_y; |
| franklzw | 2:9f0d9516a6cd | 21 | |
| franklzw | 2:9f0d9516a6cd | 22 | // ppl position on screen |
| franklzw | 2:9f0d9516a6cd | 23 | _pplx = ppl_x; |
| franklzw | 2:9f0d9516a6cd | 24 | _pply = ppl_y; |
| franklzw | 2:9f0d9516a6cd | 25 | |
| franklzw | 3:9fa31396d89d | 26 | // inital boxes, crosses and ppl |
| franklzw | 2:9f0d9516a6cd | 27 | _b1.init(_b1x,_b1y); |
| franklzw | 2:9f0d9516a6cd | 28 | _b2.init(_b2x,_b2y); |
| franklzw | 2:9f0d9516a6cd | 29 | _ppl.init(_pplx,_pply); |
| franklzw | 4:750d3f9b54de | 30 | |
| franklzw | 2:9f0d9516a6cd | 31 | } |
| franklzw | 2:9f0d9516a6cd | 32 | |
| franklzw | 2:9f0d9516a6cd | 33 | void PushingEngine::read_input(Gamepad &pad) |
| franklzw | 2:9f0d9516a6cd | 34 | { |
| franklzw | 4:750d3f9b54de | 35 | if (pad.check_event(Gamepad::START_PRESSED)) |
| franklzw | 4:750d3f9b54de | 36 | {_bstart = 1;} |
| franklzw | 4:750d3f9b54de | 37 | else {_bstart = 0;} |
| franklzw | 4:750d3f9b54de | 38 | if (pad.check_event(Gamepad::BACK_PRESSED)) |
| franklzw | 4:750d3f9b54de | 39 | {_bback = 1; } |
| franklzw | 4:750d3f9b54de | 40 | else {_bback = 0;} |
| franklzw | 4:750d3f9b54de | 41 | if (pad.check_event(Gamepad::A_PRESSED)) |
| franklzw | 4:750d3f9b54de | 42 | {_ba = 1; } |
| franklzw | 4:750d3f9b54de | 43 | else {_ba = 0;} |
| franklzw | 4:750d3f9b54de | 44 | if (pad.check_event(Gamepad::B_PRESSED)) |
| franklzw | 4:750d3f9b54de | 45 | {_bb = 1; } |
| franklzw | 4:750d3f9b54de | 46 | else {_bb = 0;} |
| franklzw | 4:750d3f9b54de | 47 | if (pad.check_event(Gamepad::X_PRESSED)) |
| franklzw | 4:750d3f9b54de | 48 | {_bx = 1; } |
| franklzw | 4:750d3f9b54de | 49 | else {_bx = 0;} |
| franklzw | 4:750d3f9b54de | 50 | if (pad.check_event(Gamepad::Y_PRESSED)) |
| franklzw | 4:750d3f9b54de | 51 | {_by = 1; } |
| franklzw | 4:750d3f9b54de | 52 | else {_by = 0;} |
| franklzw | 4:750d3f9b54de | 53 | if (pad.check_event(Gamepad::JOY_PRESSED)) |
| franklzw | 4:750d3f9b54de | 54 | {_bjoy = 1; } |
| franklzw | 4:750d3f9b54de | 55 | else {_bjoy = 0;} |
| franklzw | 2:9f0d9516a6cd | 56 | } |
| franklzw | 2:9f0d9516a6cd | 57 | |
| franklzw | 4:750d3f9b54de | 58 | void PushingEngine::check_ppl_box1_touching(Gamepad &pad) |
| franklzw | 2:9f0d9516a6cd | 59 | { |
| franklzw | 3:9fa31396d89d | 60 | Vector2D b1_pos = _b1.get_pos(); |
| franklzw | 3:9fa31396d89d | 61 | Vector2D ppl_pos = _ppl.get_pos(); |
| franklzw | 2:9f0d9516a6cd | 62 | |
| franklzw | 4:750d3f9b54de | 63 | int _s = 0; |
| franklzw | 4:750d3f9b54de | 64 | |
| franklzw | 3:9fa31396d89d | 65 | if (b1_pos.y == ppl_pos.y) |
| franklzw | 3:9fa31396d89d | 66 | { |
| franklzw | 3:9fa31396d89d | 67 | if((ppl_pos.x-b1_pos.x) =8) |
| franklzw | 3:9fa31396d89d | 68 | { |
| franklzw | 3:9fa31396d89d | 69 | _s = 1; // can push to left |
| franklzw | 3:9fa31396d89d | 70 | } else if((b1_pos.x-ppl_pos.x)=8) |
| franklzw | 3:9fa31396d89d | 71 | { |
| franklzw | 3:9fa31396d89d | 72 | _s = 2; // can push to right |
| franklzw | 3:9fa31396d89d | 73 | } |
| franklzw | 2:9f0d9516a6cd | 74 | } |
| franklzw | 2:9f0d9516a6cd | 75 | |
| franklzw | 3:9fa31396d89d | 76 | if (b1_pos.x == ppl_pos.x) |
| franklzw | 3:9fa31396d89d | 77 | { |
| franklzw | 3:9fa31396d89d | 78 | if((ppl_pos.y-b1_pos.y) =8) |
| franklzw | 3:9fa31396d89d | 79 | { |
| franklzw | 3:9fa31396d89d | 80 | _s = 4; // can push up |
| franklzw | 3:9fa31396d89d | 81 | } else if((b1_pos.y-ppl_pos.y)=8) |
| franklzw | 3:9fa31396d89d | 82 | { |
| franklzw | 3:9fa31396d89d | 83 | _s = 3; // can push down |
| franklzw | 3:9fa31396d89d | 84 | } |
| franklzw | 2:9f0d9516a6cd | 85 | } |
| franklzw | 2:9f0d9516a6cd | 86 | } |
| franklzw | 2:9f0d9516a6cd | 87 | |
| franklzw | 4:750d3f9b54de | 88 | void PushingEngine::check_ppl_box2_touching(Gamepad &pad) // |
| franklzw | 2:9f0d9516a6cd | 89 | { |
| franklzw | 3:9fa31396d89d | 90 | Vector2D b2_pos = _b2.get_pos(); |
| franklzw | 3:9fa31396d89d | 91 | Vector2D ppl_pos = _ppl.get_pos(); |
| franklzw | 4:750d3f9b54de | 92 | int _r = 0; |
| franklzw | 3:9fa31396d89d | 93 | |
| franklzw | 3:9fa31396d89d | 94 | if (b2_pos.y == ppl_pos.y) |
| franklzw | 3:9fa31396d89d | 95 | { |
| franklzw | 3:9fa31396d89d | 96 | if((ppl_pos.x-b2_pos.x) =8) |
| franklzw | 3:9fa31396d89d | 97 | { |
| franklzw | 3:9fa31396d89d | 98 | _r = 1; // can push to left |
| franklzw | 3:9fa31396d89d | 99 | } else if((b2_pos.x-ppl_pos.x)=8) |
| franklzw | 3:9fa31396d89d | 100 | { |
| franklzw | 3:9fa31396d89d | 101 | _r = 2; // can push to right |
| franklzw | 3:9fa31396d89d | 102 | } |
| franklzw | 3:9fa31396d89d | 103 | } |
| franklzw | 3:9fa31396d89d | 104 | |
| franklzw | 3:9fa31396d89d | 105 | if (b2_pos.x == ppl_pos.x) |
| franklzw | 3:9fa31396d89d | 106 | { |
| franklzw | 3:9fa31396d89d | 107 | if((ppl_pos.y-b2_pos.y) =8) |
| franklzw | 3:9fa31396d89d | 108 | { |
| franklzw | 3:9fa31396d89d | 109 | _r = 4; // can push up |
| franklzw | 3:9fa31396d89d | 110 | } else if((b2_pos.y-ppl_pos.y)=8) |
| franklzw | 3:9fa31396d89d | 111 | { |
| franklzw | 3:9fa31396d89d | 112 | _r = 3; // can push down |
| franklzw | 3:9fa31396d89d | 113 | } |
| franklzw | 3:9fa31396d89d | 114 | } |
| franklzw | 3:9fa31396d89d | 115 | } |
| franklzw | 3:9fa31396d89d | 116 | |
| franklzw | 4:750d3f9b54de | 117 | |
| franklzw | 4:750d3f9b54de | 118 | void PushingEngine::draw(N5110 &lcd) |
| franklzw | 3:9fa31396d89d | 119 | { |
| franklzw | 4:750d3f9b54de | 120 | // draw the elements in the LCD buffer |
| franklzw | 4:750d3f9b54de | 121 | // pitch |
| franklzw | 4:750d3f9b54de | 122 | lcd.drawLine(0,2,83,2,1); |
| franklzw | 4:750d3f9b54de | 123 | lcd.drawLine(0,3,0,45,1); |
| franklzw | 4:750d3f9b54de | 124 | lcd.drawLine(1,45,83,45,1); |
| franklzw | 4:750d3f9b54de | 125 | lcd.drawLine(83,3,83,44,1); |
| franklzw | 4:750d3f9b54de | 126 | lcd.drawSprite(34,28,8,8,(int *)barrier); |
| franklzw | 4:750d3f9b54de | 127 | // boxes |
| franklzw | 4:750d3f9b54de | 128 | _b1.draw(lcd); |
| franklzw | 4:750d3f9b54de | 129 | _b2.draw(lcd); |
| franklzw | 4:750d3f9b54de | 130 | // ppl |
| franklzw | 4:750d3f9b54de | 131 | _ppl.draw(lcd); |
| franklzw | 3:9fa31396d89d | 132 | } |
| franklzw | 3:9fa31396d89d | 133 | |
| franklzw | 4:750d3f9b54de | 134 | void PushingEngine::update(Gamepad &pad) // |
| franklzw | 3:9fa31396d89d | 135 | { |
| franklzw | 4:750d3f9b54de | 136 | //check_cross_box_matching(pad); |
| franklzw | 3:9fa31396d89d | 137 | check_ppl_box1_touching(pad); |
| franklzw | 4:750d3f9b54de | 138 | check_ppl_box2_touching(pad); |
| franklzw | 3:9fa31396d89d | 139 | |
| franklzw | 4:750d3f9b54de | 140 | _b1.update(_s,_ba,_bb,_bx,_by); |
| franklzw | 4:750d3f9b54de | 141 | _b2.update(_r,_ba,_bb,_bx,_by); |
| franklzw | 4:750d3f9b54de | 142 | _ppl.update(_ba,_bb,_bx,_by); |
| franklzw | 3:9fa31396d89d | 143 | |
| franklzw | 3:9fa31396d89d | 144 | } |
