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.
Player/Player.cpp@15:807eba7c7811, 2019-05-07 (annotated)
- Committer:
- ll16o2l
- Date:
- Tue May 07 18:01:54 2019 +0000
- Revision:
- 15:807eba7c7811
- Parent:
- 3:aa82968b7a8e
Re-organised the documentation and finished the project.
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| ll16o2l | 2:888634fff8ff | 1 | #include "Player.h" |
| ll16o2l | 2:888634fff8ff | 2 | |
| ll16o2l | 2:888634fff8ff | 3 | // nothing doing in the constructor and destructor |
| ll16o2l | 2:888634fff8ff | 4 | Player::Player() |
| ll16o2l | 2:888634fff8ff | 5 | { |
| ll16o2l | 2:888634fff8ff | 6 | |
| ll16o2l | 2:888634fff8ff | 7 | } |
| ll16o2l | 2:888634fff8ff | 8 | |
| ll16o2l | 2:888634fff8ff | 9 | Player::~Player() |
| ll16o2l | 2:888634fff8ff | 10 | { |
| ll16o2l | 2:888634fff8ff | 11 | |
| ll16o2l | 2:888634fff8ff | 12 | } |
| ll16o2l | 2:888634fff8ff | 13 | |
| ll16o2l | 2:888634fff8ff | 14 | void Player::init(int player_height,int player_width) |
| ll16o2l | 2:888634fff8ff | 15 | { |
| ll16o2l | 2:888634fff8ff | 16 | // Initialise at the centre |
| ll16o2l | 2:888634fff8ff | 17 | |
| ll16o2l | 2:888634fff8ff | 18 | _x = HEIGHT/2 - player_height/2; |
| ll16o2l | 2:888634fff8ff | 19 | _y = WIDTH/2 - player_width/2; |
| ll16o2l | 2:888634fff8ff | 20 | |
| ll16o2l | 2:888634fff8ff | 21 | _player_height = player_height; |
| ll16o2l | 2:888634fff8ff | 22 | _player_width = player_width; |
| ll16o2l | 2:888634fff8ff | 23 | |
| ll16o2l | 2:888634fff8ff | 24 | _speed = 1; // default speed |
| ll16o2l | 2:888634fff8ff | 25 | } |
| ll16o2l | 2:888634fff8ff | 26 | |
| ll16o2l | 2:888634fff8ff | 27 | void Player::draw(N5110 &lcd) |
| ll16o2l | 2:888634fff8ff | 28 | { |
| ll16o2l | 2:888634fff8ff | 29 | int Player_sprite[14][14] = { |
| ll16o2l | 2:888634fff8ff | 30 | {1,1,1,1,1,1,1,1,1,1,1,1,1,1}, |
| ll16o2l | 2:888634fff8ff | 31 | {1,1,1,0,0,0,1,1,0,0,0,1,1,1}, |
| ll16o2l | 2:888634fff8ff | 32 | {1,1,1,1,0,0,1,1,0,0,1,1,1,1}, |
| ll16o2l | 2:888634fff8ff | 33 | {1,0,1,1,1,0,1,1,0,1,1,1,0,1}, |
| ll16o2l | 2:888634fff8ff | 34 | {1,0,0,1,1,1,1,1,1,1,1,0,0,1}, |
| ll16o2l | 2:888634fff8ff | 35 | {1,0,0,0,1,1,1,1,1,1,0,0,0,1}, |
| ll16o2l | 2:888634fff8ff | 36 | {1,0,0,0,0,1,1,1,1,0,0,0,0,1}, |
| ll16o2l | 2:888634fff8ff | 37 | {1,0,0,0,0,1,1,1,1,0,0,0,0,1}, |
| ll16o2l | 2:888634fff8ff | 38 | {1,0,0,0,1,1,1,1,1,1,0,0,0,1}, |
| ll16o2l | 2:888634fff8ff | 39 | {1,0,0,1,1,1,1,1,1,1,1,0,0,1}, |
| ll16o2l | 2:888634fff8ff | 40 | {1,0,1,1,1,0,1,1,0,1,1,1,0,1}, |
| ll16o2l | 2:888634fff8ff | 41 | {1,1,1,1,0,0,1,1,0,0,1,1,1,1}, |
| ll16o2l | 2:888634fff8ff | 42 | {1,1,1,0,0,0,1,1,0,0,0,1,1,1}, |
| ll16o2l | 2:888634fff8ff | 43 | {1,1,1,1,1,1,1,1,1,1,1,1,1,1}, |
| ll16o2l | 2:888634fff8ff | 44 | }; |
| ll16o2l | 2:888634fff8ff | 45 | |
| ll16o2l | 2:888634fff8ff | 46 | // Instantiate the Bitmap object using the data above |
| ll16o2l | 3:aa82968b7a8e | 47 | lcd.drawSprite(_x, _y, _player_height, _player_width,(int *)Player_sprite); |
| ll16o2l | 2:888634fff8ff | 48 | } |
| ll16o2l | 2:888634fff8ff | 49 | |
| ll16o2l | 3:aa82968b7a8e | 50 | void Player::update(Direction d, float mag) |
| ll16o2l | 2:888634fff8ff | 51 | { |
| ll16o2l | 2:888634fff8ff | 52 | _speed = int(mag*10.0f); // scale is arbitrary, could be changed in future |
| ll16o2l | 2:888634fff8ff | 53 | |
| ll16o2l | 2:888634fff8ff | 54 | // update y value depending on direction of movement |
| ll16o2l | 2:888634fff8ff | 55 | // North is decrement as origin is at the top-left so decreasing moves up |
| ll16o2l | 2:888634fff8ff | 56 | if (d == N) { |
| ll16o2l | 3:aa82968b7a8e | 57 | _y-=_speed; // updates the speed in directions depending on joystick position, d. |
| ll16o2l | 3:aa82968b7a8e | 58 | } else if (d == NE) { |
| ll16o2l | 2:888634fff8ff | 59 | _y-=_speed; |
| ll16o2l | 2:888634fff8ff | 60 | _x+=_speed; |
| ll16o2l | 2:888634fff8ff | 61 | } else if (d == E) { |
| ll16o2l | 2:888634fff8ff | 62 | _x+=_speed; |
| ll16o2l | 2:888634fff8ff | 63 | } else if (d == SE) { |
| ll16o2l | 2:888634fff8ff | 64 | _y+=_speed; |
| ll16o2l | 2:888634fff8ff | 65 | _x+=_speed; |
| ll16o2l | 2:888634fff8ff | 66 | } else if (d == S) { |
| ll16o2l | 2:888634fff8ff | 67 | _y+=_speed; |
| ll16o2l | 2:888634fff8ff | 68 | } else if (d == SW) { |
| ll16o2l | 2:888634fff8ff | 69 | _y+=_speed; |
| ll16o2l | 2:888634fff8ff | 70 | _x-=_speed; |
| ll16o2l | 2:888634fff8ff | 71 | } else if (d == W) { |
| ll16o2l | 2:888634fff8ff | 72 | _x-=_speed; |
| ll16o2l | 2:888634fff8ff | 73 | } else if (d == NW) { |
| ll16o2l | 2:888634fff8ff | 74 | _y-=_speed; |
| ll16o2l | 2:888634fff8ff | 75 | _x-=_speed; |
| ll16o2l | 2:888634fff8ff | 76 | } |
| ll16o2l | 2:888634fff8ff | 77 | |
| ll16o2l | 3:aa82968b7a8e | 78 | // check the y origin to ensure that the player doesn't go off screen |
| ll16o2l | 2:888634fff8ff | 79 | if (_y < 1) { |
| ll16o2l | 2:888634fff8ff | 80 | _y = 1; |
| ll16o2l | 2:888634fff8ff | 81 | } |
| ll16o2l | 2:888634fff8ff | 82 | if (_y > HEIGHT - _player_height - 1) { |
| ll16o2l | 2:888634fff8ff | 83 | _y = HEIGHT - _player_height - 1; |
| ll16o2l | 2:888634fff8ff | 84 | } |
| ll16o2l | 2:888634fff8ff | 85 | |
| ll16o2l | 3:aa82968b7a8e | 86 | // check the x origin to ensure that the player doesn't go off screen |
| ll16o2l | 2:888634fff8ff | 87 | if (_x < 1) { |
| ll16o2l | 2:888634fff8ff | 88 | _x = 1; |
| ll16o2l | 2:888634fff8ff | 89 | } |
| ll16o2l | 2:888634fff8ff | 90 | if (_x > WIDTH - _player_width - 1) { |
| ll16o2l | 2:888634fff8ff | 91 | _x = WIDTH - _player_width - 1; |
| ll16o2l | 2:888634fff8ff | 92 | } |
| ll16o2l | 2:888634fff8ff | 93 | } |
| ll16o2l | 2:888634fff8ff | 94 | |
| ll16o2l | 3:aa82968b7a8e | 95 | /** |
| ll16o2l | 3:aa82968b7a8e | 96 | * This method will be used to retun the position of the player. |
| ll16o2l | 3:aa82968b7a8e | 97 | * @author Oliver Luong |
| ll16o2l | 3:aa82968b7a8e | 98 | * @date 22/04/2019 |
| ll16o2l | 3:aa82968b7a8e | 99 | */ |
| ll16o2l | 2:888634fff8ff | 100 | Vector2D Player::get_pos() { |
| ll16o2l | 2:888634fff8ff | 101 | Vector2D p = {_x,_y}; |
| ll16o2l | 2:888634fff8ff | 102 | return p; |
| ll16o2l | 2:888634fff8ff | 103 | } |