Dependencies:   mbed

On Minerva

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?

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