Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Fighter/Fighter.cpp@4:e46c295d4baf, 2020-05-23 (annotated)
- Committer:
- ChenZirui
- Date:
- Sat May 23 18:12:03 2020 +0000
- Revision:
- 4:e46c295d4baf
- Parent:
- 3:20bd321071ef
update
Who changed what in which revision?
| User | Revision | Line number | New 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 |