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@5:b50ce6160013, 2019-04-09 (annotated)
- Committer:
- franklzw
- Date:
- Tue Apr 09 12:46:02 2019 +0000
- Revision:
- 5:b50ce6160013
- Parent:
- 4:750d3f9b54de
- Child:
- 6:6b083e22cb53
ppl can push the boxes with four bottom (not going off the wall) ; but ppl with cover the boxes when facing the wall;
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 | 5:b50ce6160013 | 35 | //if (pad.check_event(Gamepad::START_PRESSED)) |
| franklzw | 5:b50ce6160013 | 36 | //{_bstart = 1;} |
| franklzw | 5:b50ce6160013 | 37 | //else {_bstart = 0;} |
| franklzw | 5:b50ce6160013 | 38 | //if (pad.check_event(Gamepad::BACK_PRESSED)) |
| franklzw | 5:b50ce6160013 | 39 | //{_bback = 1; } |
| franklzw | 5:b50ce6160013 | 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 | 5:b50ce6160013 | 53 | //if (pad.check_event(Gamepad::JOY_PRESSED)) |
| franklzw | 5:b50ce6160013 | 54 | //{_bjoy = 1; } |
| franklzw | 5:b50ce6160013 | 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 | 5:b50ce6160013 | 62 | |
| franklzw | 3:9fa31396d89d | 63 | if (b1_pos.y == ppl_pos.y) |
| franklzw | 3:9fa31396d89d | 64 | { |
| franklzw | 5:b50ce6160013 | 65 | if((ppl_pos.x-b1_pos.x) ==8) |
| franklzw | 3:9fa31396d89d | 66 | { |
| franklzw | 3:9fa31396d89d | 67 | _s = 1; // can push to left |
| franklzw | 5:b50ce6160013 | 68 | } else if((b1_pos.x-ppl_pos.x)==8) |
| franklzw | 3:9fa31396d89d | 69 | { |
| franklzw | 3:9fa31396d89d | 70 | _s = 2; // can push to right |
| franklzw | 5:b50ce6160013 | 71 | } |
| franklzw | 5:b50ce6160013 | 72 | } else if (b1_pos.x == ppl_pos.x) |
| franklzw | 3:9fa31396d89d | 73 | { |
| franklzw | 5:b50ce6160013 | 74 | if((ppl_pos.y-b1_pos.y) ==8) |
| franklzw | 3:9fa31396d89d | 75 | { |
| franklzw | 3:9fa31396d89d | 76 | _s = 4; // can push up |
| franklzw | 5:b50ce6160013 | 77 | } else if((b1_pos.y-ppl_pos.y)==8) |
| franklzw | 3:9fa31396d89d | 78 | { |
| franklzw | 3:9fa31396d89d | 79 | _s = 3; // can push down |
| franklzw | 5:b50ce6160013 | 80 | } |
| franklzw | 5:b50ce6160013 | 81 | } else {_s = 0;} |
| franklzw | 2:9f0d9516a6cd | 82 | } |
| franklzw | 2:9f0d9516a6cd | 83 | |
| franklzw | 4:750d3f9b54de | 84 | void PushingEngine::check_ppl_box2_touching(Gamepad &pad) // |
| franklzw | 2:9f0d9516a6cd | 85 | { |
| franklzw | 3:9fa31396d89d | 86 | Vector2D b2_pos = _b2.get_pos(); |
| franklzw | 3:9fa31396d89d | 87 | Vector2D ppl_pos = _ppl.get_pos(); |
| franklzw | 5:b50ce6160013 | 88 | |
| franklzw | 3:9fa31396d89d | 89 | if (b2_pos.y == ppl_pos.y) |
| franklzw | 3:9fa31396d89d | 90 | { |
| franklzw | 5:b50ce6160013 | 91 | if((ppl_pos.x-b2_pos.x) ==8) |
| franklzw | 3:9fa31396d89d | 92 | { |
| franklzw | 3:9fa31396d89d | 93 | _r = 1; // can push to left |
| franklzw | 5:b50ce6160013 | 94 | } else if((b2_pos.x-ppl_pos.x)==8) |
| franklzw | 3:9fa31396d89d | 95 | { |
| franklzw | 3:9fa31396d89d | 96 | _r = 2; // can push to right |
| franklzw | 5:b50ce6160013 | 97 | } |
| franklzw | 5:b50ce6160013 | 98 | } else if (b2_pos.x == ppl_pos.x) |
| franklzw | 3:9fa31396d89d | 99 | { |
| franklzw | 5:b50ce6160013 | 100 | if((ppl_pos.y-b2_pos.y) ==8) |
| franklzw | 3:9fa31396d89d | 101 | { |
| franklzw | 3:9fa31396d89d | 102 | _r = 4; // can push up |
| franklzw | 5:b50ce6160013 | 103 | } else if((b2_pos.y-ppl_pos.y)==8) |
| franklzw | 3:9fa31396d89d | 104 | { |
| franklzw | 3:9fa31396d89d | 105 | _r = 3; // can push down |
| franklzw | 5:b50ce6160013 | 106 | } |
| franklzw | 5:b50ce6160013 | 107 | } else {_r = 0;} |
| franklzw | 3:9fa31396d89d | 108 | } |
| franklzw | 3:9fa31396d89d | 109 | |
| franklzw | 4:750d3f9b54de | 110 | |
| franklzw | 4:750d3f9b54de | 111 | void PushingEngine::draw(N5110 &lcd) |
| franklzw | 3:9fa31396d89d | 112 | { |
| franklzw | 4:750d3f9b54de | 113 | // draw the elements in the LCD buffer |
| franklzw | 4:750d3f9b54de | 114 | // pitch |
| franklzw | 4:750d3f9b54de | 115 | lcd.drawLine(0,2,83,2,1); |
| franklzw | 4:750d3f9b54de | 116 | lcd.drawLine(0,3,0,45,1); |
| franklzw | 4:750d3f9b54de | 117 | lcd.drawLine(1,45,83,45,1); |
| franklzw | 4:750d3f9b54de | 118 | lcd.drawLine(83,3,83,44,1); |
| franklzw | 5:b50ce6160013 | 119 | //lcd.drawSprite(34,28,8,8,(int *)barrier); |
| franklzw | 4:750d3f9b54de | 120 | // boxes |
| franklzw | 4:750d3f9b54de | 121 | _b1.draw(lcd); |
| franklzw | 4:750d3f9b54de | 122 | _b2.draw(lcd); |
| franklzw | 4:750d3f9b54de | 123 | // ppl |
| franklzw | 4:750d3f9b54de | 124 | _ppl.draw(lcd); |
| franklzw | 3:9fa31396d89d | 125 | } |
| franklzw | 3:9fa31396d89d | 126 | |
| franklzw | 4:750d3f9b54de | 127 | void PushingEngine::update(Gamepad &pad) // |
| franklzw | 3:9fa31396d89d | 128 | { |
| franklzw | 4:750d3f9b54de | 129 | //check_cross_box_matching(pad); |
| franklzw | 3:9fa31396d89d | 130 | check_ppl_box1_touching(pad); |
| franklzw | 4:750d3f9b54de | 131 | check_ppl_box2_touching(pad); |
| franklzw | 3:9fa31396d89d | 132 | |
| franklzw | 5:b50ce6160013 | 133 | _b1.update(_s,_bb,_ba,_bx,_by); |
| franklzw | 5:b50ce6160013 | 134 | _b2.update(_r,_bb,_ba,_bx,_by); |
| franklzw | 5:b50ce6160013 | 135 | _ppl.update(_bb,_ba,_bx,_by); |
| franklzw | 3:9fa31396d89d | 136 | |
| franklzw | 3:9fa31396d89d | 137 | } |
