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
Ship/Ship.cpp@51:2231e2e141b9, 2019-05-09 (annotated)
- Committer:
- ikenna1
- Date:
- Thu May 09 08:42:25 2019 +0000
- Revision:
- 51:2231e2e141b9
- Parent:
- 45:fe5fc85a5c73
Documentation test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ikenna1 | 5:bb6edc5b5be3 | 1 | #include "Ship.h" |
ikenna1 | 5:bb6edc5b5be3 | 2 | Ship::Ship() |
ikenna1 | 5:bb6edc5b5be3 | 3 | { |
ikenna1 | 5:bb6edc5b5be3 | 4 | |
ikenna1 | 5:bb6edc5b5be3 | 5 | } |
ikenna1 | 5:bb6edc5b5be3 | 6 | |
ikenna1 | 5:bb6edc5b5be3 | 7 | Ship::~Ship() |
ikenna1 | 5:bb6edc5b5be3 | 8 | { |
ikenna1 | 5:bb6edc5b5be3 | 9 | |
ikenna1 | 5:bb6edc5b5be3 | 10 | } |
ikenna1 | 51:2231e2e141b9 | 11 | // Sprites for the ships |
ikenna1 | 43:500b8cff3715 | 12 | const int kestrelSprite[6][9] = { |
ikenna1 | 5:bb6edc5b5be3 | 13 | { 0,0,0,0,1,0,0,0,0 }, |
ikenna1 | 5:bb6edc5b5be3 | 14 | { 0,0,0,1,1,1,0,0,0 }, |
ikenna1 | 5:bb6edc5b5be3 | 15 | { 0,0,1,1,0,1,1,0,0 }, |
ikenna1 | 5:bb6edc5b5be3 | 16 | { 0,0,1,1,0,1,1,0,0 }, |
ikenna1 | 5:bb6edc5b5be3 | 17 | { 1,0,1,1,0,1,1,0,1 }, |
ikenna1 | 5:bb6edc5b5be3 | 18 | { 0,1,1,1,1,1,1,1,0 }, |
ikenna1 | 5:bb6edc5b5be3 | 19 | }; |
ikenna1 | 43:500b8cff3715 | 20 | const int imperionSprite[10][7] = { |
ikenna1 | 11:73cd744ffa80 | 21 | {0,1,0,0,0,1,0}, |
ikenna1 | 11:73cd744ffa80 | 22 | {0,1,0,0,0,1,0}, |
ikenna1 | 11:73cd744ffa80 | 23 | {1,1,0,0,0,1,1}, |
ikenna1 | 11:73cd744ffa80 | 24 | {0,1,0,0,0,1,0}, |
ikenna1 | 11:73cd744ffa80 | 25 | {0,1,0,0,0,1,0}, |
ikenna1 | 11:73cd744ffa80 | 26 | {0,1,0,0,0,1,0}, |
ikenna1 | 11:73cd744ffa80 | 27 | {0,1,1,0,1,1,0}, |
ikenna1 | 11:73cd744ffa80 | 28 | {1,0,0,1,0,0,1}, |
ikenna1 | 11:73cd744ffa80 | 29 | {0,0,1,0,1,0,0}, |
ikenna1 | 26:a53d41adf40b | 30 | {0,0,0,1,0,0,0}, |
ikenna1 | 26:a53d41adf40b | 31 | }; |
ikenna1 | 43:500b8cff3715 | 32 | const int orionSprite[10][7] = { |
ikenna1 | 26:a53d41adf40b | 33 | {0,0,0,1,0,0,0}, |
ikenna1 | 26:a53d41adf40b | 34 | {0,0,1,0,1,0,0}, |
ikenna1 | 26:a53d41adf40b | 35 | {0,1,0,0,0,1,0}, |
ikenna1 | 26:a53d41adf40b | 36 | {1,0,0,1,0,0,1}, |
ikenna1 | 26:a53d41adf40b | 37 | {0,1,0,0,0,1,0}, |
ikenna1 | 26:a53d41adf40b | 38 | {0,0,1,0,1,0,0}, |
ikenna1 | 26:a53d41adf40b | 39 | {1,0,0,1,0,0,1}, |
ikenna1 | 26:a53d41adf40b | 40 | {1,0,1,0,1,0,1}, |
ikenna1 | 26:a53d41adf40b | 41 | {1,1,0,0,0,1,1}, |
ikenna1 | 26:a53d41adf40b | 42 | {1,0,0,0,0,0,1}, |
ikenna1 | 26:a53d41adf40b | 43 | |
ikenna1 | 11:73cd744ffa80 | 44 | }; |
ikenna1 | 51:2231e2e141b9 | 45 | |
ikenna1 | 5:bb6edc5b5be3 | 46 | |
ikenna1 | 51:2231e2e141b9 | 47 | |
ikenna1 | 9:241a1a7d8527 | 48 | void Ship::init(int ship_width,int ship_height,int ship_speed,int ship_xpos,int ship_ypos) |
ikenna1 | 5:bb6edc5b5be3 | 49 | { |
ikenna1 | 51:2231e2e141b9 | 50 | // initialize the ships parameters |
ikenna1 | 5:bb6edc5b5be3 | 51 | _ship_width = ship_width; |
ikenna1 | 5:bb6edc5b5be3 | 52 | _ship_height = ship_height; |
ikenna1 | 9:241a1a7d8527 | 53 | _ship_speed = ship_speed; |
ikenna1 | 5:bb6edc5b5be3 | 54 | _ship_xpos = ship_xpos; |
ikenna1 | 5:bb6edc5b5be3 | 55 | _ship_xpos = ship_ypos; |
ikenna1 | 5:bb6edc5b5be3 | 56 | } |
ikenna1 | 51:2231e2e141b9 | 57 | |
ikenna1 | 43:500b8cff3715 | 58 | void Ship::draw_ship(N5110 &lcd, SHIP shipUsed) |
ikenna1 | 5:bb6edc5b5be3 | 59 | { |
ikenna1 | 51:2231e2e141b9 | 60 | // Switch ship sprite based on what ship is being used |
ikenna1 | 43:500b8cff3715 | 61 | switch (shipUsed) { |
ikenna1 | 43:500b8cff3715 | 62 | case kestrel: |
ikenna1 | 43:500b8cff3715 | 63 | lcd.drawSprite(_ship_xpos,_ship_ypos,6,9,(int *)kestrelSprite); |
ikenna1 | 43:500b8cff3715 | 64 | break; |
ikenna1 | 43:500b8cff3715 | 65 | case imperion: |
ikenna1 | 43:500b8cff3715 | 66 | lcd.drawSprite(_ship_xpos,_ship_ypos,10,7,(int *)imperionSprite); |
ikenna1 | 43:500b8cff3715 | 67 | break; |
ikenna1 | 43:500b8cff3715 | 68 | case orion: |
ikenna1 | 43:500b8cff3715 | 69 | lcd.drawSprite(_ship_xpos,_ship_ypos,10,7,(int *)orionSprite); |
ikenna1 | 43:500b8cff3715 | 70 | break; |
ikenna1 | 43:500b8cff3715 | 71 | } |
ikenna1 | 11:73cd744ffa80 | 72 | } |
ikenna1 | 5:bb6edc5b5be3 | 73 | |
ikenna1 | 9:241a1a7d8527 | 74 | void Ship::update_ship(float x_joystick,float y_joystick) |
ikenna1 | 26:a53d41adf40b | 75 | { |
ikenna1 | 31:c7bd3ed16840 | 76 | int border = 1; |
ikenna1 | 26:a53d41adf40b | 77 | // Only change position if joystick is reasonably moved |
ikenna1 | 5:bb6edc5b5be3 | 78 | if(-0.25 > x_joystick || x_joystick > 0.25 || -0.25 > y_joystick || y_joystick > 0.25) { |
ikenna1 | 9:241a1a7d8527 | 79 | // Update positions using joystick and the intended ships speed |
ikenna1 | 9:241a1a7d8527 | 80 | _ship_xpos = _ship_xpos + (x_joystick*_ship_speed); |
ikenna1 | 9:241a1a7d8527 | 81 | _ship_ypos = _ship_ypos - (y_joystick*_ship_speed); |
ikenna1 | 9:241a1a7d8527 | 82 | |
ikenna1 | 5:bb6edc5b5be3 | 83 | // Dont let sprite move out of screen |
ikenna1 | 31:c7bd3ed16840 | 84 | if(_ship_xpos < border) { |
ikenna1 | 31:c7bd3ed16840 | 85 | _ship_xpos = border; |
ikenna1 | 9:241a1a7d8527 | 86 | } |
ikenna1 | 31:c7bd3ed16840 | 87 | if(_ship_xpos > (84 - (_ship_width)- 7)) { |
ikenna1 | 31:c7bd3ed16840 | 88 | _ship_xpos = 84 - _ship_width - 7; |
ikenna1 | 9:241a1a7d8527 | 89 | } |
ikenna1 | 31:c7bd3ed16840 | 90 | if(_ship_ypos < border) { |
ikenna1 | 31:c7bd3ed16840 | 91 | _ship_ypos = border; |
ikenna1 | 9:241a1a7d8527 | 92 | } |
ikenna1 | 31:c7bd3ed16840 | 93 | if(_ship_ypos > (48 - (_ship_height) - border)) { |
ikenna1 | 31:c7bd3ed16840 | 94 | _ship_ypos = 48 - _ship_height - border; |
ikenna1 | 5:bb6edc5b5be3 | 95 | } |
ikenna1 | 5:bb6edc5b5be3 | 96 | } |
ikenna1 | 9:241a1a7d8527 | 97 | // printf("y_joysticzk = %f\n",y_joystick); |
ikenna1 | 9:241a1a7d8527 | 98 | // printf("x_joystick = %f\n",x_joystick); |
ikenna1 | 5:bb6edc5b5be3 | 99 | } |
ikenna1 | 5:bb6edc5b5be3 | 100 | // returns the current ship position on screen as a vector |
ikenna1 | 6:8473dacbeb65 | 101 | Vector2D Ship::get_pos() |
ikenna1 | 5:bb6edc5b5be3 | 102 | { |
ikenna1 | 5:bb6edc5b5be3 | 103 | Vector2D ship_pos = {_ship_xpos,_ship_ypos}; |
ikenna1 | 5:bb6edc5b5be3 | 104 | return ship_pos; |
ikenna1 | 5:bb6edc5b5be3 | 105 | } |
ikenna1 | 5:bb6edc5b5be3 | 106 | |
ikenna1 | 45:fe5fc85a5c73 | 107 | void Ship::set_parameters(int ship_width, int ship_height, int ship_speed) |
ikenna1 | 11:73cd744ffa80 | 108 | { |
ikenna1 | 51:2231e2e141b9 | 109 | // set ship height, width and speed |
ikenna1 | 11:73cd744ffa80 | 110 | _ship_width = ship_width; |
ikenna1 | 11:73cd744ffa80 | 111 | _ship_height = ship_height; |
ikenna1 | 45:fe5fc85a5c73 | 112 | _ship_speed = ship_speed; |
ikenna1 | 11:73cd744ffa80 | 113 | } |