ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el19zf

Dependencies:   mbed

Committer:
el19zf
Date:
Mon May 11 14:43:16 2020 +0000
Revision:
12:009895f6b6e4
Parent:
9:62d6559f0d50
Child:
13:eb60628db8bf
add a test file and optimzed code

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el19zf 2:67b51ee7fc34 1 #include "People.h"
el19zf 9:62d6559f0d50 2 #define INIT_x 1
el19zf 9:62d6559f0d50 3 #define INIT_y 23
el19zf 2:67b51ee7fc34 4
el19zf 2:67b51ee7fc34 5
el19zf 2:67b51ee7fc34 6 const int people_sprite[4][4] = {
el19zf 2:67b51ee7fc34 7 {0,1,1,0},
el19zf 2:67b51ee7fc34 8 {1,1,1,1},
el19zf 2:67b51ee7fc34 9 {0,1,1,0},
el19zf 2:67b51ee7fc34 10 {0,1,1,0},
el19zf 3:b8fbaefc496c 11 };//try to draw a people, but for the operability of game, seems not good..
el19zf 2:67b51ee7fc34 12
el19zf 2:67b51ee7fc34 13 People::People() {
el19zf 2:67b51ee7fc34 14
el19zf 2:67b51ee7fc34 15 }
el19zf 2:67b51ee7fc34 16
el19zf 2:67b51ee7fc34 17 People::~People() {
el19zf 2:67b51ee7fc34 18
el19zf 2:67b51ee7fc34 19 }
el19zf 2:67b51ee7fc34 20
el19zf 2:67b51ee7fc34 21 void People::init() {
el19zf 2:67b51ee7fc34 22
el19zf 2:67b51ee7fc34 23 _x = INIT_x;
el19zf 2:67b51ee7fc34 24 _y = INIT_y;//Set initial postion of people
el19zf 2:67b51ee7fc34 25 }
el19zf 2:67b51ee7fc34 26 void People::draw(N5110 &lcd) {
el19zf 2:67b51ee7fc34 27
el19zf 2:67b51ee7fc34 28 //Draw sprite to represent a people
el19zf 2:67b51ee7fc34 29 lcd.drawSprite(_x,_y,4,4,(int*)people_sprite);
el19zf 3:b8fbaefc496c 30 // printf("drawSprite");
el19zf 2:67b51ee7fc34 31 }
el19zf 2:67b51ee7fc34 32
el19zf 2:67b51ee7fc34 33 void People::set_pos(Vector2D p)
el19zf 2:67b51ee7fc34 34 {
el19zf 2:67b51ee7fc34 35 _x = p.x;
el19zf 2:67b51ee7fc34 36 _y = p.y;
el19zf 2:67b51ee7fc34 37 }
el19zf 2:67b51ee7fc34 38
el19zf 3:b8fbaefc496c 39 void People::set_velocity(Direction d,float mag)
el19zf 2:67b51ee7fc34 40 {
el19zf 3:b8fbaefc496c 41 _d = d;
el19zf 3:b8fbaefc496c 42 _mag = mag;
el19zf 2:67b51ee7fc34 43 }
el19zf 2:67b51ee7fc34 44
el19zf 2:67b51ee7fc34 45 Vector2D People::get_pos()
el19zf 2:67b51ee7fc34 46 {
el19zf 2:67b51ee7fc34 47 Vector2D p = {_x,_y};
el19zf 3:b8fbaefc496c 48 //printf("Coord = %f,%f\n",p.x,p.y);
el19zf 2:67b51ee7fc34 49 return p;
el19zf 2:67b51ee7fc34 50 }
el19zf 2:67b51ee7fc34 51
el19zf 3:b8fbaefc496c 52 void People::update()
el19zf 2:67b51ee7fc34 53 {
el19zf 3:b8fbaefc496c 54 if (_d == S) {
el19zf 3:b8fbaefc496c 55 if(_mag < 0.25f) { _x += 0; _y += 1;} else
el19zf 3:b8fbaefc496c 56 if(0.25f < _mag < 0.5f) { _x += 0; _y += 2;} else
el19zf 3:b8fbaefc496c 57 if(0.5f < _mag < 0.75f) { _x += 0; _y += 3;} else
el19zf 12:009895f6b6e4 58 { _x += 0; _y += 4;}}else
el19zf 12:009895f6b6e4 59 if (_d == SE){
el19zf 3:b8fbaefc496c 60 if(_mag < 0.25f) { _x += 1; _y += 1;} else
el19zf 3:b8fbaefc496c 61 if(0.25f < _mag < 0.5f) { _x += 2; _y += 2;} else
el19zf 3:b8fbaefc496c 62 if(0.5f < _mag < 0.75f) { _x += 3; _y += 3;} else
el19zf 12:009895f6b6e4 63 { _x += 4; _y += 4;}}else
el19zf 3:b8fbaefc496c 64 if (_d == E) {
el19zf 3:b8fbaefc496c 65 if(_mag < 0.25f) { _x += 1; _y += 0;} else
el19zf 3:b8fbaefc496c 66 if(0.25f < _mag < 0.5f) { _x += 2; _y += 0;} else
el19zf 3:b8fbaefc496c 67 if(0.5f < _mag < 0.75f) { _x += 3; _y += 0;} else
el19zf 12:009895f6b6e4 68 { _x += 4; _y += 0;}}else
el19zf 12:009895f6b6e4 69 if (_d == NE){
el19zf 3:b8fbaefc496c 70 if(_mag < 0.25f) { _x += 1; _y -= 1;} else
el19zf 3:b8fbaefc496c 71 if(0.25f < _mag < 0.5f) { _x += 2; _y -= 2;} else
el19zf 3:b8fbaefc496c 72 if(0.5f < _mag < 0.75f) { _x += 3; _y -= 3;} else
el19zf 12:009895f6b6e4 73 { _x += 4; _y -= 4;}}else
el19zf 3:b8fbaefc496c 74 if (_d == N) {
el19zf 3:b8fbaefc496c 75 if(_mag < 0.25f) { _x += 0; _y -= 1;} else
el19zf 3:b8fbaefc496c 76 if(0.25f < _mag < 0.5f) { _x += 0; _y -= 2;} else
el19zf 3:b8fbaefc496c 77 if(0.5f < _mag < 0.75f) { _x += 0; _y -= 3;} else
el19zf 12:009895f6b6e4 78 { _x += 0; _y -= 4;}}else
el19zf 12:009895f6b6e4 79 if (_d == NW){
el19zf 3:b8fbaefc496c 80 if(_mag < 0.25f) { _x -= 1; _y -= 1;} else
el19zf 3:b8fbaefc496c 81 if(0.25f < _mag < 0.5f) { _x -= 2; _y -= 2;} else
el19zf 3:b8fbaefc496c 82 if(0.5f < _mag < 0.75f) { _x -= 3; _y -= 3;} else
el19zf 12:009895f6b6e4 83 { _x -= 4; _y -= 4;}}else
el19zf 3:b8fbaefc496c 84 if (_d == W) {
el19zf 3:b8fbaefc496c 85 if(_mag < 0.25f) { _x -= 1; _y -= 0;} else
el19zf 3:b8fbaefc496c 86 if(0.25f < _mag < 0.5f) { _x -= 2; _y -= 0;} else
el19zf 3:b8fbaefc496c 87 if(0.5f < _mag < 0.75f) { _x -= 3; _y -= 0;} else
el19zf 12:009895f6b6e4 88 { _x -= 4; _y -= 0;}}else
el19zf 12:009895f6b6e4 89 if (_d == NW){
el19zf 3:b8fbaefc496c 90 if(_mag < 0.25f) { _x -= 1; _y += 1;} else
el19zf 3:b8fbaefc496c 91 if(0.25f < _mag < 0.5f) { _x -= 2; _y += 2;} else
el19zf 3:b8fbaefc496c 92 if(0.5f < _mag < 0.75f) { _x -= 3; _y += 3;} else
el19zf 3:b8fbaefc496c 93 { _x -= 4; _y += 4;}}
el19zf 4:b12a49f0b730 94 //without going off screen
el19zf 8:8287d2ef965d 95 if (_x < 1) { _x = 1;} else
el19zf 8:8287d2ef965d 96 if (_x > 79) { _x = 79;} else
el19zf 8:8287d2ef965d 97 if (_y < 1) {_y = 1;} else
el19zf 8:8287d2ef965d 98 if (_y > 43) {_y = 43;}
el19zf 2:67b51ee7fc34 99 }
el19zf 2:67b51ee7fc34 100