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.
Friendly.cpp@6:378b5d29e9cf, 2017-04-03 (annotated)
- Committer:
- musallambseiso
- Date:
- Mon Apr 03 12:39:35 2017 +0000
- Revision:
- 6:378b5d29e9cf
- Parent:
- 5:0cd7f779418a
- Child:
- 7:ac97bd2f5b1a
Upgraded friendly movement from 4-directional (N, S, E, W) to 8-directional (N, S, E, W, NE, NW, SE, SW)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
musallambseiso | 4:879c4cb8a7e4 | 1 | #include "Friendly.h" |
musallambseiso | 4:879c4cb8a7e4 | 2 | |
musallambseiso | 4:879c4cb8a7e4 | 3 | // Class for friendly ship (the one you control) |
musallambseiso | 4:879c4cb8a7e4 | 4 | |
musallambseiso | 4:879c4cb8a7e4 | 5 | Friendly::Friendly() |
musallambseiso | 4:879c4cb8a7e4 | 6 | { |
musallambseiso | 4:879c4cb8a7e4 | 7 | } |
musallambseiso | 4:879c4cb8a7e4 | 8 | |
musallambseiso | 4:879c4cb8a7e4 | 9 | Friendly::~Friendly() |
musallambseiso | 4:879c4cb8a7e4 | 10 | { |
musallambseiso | 4:879c4cb8a7e4 | 11 | } |
musallambseiso | 4:879c4cb8a7e4 | 12 | |
musallambseiso | 4:879c4cb8a7e4 | 13 | void Friendly::init(int x,int height,int width) // initialization |
musallambseiso | 4:879c4cb8a7e4 | 14 | { |
musallambseiso | 4:879c4cb8a7e4 | 15 | _x = 2; // starting x position (fixed) |
musallambseiso | 4:879c4cb8a7e4 | 16 | _y = HEIGHT/2 - height/2; // starting y position (centre) |
musallambseiso | 4:879c4cb8a7e4 | 17 | } |
musallambseiso | 4:879c4cb8a7e4 | 18 | |
musallambseiso | 4:879c4cb8a7e4 | 19 | void Friendly::draw(N5110 &lcd) // draws friendly ship in screen buffer |
musallambseiso | 4:879c4cb8a7e4 | 20 | { |
musallambseiso | 5:0cd7f779418a | 21 | lcd.drawLine(_x,_y,_x,_y+6,1); |
musallambseiso | 5:0cd7f779418a | 22 | lcd.drawLine(_x+1,_y,_x+3,_y,1); |
musallambseiso | 5:0cd7f779418a | 23 | lcd.drawLine(_x+1,_y+6,_x+3,_y+6,1); |
musallambseiso | 5:0cd7f779418a | 24 | lcd.drawLine(_x+4,_y+1,_x+5,_y+1,1); |
musallambseiso | 5:0cd7f779418a | 25 | lcd.drawLine(_x+4,_y+5,_x+5,_y+5,1); |
musallambseiso | 5:0cd7f779418a | 26 | lcd.drawLine(_x+6,_y+2,_x+6,_y+4,1); |
musallambseiso | 4:879c4cb8a7e4 | 27 | } |
musallambseiso | 4:879c4cb8a7e4 | 28 | |
musallambseiso | 4:879c4cb8a7e4 | 29 | void Friendly::update(Direction d,float mag) |
musallambseiso | 4:879c4cb8a7e4 | 30 | { |
musallambseiso | 5:0cd7f779418a | 31 | _speed = int(mag*4.0f); |
musallambseiso | 4:879c4cb8a7e4 | 32 | |
musallambseiso | 4:879c4cb8a7e4 | 33 | // four-directional movement |
musallambseiso | 4:879c4cb8a7e4 | 34 | if (d == N) { |
musallambseiso | 4:879c4cb8a7e4 | 35 | _y-=_speed; |
musallambseiso | 4:879c4cb8a7e4 | 36 | } else if (d == S) { |
musallambseiso | 4:879c4cb8a7e4 | 37 | _y+=_speed; |
musallambseiso | 4:879c4cb8a7e4 | 38 | } else if (d == W) { |
musallambseiso | 4:879c4cb8a7e4 | 39 | _x-=_speed; |
musallambseiso | 4:879c4cb8a7e4 | 40 | } else if (d == E) { |
musallambseiso | 4:879c4cb8a7e4 | 41 | _x+=_speed; |
musallambseiso | 6:378b5d29e9cf | 42 | } else if (d == NW) { |
musallambseiso | 6:378b5d29e9cf | 43 | _y-=_speed; |
musallambseiso | 6:378b5d29e9cf | 44 | _x-=_speed; |
musallambseiso | 6:378b5d29e9cf | 45 | } else if (d == NE) { |
musallambseiso | 6:378b5d29e9cf | 46 | _y-=_speed; |
musallambseiso | 6:378b5d29e9cf | 47 | _x+=_speed; |
musallambseiso | 6:378b5d29e9cf | 48 | } else if (d == SW) { |
musallambseiso | 6:378b5d29e9cf | 49 | _y+=_speed; |
musallambseiso | 6:378b5d29e9cf | 50 | _x-=_speed; |
musallambseiso | 6:378b5d29e9cf | 51 | } else if (d == SE) { |
musallambseiso | 6:378b5d29e9cf | 52 | _y+=_speed; |
musallambseiso | 6:378b5d29e9cf | 53 | _x+=_speed; |
musallambseiso | 4:879c4cb8a7e4 | 54 | } |
musallambseiso | 4:879c4cb8a7e4 | 55 | |
musallambseiso | 4:879c4cb8a7e4 | 56 | // position check so the ship doesn't go out of bounds |
musallambseiso | 4:879c4cb8a7e4 | 57 | if (_y < 1) { |
musallambseiso | 4:879c4cb8a7e4 | 58 | _y = 1; |
musallambseiso | 4:879c4cb8a7e4 | 59 | } |
musallambseiso | 4:879c4cb8a7e4 | 60 | |
musallambseiso | 4:879c4cb8a7e4 | 61 | if (_y > 41) { |
musallambseiso | 4:879c4cb8a7e4 | 62 | _y = 41; |
musallambseiso | 4:879c4cb8a7e4 | 63 | } |
musallambseiso | 4:879c4cb8a7e4 | 64 | |
musallambseiso | 4:879c4cb8a7e4 | 65 | if (_x < 1) { |
musallambseiso | 4:879c4cb8a7e4 | 66 | _x = 1; |
musallambseiso | 4:879c4cb8a7e4 | 67 | } |
musallambseiso | 4:879c4cb8a7e4 | 68 | |
musallambseiso | 5:0cd7f779418a | 69 | if (_x > 78) { |
musallambseiso | 5:0cd7f779418a | 70 | _x = 78; |
musallambseiso | 4:879c4cb8a7e4 | 71 | } |
musallambseiso | 4:879c4cb8a7e4 | 72 | } |
musallambseiso | 4:879c4cb8a7e4 | 73 | |
musallambseiso | 4:879c4cb8a7e4 | 74 | Vector2D Friendly::get_pos() { |
musallambseiso | 4:879c4cb8a7e4 | 75 | Vector2D p = {_x,_y}; |
musallambseiso | 4:879c4cb8a7e4 | 76 | return p; |
musallambseiso | 4:879c4cb8a7e4 | 77 | } |