ELEC2645 (2018/19) / Mbed 2 deprecated el17zl

Dependencies:   mbed

Fork of el17zl by Zhenwen Liao

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?

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