ELEC2645 (2018/19) / Mbed 2 deprecated el17zl

Dependencies:   mbed

Fork of el17zl by Zhenwen Liao

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?

UserRevisionLine numberNew 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 }