Dependencies: mbed
On Minerva
PeopleEngine/People.cpp@22:cded0cd8e1c9, 2020-05-22 (annotated)
- Committer:
- el19zf
- Date:
- Fri May 22 16:07:02 2020 +0000
- Revision:
- 22:cded0cd8e1c9
- Parent:
- 14:42b8a91e463c
Final Submission. I have read and agreed with Statement of Academic Integrity.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
el19zf | 2:67b51ee7fc34 | 1 | #include "People.h" |
el19zf | 9:62d6559f0d50 | 2 | #define INIT_x 1 |
el19zf | 13:eb60628db8bf | 3 | #define INIT_y 20 |
el19zf | 2:67b51ee7fc34 | 4 | |
el19zf | 13:eb60628db8bf | 5 | const int people_sprite[8][5] = { |
el19zf | 13:eb60628db8bf | 6 | {0,1,1,1,0}, |
el19zf | 13:eb60628db8bf | 7 | {0,1,1,1,0}, |
el19zf | 13:eb60628db8bf | 8 | {0,0,1,0,0}, |
el19zf | 13:eb60628db8bf | 9 | {1,1,1,1,1}, |
el19zf | 13:eb60628db8bf | 10 | {0,0,1,0,0}, |
el19zf | 13:eb60628db8bf | 11 | {0,1,0,1,0}, |
el19zf | 13:eb60628db8bf | 12 | {0,1,0,1,0}, |
el19zf | 13:eb60628db8bf | 13 | {0,1,0,1,0}, |
el19zf | 13:eb60628db8bf | 14 | };//try to draw a people, but for the operability of game, it seems not a good implementation.. |
el19zf | 2:67b51ee7fc34 | 15 | |
el19zf | 13:eb60628db8bf | 16 | const int running_people_sprite[8][5] = { |
el19zf | 13:eb60628db8bf | 17 | {0,1,1,1,0}, |
el19zf | 13:eb60628db8bf | 18 | {0,1,1,1,0}, |
el19zf | 13:eb60628db8bf | 19 | {0,0,1,0,0}, |
el19zf | 13:eb60628db8bf | 20 | {1,1,1,1,1}, |
el19zf | 13:eb60628db8bf | 21 | {0,0,1,0,0}, |
el19zf | 13:eb60628db8bf | 22 | {0,1,0,1,0}, |
el19zf | 13:eb60628db8bf | 23 | {1,0,0,0,1}, |
el19zf | 13:eb60628db8bf | 24 | {1,0,0,0,1}, |
el19zf | 13:eb60628db8bf | 25 | }; |
el19zf | 2:67b51ee7fc34 | 26 | |
el19zf | 13:eb60628db8bf | 27 | People::People() |
el19zf | 13:eb60628db8bf | 28 | { |
el19zf | 2:67b51ee7fc34 | 29 | |
el19zf | 2:67b51ee7fc34 | 30 | } |
el19zf | 2:67b51ee7fc34 | 31 | |
el19zf | 13:eb60628db8bf | 32 | People::~People() |
el19zf | 13:eb60628db8bf | 33 | { |
el19zf | 2:67b51ee7fc34 | 34 | |
el19zf | 2:67b51ee7fc34 | 35 | } |
el19zf | 2:67b51ee7fc34 | 36 | |
el19zf | 13:eb60628db8bf | 37 | void People::init() |
el19zf | 13:eb60628db8bf | 38 | { |
el19zf | 2:67b51ee7fc34 | 39 | _x = INIT_x; |
el19zf | 2:67b51ee7fc34 | 40 | _y = INIT_y;//Set initial postion of people |
el19zf | 13:eb60628db8bf | 41 | _index = 0; |
el19zf | 2:67b51ee7fc34 | 42 | } |
el19zf | 13:eb60628db8bf | 43 | |
el19zf | 13:eb60628db8bf | 44 | void People::draw(N5110 &lcd,int flag) |
el19zf | 13:eb60628db8bf | 45 | { |
el19zf | 13:eb60628db8bf | 46 | if(int(_mag*5)!=0&&flag!=0){ |
el19zf | 13:eb60628db8bf | 47 | if(!_index){ |
el19zf | 13:eb60628db8bf | 48 | lcd.drawSprite(_x,_y,8,5,(int*)people_sprite);//Draw sprite to represent a people |
el19zf | 13:eb60628db8bf | 49 | // printf("drawSprite"); |
el19zf | 13:eb60628db8bf | 50 | _index = 1; |
el19zf | 13:eb60628db8bf | 51 | }else{ |
el19zf | 13:eb60628db8bf | 52 | lcd.drawSprite(_x,_y,8,5,(int*)running_people_sprite); |
el19zf | 13:eb60628db8bf | 53 | _index = 0; |
el19zf | 13:eb60628db8bf | 54 | } |
el19zf | 13:eb60628db8bf | 55 | }else{ |
el19zf | 13:eb60628db8bf | 56 | lcd.drawSprite(_x,_y,8,5,(int*)people_sprite); |
el19zf | 13:eb60628db8bf | 57 | } |
el19zf | 13:eb60628db8bf | 58 | } |
el19zf | 13:eb60628db8bf | 59 | |
el19zf | 13:eb60628db8bf | 60 | /*control people by Joystick in different angle and magnitude |
el19zf | 13:eb60628db8bf | 61 | */ |
el19zf | 13:eb60628db8bf | 62 | void People::update() |
el19zf | 13:eb60628db8bf | 63 | { |
el19zf | 13:eb60628db8bf | 64 | if(_d == S) { |
el19zf | 13:eb60628db8bf | 65 | _x += 0; _y += int(_mag*5); |
el19zf | 13:eb60628db8bf | 66 | } else if(_d == SE){ |
el19zf | 13:eb60628db8bf | 67 | _x += int(_mag*5); _y += int(_mag*5); |
el19zf | 13:eb60628db8bf | 68 | } else if(_d == E){ |
el19zf | 13:eb60628db8bf | 69 | _x += int(_mag*5); _y += 0; |
el19zf | 13:eb60628db8bf | 70 | } else if(_d == NE){ |
el19zf | 13:eb60628db8bf | 71 | _x += int(_mag*5); _y -= int(_mag*5); |
el19zf | 13:eb60628db8bf | 72 | } else if(_d == N){ |
el19zf | 13:eb60628db8bf | 73 | _x -= 0; _y -= int(_mag*5); |
el19zf | 13:eb60628db8bf | 74 | } else if(_d == NW){ |
el19zf | 13:eb60628db8bf | 75 | _x -= int(_mag*5); _y -= int(_mag*5); |
el19zf | 13:eb60628db8bf | 76 | } else if(_d == W){ |
el19zf | 13:eb60628db8bf | 77 | _x -= int(_mag*5); _y -= 0; |
el19zf | 14:42b8a91e463c | 78 | } else if(_d == SW){ |
el19zf | 13:eb60628db8bf | 79 | _x -= int(_mag*5); _y += int(_mag*5); |
el19zf | 13:eb60628db8bf | 80 | } |
el19zf | 13:eb60628db8bf | 81 | //printf("Mag = %f,Direction = %d,Coordinate = %d, %d\n",_mag,_d,_x,_y); |
el19zf | 2:67b51ee7fc34 | 82 | |
el19zf | 13:eb60628db8bf | 83 | control_lim();//without going off screen |
el19zf | 13:eb60628db8bf | 84 | } |
el19zf | 13:eb60628db8bf | 85 | |
el19zf | 13:eb60628db8bf | 86 | void People::control_lim() |
el19zf | 13:eb60628db8bf | 87 | { |
el19zf | 13:eb60628db8bf | 88 | if (_x < 1) { _x = 1;}//left |
el19zf | 13:eb60628db8bf | 89 | else if (_x > 78) { _x = 78;}//right |
el19zf | 13:eb60628db8bf | 90 | else if (_y < 1) {_y = 1;}//top |
el19zf | 13:eb60628db8bf | 91 | else if (_y > 41) {_y = 41;}//bottom |
el19zf | 2:67b51ee7fc34 | 92 | } |
el19zf | 2:67b51ee7fc34 | 93 | |
el19zf | 2:67b51ee7fc34 | 94 | void People::set_pos(Vector2D p) |
el19zf | 2:67b51ee7fc34 | 95 | { |
el19zf | 2:67b51ee7fc34 | 96 | _x = p.x; |
el19zf | 2:67b51ee7fc34 | 97 | _y = p.y; |
el19zf | 2:67b51ee7fc34 | 98 | } |
el19zf | 2:67b51ee7fc34 | 99 | |
el19zf | 3:b8fbaefc496c | 100 | void People::set_velocity(Direction d,float mag) |
el19zf | 2:67b51ee7fc34 | 101 | { |
el19zf | 3:b8fbaefc496c | 102 | _d = d; |
el19zf | 3:b8fbaefc496c | 103 | _mag = mag; |
el19zf | 2:67b51ee7fc34 | 104 | } |
el19zf | 2:67b51ee7fc34 | 105 | |
el19zf | 2:67b51ee7fc34 | 106 | Vector2D People::get_pos() |
el19zf | 2:67b51ee7fc34 | 107 | { |
el19zf | 2:67b51ee7fc34 | 108 | Vector2D p = {_x,_y}; |
el19zf | 3:b8fbaefc496c | 109 | //printf("Coord = %f,%f\n",p.x,p.y); |
el19zf | 2:67b51ee7fc34 | 110 | return p; |
el19zf | 2:67b51ee7fc34 | 111 | } |
el19zf | 13:eb60628db8bf | 112 |