ELEC2645 (2019/20) / Mbed 2 deprecated ELEC2645_Project_el18zc2

Dependencies:   mbed

Committer:
ChenZirui
Date:
Sat May 23 18:12:03 2020 +0000
Revision:
4:e46c295d4baf
Parent:
3:20bd321071ef
update

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ChenZirui 4:e46c295d4baf 1 #include "Fighter.h"
ChenZirui 4:e46c295d4baf 2
ChenZirui 4:e46c295d4baf 3 // nothing doing in the constructor and destructor
ChenZirui 4:e46c295d4baf 4 fighter::fighter()
ChenZirui 4:e46c295d4baf 5 {
ChenZirui 4:e46c295d4baf 6
ChenZirui 4:e46c295d4baf 7 }
ChenZirui 4:e46c295d4baf 8
ChenZirui 4:e46c295d4baf 9 fighter::~fighter()
ChenZirui 4:e46c295d4baf 10 {
ChenZirui 4:e46c295d4baf 11
ChenZirui 4:e46c295d4baf 12 }
ChenZirui 4:e46c295d4baf 13
ChenZirui 4:e46c295d4baf 14 void fighter::init(int x,int y,int height,int width)
ChenZirui 4:e46c295d4baf 15 {
ChenZirui 4:e46c295d4baf 16 _x=WIDTH/2-width/2 ; // horizontal coordinate of fighter
ChenZirui 4:e46c295d4baf 17 _y=HEIGHT/2-height/2 ; // vertical coordinate of fighte
ChenZirui 4:e46c295d4baf 18 _height =height;
ChenZirui 4:e46c295d4baf 19 _width = width;
ChenZirui 4:e46c295d4baf 20 _speed = 1; // default speed
ChenZirui 4:e46c295d4baf 21 _score = 0;
ChenZirui 4:e46c295d4baf 22
ChenZirui 4:e46c295d4baf 23
ChenZirui 4:e46c295d4baf 24 }
ChenZirui 4:e46c295d4baf 25 void fighter::draw(N5110 &lcd);
ChenZirui 4:e46c295d4baf 26 {
ChenZirui 4:e46c295d4baf 27 lcd.drawRect(_x+(_height/2)-(_width/2),_y,_width,_height,FILL_BLACK);
ChenZirui 4:e46c295d4baf 28 lcd.drawRect(_x,_y,_height,_width,FILL_BLACK);
ChenZirui 4:e46c295d4baf 29
ChenZirui 4:e46c295d4baf 30 }
ChenZirui 4:e46c295d4baf 31 void fighter::update(Direction d,float mag)
ChenZirui 4:e46c295d4baf 32 {
ChenZirui 4:e46c295d4baf 33 speed = int(mag*10.0f); // scale is arbitrary, could be changed in future
ChenZirui 4:e46c295d4baf 34
ChenZirui 4:e46c295d4baf 35 // update y value depending on direction of movement
ChenZirui 4:e46c295d4baf 36 // North is decrement as origin is at the top-left so decreasing moves up
ChenZirui 4:e46c295d4baf 37 if (d == N)
ChenZirui 4:e46c295d4baf 38 {
ChenZirui 4:e46c295d4baf 39 _y-=_speed;
ChenZirui 4:e46c295d4baf 40 }else if (d == S)
ChenZirui 4:e46c295d4baf 41 {
ChenZirui 4:e46c295d4baf 42 _y+=_speed;
ChenZirui 4:e46c295d4baf 43 }else if(d == W)
ChenZirui 4:e46c295d4baf 44 {
ChenZirui 4:e46c295d4baf 45 _x-=_speed;
ChenZirui 4:e46c295d4baf 46 }else if(d == E)
ChenZirui 4:e46c295d4baf 47 {
ChenZirui 4:e46c295d4baf 48 _x+=_speed;
ChenZirui 4:e46c295d4baf 49 }else if(d == NE)
ChenZirui 4:e46c295d4baf 50 {
ChenZirui 4:e46c295d4baf 51 _y+=_speed;
ChenZirui 4:e46c295d4baf 52 _x+=_speed;
ChenZirui 4:e46c295d4baf 53 }else if(d == NW)
ChenZirui 4:e46c295d4baf 54 {
ChenZirui 4:e46c295d4baf 55 _y+=_speed;
ChenZirui 4:e46c295d4baf 56 _x-=_speed;
ChenZirui 4:e46c295d4baf 57 }else if(d == SE)
ChenZirui 4:e46c295d4baf 58 {
ChenZirui 4:e46c295d4baf 59 _y-=_speed;
ChenZirui 4:e46c295d4baf 60 _x+=_speed;
ChenZirui 4:e46c295d4baf 61 }else if(d == SW)
ChenZirui 4:e46c295d4baf 62 {
ChenZirui 4:e46c295d4baf 63 _y-=_speed;
ChenZirui 4:e46c295d4baf 64 _x-=_speed;
ChenZirui 4:e46c295d4baf 65 }
ChenZirui 4:e46c295d4baf 66 if (_y < 1)
ChenZirui 4:e46c295d4baf 67 {
ChenZirui 4:e46c295d4baf 68 _y = 1;
ChenZirui 4:e46c295d4baf 69 }
ChenZirui 4:e46c295d4baf 70 if (_y > HEIGHT - _height - 1)
ChenZirui 4:e46c295d4baf 71 {
ChenZirui 4:e46c295d4baf 72 _y = HEIGHT - _height - 1;
ChenZirui 4:e46c295d4baf 73 }
ChenZirui 4:e46c295d4baf 74 if (_x < 1)
ChenZirui 4:e46c295d4baf 75 {
ChenZirui 4:e46c295d4baf 76 _x = 1;
ChenZirui 4:e46c295d4baf 77 }
ChenZirui 4:e46c295d4baf 78 if (_x > WIDTH - _width - 1)
ChenZirui 4:e46c295d4baf 79 {
ChenZirui 4:e46c295d4baf 80 _x = WIDTH - _width - 1;
ChenZirui 4:e46c295d4baf 81 }
ChenZirui 4:e46c295d4baf 82 }
ChenZirui 4:e46c295d4baf 83 void fighter::add_score()
ChenZirui 4:e46c295d4baf 84 {
ChenZirui 4:e46c295d4baf 85 _score++;
ChenZirui 4:e46c295d4baf 86 }
ChenZirui 4:e46c295d4baf 87 int fighter::get_score()
ChenZirui 4:e46c295d4baf 88 {
ChenZirui 4:e46c295d4baf 89 return _score;
ChenZirui 4:e46c295d4baf 90 }
ChenZirui 4:e46c295d4baf 91
ChenZirui 4:e46c295d4baf 92 Vector2D fighter::get_pos()
ChenZirui 4:e46c295d4baf 93 {
ChenZirui 4:e46c295d4baf 94 Vector2D p = {_x,_y};
ChenZirui 4:e46c295d4baf 95 return p;
ChenZirui 4:e46c295d4baf 96 }
ChenZirui 4:e46c295d4baf 97