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 Gamepad N5110 mbed-rtos
Spacecraft/Spacecraft.cpp@14:c7302ffe6eab, 2019-05-09 (annotated)
- Committer:
- RexRoshan
- Date:
- Thu May 09 14:23:35 2019 +0000
- Revision:
- 14:c7302ffe6eab
- Parent:
- 5:016a7315b75d
Final Modification
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| RexRoshan | 0:99fa5a619081 | 1 | #include "Spacecraft.h" |
| RexRoshan | 0:99fa5a619081 | 2 | |
| RexRoshan | 0:99fa5a619081 | 3 | // nothing doing in the constructor and destructor |
| RexRoshan | 0:99fa5a619081 | 4 | Spacecraft::Spacecraft() |
| RexRoshan | 0:99fa5a619081 | 5 | { |
| RexRoshan | 0:99fa5a619081 | 6 | |
| RexRoshan | 0:99fa5a619081 | 7 | } |
| RexRoshan | 0:99fa5a619081 | 8 | |
| RexRoshan | 0:99fa5a619081 | 9 | Spacecraft::~Spacecraft() |
| RexRoshan | 0:99fa5a619081 | 10 | { |
| RexRoshan | 0:99fa5a619081 | 11 | |
| RexRoshan | 0:99fa5a619081 | 12 | } |
| RexRoshan | 0:99fa5a619081 | 13 | |
| RexRoshan | 5:016a7315b75d | 14 | // sprite of the player spacecraft |
| RexRoshan | 0:99fa5a619081 | 15 | int H_spacecraft [11][11] = { |
| RexRoshan | 0:99fa5a619081 | 16 | |
| RexRoshan | 0:99fa5a619081 | 17 | { 0,0,1,0,0,1,0,0,0,0,0 }, |
| RexRoshan | 0:99fa5a619081 | 18 | { 0,1,1,1,1,1,1,0,0,0,0 }, |
| RexRoshan | 0:99fa5a619081 | 19 | { 0,0,1,0,0,1,0,0,0,0,0 }, |
| RexRoshan | 0:99fa5a619081 | 20 | { 0,0,0,1,0,0,1,0,0,0,0 }, |
| RexRoshan | 0:99fa5a619081 | 21 | { 0,1,1,0,0,0,0,1,1,0,0 }, |
| RexRoshan | 0:99fa5a619081 | 22 | { 1,1,1,1,1,1,1,1,1,1,1 }, |
| RexRoshan | 0:99fa5a619081 | 23 | { 0,1,1,1,1,1,1,1,1,0,0 }, |
| RexRoshan | 0:99fa5a619081 | 24 | { 0,0,0,1,1,1,1,0,0,0,0 }, |
| RexRoshan | 0:99fa5a619081 | 25 | { 0,0,1,1,1,1,0,0,0,0,0 }, |
| RexRoshan | 0:99fa5a619081 | 26 | { 0,1,1,1,1,1,1,0,0,0,0 }, |
| RexRoshan | 0:99fa5a619081 | 27 | { 0,0,1,0,0,1,0,0,0,0,0 }, |
| RexRoshan | 0:99fa5a619081 | 28 | |
| RexRoshan | 0:99fa5a619081 | 29 | |
| RexRoshan | 2:b5c1bb7a39de | 30 | }; |
| RexRoshan | 0:99fa5a619081 | 31 | |
| RexRoshan | 5:016a7315b75d | 32 | void Spacecraft::init(int x,int y) // initialise the x and y position |
| RexRoshan | 0:99fa5a619081 | 33 | { |
| RexRoshan | 2:b5c1bb7a39de | 34 | _x = x; // default x position |
| RexRoshan | 2:b5c1bb7a39de | 35 | _y = y; // default y position |
| RexRoshan | 0:99fa5a619081 | 36 | _speed = 1; // default speed |
| RexRoshan | 0:99fa5a619081 | 37 | _health = 0; // start health from zero |
| RexRoshan | 0:99fa5a619081 | 38 | |
| RexRoshan | 0:99fa5a619081 | 39 | } |
| RexRoshan | 0:99fa5a619081 | 40 | |
| RexRoshan | 0:99fa5a619081 | 41 | void Spacecraft::character(N5110 &lcd) |
| RexRoshan | 0:99fa5a619081 | 42 | { |
| RexRoshan | 2:b5c1bb7a39de | 43 | // draw the player's spacecraft in screen buffer. |
| RexRoshan | 0:99fa5a619081 | 44 | lcd.drawSprite(_x,_y,11,11,(int *)H_spacecraft); |
| RexRoshan | 0:99fa5a619081 | 45 | } |
| RexRoshan | 0:99fa5a619081 | 46 | |
| RexRoshan | 0:99fa5a619081 | 47 | |
| RexRoshan | 0:99fa5a619081 | 48 | void Spacecraft::update(Direction d,float mag) |
| RexRoshan | 0:99fa5a619081 | 49 | { |
| RexRoshan | 0:99fa5a619081 | 50 | _speed = int(mag*5.0f); // scale is arbitrary, could be changed in future |
| RexRoshan | 0:99fa5a619081 | 51 | |
| RexRoshan | 5:016a7315b75d | 52 | // update x and y value depending on the direction of the movement |
| RexRoshan | 0:99fa5a619081 | 53 | // North is decrement as origin is at the top-left so decreasing moves up |
| RexRoshan | 5:016a7315b75d | 54 | // East is increment and West is decrement |
| RexRoshan | 0:99fa5a619081 | 55 | if (d == N) { |
| RexRoshan | 0:99fa5a619081 | 56 | _y-=_speed; |
| RexRoshan | 0:99fa5a619081 | 57 | } else if (d == S) { |
| RexRoshan | 0:99fa5a619081 | 58 | _y+=_speed; |
| RexRoshan | 0:99fa5a619081 | 59 | } else if (d == E) { |
| RexRoshan | 0:99fa5a619081 | 60 | _x+=_speed; |
| RexRoshan | 0:99fa5a619081 | 61 | } else if (d == W) { |
| RexRoshan | 0:99fa5a619081 | 62 | _x-=_speed; |
| RexRoshan | 0:99fa5a619081 | 63 | } else if (d == NE) { |
| RexRoshan | 0:99fa5a619081 | 64 | _y-=_speed; |
| RexRoshan | 0:99fa5a619081 | 65 | _x+=_speed; |
| RexRoshan | 0:99fa5a619081 | 66 | } else if (d == SE) { |
| RexRoshan | 0:99fa5a619081 | 67 | _y+=_speed; |
| RexRoshan | 0:99fa5a619081 | 68 | _x+=_speed; |
| RexRoshan | 0:99fa5a619081 | 69 | } else if (d == NW) { |
| RexRoshan | 0:99fa5a619081 | 70 | _y-=_speed; |
| RexRoshan | 0:99fa5a619081 | 71 | _x-=_speed; |
| RexRoshan | 0:99fa5a619081 | 72 | } else if (d == SW) { |
| RexRoshan | 0:99fa5a619081 | 73 | _y+=_speed; |
| RexRoshan | 0:99fa5a619081 | 74 | _x-=_speed; |
| RexRoshan | 0:99fa5a619081 | 75 | } |
| RexRoshan | 0:99fa5a619081 | 76 | // check the y origin to ensure that the spacecraft doesn't go off screen |
| RexRoshan | 0:99fa5a619081 | 77 | if (_y < 1) { |
| RexRoshan | 0:99fa5a619081 | 78 | _y = 1; |
| RexRoshan | 0:99fa5a619081 | 79 | } |
| RexRoshan | 0:99fa5a619081 | 80 | if (_x < 1) { |
| RexRoshan | 0:99fa5a619081 | 81 | _x = 1; |
| RexRoshan | 0:99fa5a619081 | 82 | } |
| RexRoshan | 0:99fa5a619081 | 83 | if (_y > HEIGHT - 12) { |
| RexRoshan | 0:99fa5a619081 | 84 | _y = HEIGHT - 12; |
| RexRoshan | 0:99fa5a619081 | 85 | } |
| RexRoshan | 0:99fa5a619081 | 86 | if (_x > WIDTH - 13) { |
| RexRoshan | 0:99fa5a619081 | 87 | _x = WIDTH - 13; |
| RexRoshan | 0:99fa5a619081 | 88 | } |
| RexRoshan | 0:99fa5a619081 | 89 | } |
| RexRoshan | 0:99fa5a619081 | 90 | |
| RexRoshan | 5:016a7315b75d | 91 | void Spacecraft::update_move() // moves south when the spacecraft dies |
| RexRoshan | 0:99fa5a619081 | 92 | { |
| RexRoshan | 0:99fa5a619081 | 93 | _increment = 5.0; |
| RexRoshan | 0:99fa5a619081 | 94 | |
| RexRoshan | 0:99fa5a619081 | 95 | _y+=_increment; |
| RexRoshan | 0:99fa5a619081 | 96 | } |
| RexRoshan | 0:99fa5a619081 | 97 | |
| RexRoshan | 0:99fa5a619081 | 98 | void Spacecraft::add_health() |
| RexRoshan | 0:99fa5a619081 | 99 | { |
| RexRoshan | 5:016a7315b75d | 100 | _health++; // Adds health |
| RexRoshan | 0:99fa5a619081 | 101 | } |
| RexRoshan | 0:99fa5a619081 | 102 | int Spacecraft::get_health() |
| RexRoshan | 0:99fa5a619081 | 103 | { |
| RexRoshan | 5:016a7315b75d | 104 | return _health; // Gets the value of health |
| RexRoshan | 0:99fa5a619081 | 105 | } |
| RexRoshan | 0:99fa5a619081 | 106 | |
| RexRoshan | 5:016a7315b75d | 107 | Vector2D Spacecraft::get_pos() |
| RexRoshan | 5:016a7315b75d | 108 | { |
| RexRoshan | 5:016a7315b75d | 109 | // Gets the position of the spacecraft |
| RexRoshan | 0:99fa5a619081 | 110 | Vector2D p = {_x,_y}; |
| RexRoshan | 0:99fa5a619081 | 111 | return p; |
| RexRoshan | 0:99fa5a619081 | 112 | } |