ELEC2645 (2018/19) / Mbed 2 deprecated el17zl

Dependencies:   mbed

Fork of el17zl by Zhenwen Liao

Committer:
franklzw
Date:
Thu Apr 11 14:14:28 2019 +0000
Revision:
7:6f8aeadc4370
Parent:
6:6b083e22cb53
Child:
8:83891ea9a5d9
barrier-box-ppl works! no off-screen, no cover of each other.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
franklzw 3:9fa31396d89d 1 #include "Ppl.h"
franklzw 3:9fa31396d89d 2
franklzw 3:9fa31396d89d 3 const int ppl[8][8]= {
franklzw 3:9fa31396d89d 4 {0,0,0,0,1,1,1,0},
franklzw 3:9fa31396d89d 5 {0,0,0,0,1,0,1,0},
franklzw 3:9fa31396d89d 6 {0,0,0,0,1,1,1,0},
franklzw 3:9fa31396d89d 7 {1,0,0,0,0,1,0,0},
franklzw 3:9fa31396d89d 8 {0,1,1,0,0,1,0,0},
franklzw 3:9fa31396d89d 9 {0,0,0,1,1,1,0,0},
franklzw 3:9fa31396d89d 10 {0,0,0,0,0,1,0,0},
franklzw 3:9fa31396d89d 11 {0,0,0,1,1,0,1,1},
franklzw 3:9fa31396d89d 12
franklzw 3:9fa31396d89d 13 };
franklzw 3:9fa31396d89d 14
franklzw 3:9fa31396d89d 15 Ppl::Ppl()
franklzw 3:9fa31396d89d 16 {
franklzw 3:9fa31396d89d 17
franklzw 3:9fa31396d89d 18 }
franklzw 3:9fa31396d89d 19
franklzw 3:9fa31396d89d 20 Ppl::~Ppl()
franklzw 3:9fa31396d89d 21 {
franklzw 3:9fa31396d89d 22
franklzw 3:9fa31396d89d 23 }
franklzw 3:9fa31396d89d 24
franklzw 3:9fa31396d89d 25 void Ppl::init(int x0, int y0)
franklzw 3:9fa31396d89d 26 {
franklzw 3:9fa31396d89d 27 _x = x0;
franklzw 3:9fa31396d89d 28 _y = y0;
franklzw 3:9fa31396d89d 29
franklzw 3:9fa31396d89d 30 }
franklzw 3:9fa31396d89d 31
franklzw 3:9fa31396d89d 32 void Ppl::draw(N5110 &lcd)
franklzw 3:9fa31396d89d 33 {
franklzw 3:9fa31396d89d 34 lcd.drawSprite(_x,_y,8,8,(int *)ppl);
franklzw 3:9fa31396d89d 35 }
franklzw 3:9fa31396d89d 36
franklzw 6:6b083e22cb53 37 void Ppl::update(int bb,int ba,int bx,int by,int temp,
franklzw 6:6b083e22cb53 38 int barrier_x,int barrier_y)
franklzw 6:6b083e22cb53 39 {
franklzw 6:6b083e22cb53 40 int temp_x = _x;
franklzw 6:6b083e22cb53 41 int temp_y = _y;
franklzw 6:6b083e22cb53 42
franklzw 6:6b083e22cb53 43 move_ppl(bb,ba,bx,by);
franklzw 7:6f8aeadc4370 44
franklzw 6:6b083e22cb53 45 if (hold_beside_barrier(barrier_x,barrier_y)) {
franklzw 6:6b083e22cb53 46 _x = temp_x;
franklzw 6:6b083e22cb53 47 _y = temp_y;
franklzw 6:6b083e22cb53 48 } else {
franklzw 5:b50ce6160013 49 _x = _x;
franklzw 5:b50ce6160013 50 _y = _y;
franklzw 6:6b083e22cb53 51 }
franklzw 7:6f8aeadc4370 52
franklzw 6:6b083e22cb53 53 hold_ppl_against_wall();
franklzw 6:6b083e22cb53 54 hold_ppl_box_touching(temp);
franklzw 6:6b083e22cb53 55
franklzw 6:6b083e22cb53 56 }
franklzw 6:6b083e22cb53 57
franklzw 6:6b083e22cb53 58 Vector2D Ppl::get_pos()
franklzw 6:6b083e22cb53 59 {
franklzw 6:6b083e22cb53 60 Vector2D p = {_x,_y};
franklzw 6:6b083e22cb53 61 return p;
franklzw 6:6b083e22cb53 62 }
franklzw 6:6b083e22cb53 63
franklzw 6:6b083e22cb53 64 void Ppl::set_pos(Vector2D p)
franklzw 6:6b083e22cb53 65 {
franklzw 6:6b083e22cb53 66 _x = p.x;
franklzw 6:6b083e22cb53 67 _y = p.y;
franklzw 6:6b083e22cb53 68 }
franklzw 6:6b083e22cb53 69
franklzw 6:6b083e22cb53 70 bool Ppl::hold_beside_barrier(int barrier_x,int barrier_y) // check after moving if ppl pos match the barrier
franklzw 6:6b083e22cb53 71 {
franklzw 6:6b083e22cb53 72 // if matched return ture
franklzw 6:6b083e22cb53 73
franklzw 6:6b083e22cb53 74 if (_x == barrier_x &&_y == barrier_y) {
franklzw 6:6b083e22cb53 75 return true;
franklzw 6:6b083e22cb53 76 } else {
franklzw 6:6b083e22cb53 77 return false;
franklzw 6:6b083e22cb53 78 }
franklzw 6:6b083e22cb53 79 }
franklzw 6:6b083e22cb53 80
franklzw 6:6b083e22cb53 81 void Ppl::move_ppl(int bb,int ba,int bx,int by) //move the ppl with respect to the bottom read
franklzw 6:6b083e22cb53 82 {
franklzw 6:6b083e22cb53 83
franklzw 6:6b083e22cb53 84 if (bx ==0 && bb == 0 && by == 0 && ba == 0) {
franklzw 6:6b083e22cb53 85 _x = _x;
franklzw 6:6b083e22cb53 86 _y = _y;
franklzw 6:6b083e22cb53 87 }
franklzw 6:6b083e22cb53 88 if (bx == 1) {
franklzw 5:b50ce6160013 89 _x = _x-8;
franklzw 5:b50ce6160013 90 _y = _y;
franklzw 6:6b083e22cb53 91 }
franklzw 6:6b083e22cb53 92 if (bb == 1) {
franklzw 5:b50ce6160013 93 _x = _x+8;
franklzw 5:b50ce6160013 94 _y = _y;
franklzw 6:6b083e22cb53 95 }
franklzw 6:6b083e22cb53 96 if (by == 1) {
franklzw 5:b50ce6160013 97 _y = _y-8;
franklzw 5:b50ce6160013 98 _x = _x;
franklzw 6:6b083e22cb53 99 }
franklzw 6:6b083e22cb53 100 if (ba == 1) {
franklzw 5:b50ce6160013 101 _y = _y+8;
franklzw 5:b50ce6160013 102 _x = _x;
franklzw 6:6b083e22cb53 103 }
franklzw 6:6b083e22cb53 104 }
franklzw 6:6b083e22cb53 105
franklzw 6:6b083e22cb53 106 void Ppl::hold_ppl_box_touching(int temp) //check for box facing wall and hold pos of ppl
franklzw 6:6b083e22cb53 107 {
franklzw 6:6b083e22cb53 108 if (temp == 0 ) {
franklzw 6:6b083e22cb53 109 _y = _y;
franklzw 6:6b083e22cb53 110 _x = _x;
franklzw 6:6b083e22cb53 111 } else if (temp == 1) {
franklzw 6:6b083e22cb53 112 _x = 10;
franklzw 6:6b083e22cb53 113 } else if (temp == 2) {
franklzw 6:6b083e22cb53 114 _x = 66;
franklzw 6:6b083e22cb53 115 } else if (temp == 3) {
franklzw 6:6b083e22cb53 116 _y = 12;
franklzw 6:6b083e22cb53 117 } else if (temp == 4) {
franklzw 6:6b083e22cb53 118 _y = 28;
franklzw 6:6b083e22cb53 119 }
franklzw 6:6b083e22cb53 120 }
franklzw 6:6b083e22cb53 121
franklzw 6:6b083e22cb53 122 void Ppl::hold_ppl_against_wall() // check the y origin to ensure that the paddle doesn't go off screen
franklzw 6:6b083e22cb53 123 {
franklzw 3:9fa31396d89d 124 if (_y < 4) {
franklzw 3:9fa31396d89d 125 _y = 4;
franklzw 3:9fa31396d89d 126 }
franklzw 5:b50ce6160013 127 if (_y > 36) {
franklzw 5:b50ce6160013 128 _y = 36;
franklzw 3:9fa31396d89d 129 }
franklzw 5:b50ce6160013 130 if (_x > 74) {
franklzw 5:b50ce6160013 131 _x = 74;
franklzw 3:9fa31396d89d 132 }
franklzw 3:9fa31396d89d 133 if (_x < 2) {
franklzw 3:9fa31396d89d 134 _x = 2;
franklzw 3:9fa31396d89d 135 }
franklzw 3:9fa31396d89d 136 }