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@5:bb6edc5b5be3, 2019-03-05 (annotated)
- Committer:
- ikenna1
- Date:
- Tue Mar 05 07:08:57 2019 +0000
- Revision:
- 5:bb6edc5b5be3
- Child:
- 6:8473dacbeb65
Accidentally saved it to 2645_sprite_motion last time. Also changes it a bit the init function now needs to have values inputted to i think the best course of action would be to create a menu folder to handle the different ships and the title screen
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 | |
ikenna1 | 5:bb6edc5b5be3 | 3 | Ship::Ship() |
ikenna1 | 5:bb6edc5b5be3 | 4 | { |
ikenna1 | 5:bb6edc5b5be3 | 5 | |
ikenna1 | 5:bb6edc5b5be3 | 6 | } |
ikenna1 | 5:bb6edc5b5be3 | 7 | |
ikenna1 | 5:bb6edc5b5be3 | 8 | Ship::~Ship() |
ikenna1 | 5:bb6edc5b5be3 | 9 | { |
ikenna1 | 5:bb6edc5b5be3 | 10 | |
ikenna1 | 5:bb6edc5b5be3 | 11 | } |
ikenna1 | 5:bb6edc5b5be3 | 12 | /* data needed for first ship: basic |
ikenna1 | 5:bb6edc5b5be3 | 13 | const int basic[6][9] = { |
ikenna1 | 5:bb6edc5b5be3 | 14 | { 0,0,0,0,1,0,0,0,0 }, |
ikenna1 | 5:bb6edc5b5be3 | 15 | { 0,0,0,1,1,1,0,0,0 }, |
ikenna1 | 5:bb6edc5b5be3 | 16 | { 0,0,1,1,0,1,1,0,0 }, |
ikenna1 | 5:bb6edc5b5be3 | 17 | { 0,0,1,1,0,1,1,0,0 }, |
ikenna1 | 5:bb6edc5b5be3 | 18 | { 1,0,1,1,0,1,1,0,1 }, |
ikenna1 | 5:bb6edc5b5be3 | 19 | { 0,1,1,1,1,1,1,1,0 }, |
ikenna1 | 5:bb6edc5b5be3 | 20 | }; |
ikenna1 | 5:bb6edc5b5be3 | 21 | int basic_width = 9; |
ikenna1 | 5:bb6edc5b5be3 | 22 | int basic_height = 6; |
ikenna1 | 5:bb6edc5b5be3 | 23 | int basic_speed = 5; |
ikenna1 | 5:bb6edc5b5be3 | 24 | */ |
ikenna1 | 5:bb6edc5b5be3 | 25 | |
ikenna1 | 5:bb6edc5b5be3 | 26 | // Set basic ship to be default |
ikenna1 | 5:bb6edc5b5be3 | 27 | void ship::init(int ship_speed,int ship_width,int ship_height,int ship_xpos,int ship_ypos,const int ship_shape) |
ikenna1 | 5:bb6edc5b5be3 | 28 | { |
ikenna1 | 5:bb6edc5b5be3 | 29 | _ship_speed = ship_speed; |
ikenna1 | 5:bb6edc5b5be3 | 30 | _ship_width = ship_width; |
ikenna1 | 5:bb6edc5b5be3 | 31 | _ship_height = ship_height; |
ikenna1 | 5:bb6edc5b5be3 | 32 | _ship_xpos = ship_xpos; |
ikenna1 | 5:bb6edc5b5be3 | 33 | _ship_xpos = ship_ypos; |
ikenna1 | 5:bb6edc5b5be3 | 34 | _ship_shape[_ship_height][_ship_width] = ship_shape; |
ikenna1 | 5:bb6edc5b5be3 | 35 | } |
ikenna1 | 5:bb6edc5b5be3 | 36 | // Draw the ship ***Note: figure out how to change ship type e.g from basic to devotion |
ikenna1 | 5:bb6edc5b5be3 | 37 | void ship::draw_ship(N5110 &lcd) |
ikenna1 | 5:bb6edc5b5be3 | 38 | { |
ikenna1 | 5:bb6edc5b5be3 | 39 | lcd.drawSprite(_ship_xpos,_ship_ypos,6,9,(int *)basic); |
ikenna1 | 5:bb6edc5b5be3 | 40 | } |
ikenna1 | 5:bb6edc5b5be3 | 41 | |
ikenna1 | 5:bb6edc5b5be3 | 42 | void ship::update_ship(int x_joystick,int y_joystick) |
ikenna1 | 5:bb6edc5b5be3 | 43 | { |
ikenna1 | 5:bb6edc5b5be3 | 44 | // Do not move sprite until joystick is moved reasonably |
ikenna1 | 5:bb6edc5b5be3 | 45 | if(-0.25 > x_joystick || x_joystick > 0.25 || -0.25 > y_joystick || y_joystick > 0.25) { |
ikenna1 | 5:bb6edc5b5be3 | 46 | // Dont let sprite move out of screen |
ikenna1 | 5:bb6edc5b5be3 | 47 | if(_ship_xpos > (84 - (1.5 * ship_width))) { |
ikenna1 | 5:bb6edc5b5be3 | 48 | if(x_joystick < -0.25) { |
ikenna1 | 5:bb6edc5b5be3 | 49 | _ship_xpos = _ship_xpos + (x_joystick*ship_speed); |
ikenna1 | 5:bb6edc5b5be3 | 50 | } |
ikenna1 | 5:bb6edc5b5be3 | 51 | } else if(_ship_xpos < (0.5 *ship_width)) { |
ikenna1 | 5:bb6edc5b5be3 | 52 | if(x_joystick > 0.25) { |
ikenna1 | 5:bb6edc5b5be3 | 53 | _ship_xpos = _ship_xpos + (x_joystick*ship_speed); |
ikenna1 | 5:bb6edc5b5be3 | 54 | } |
ikenna1 | 5:bb6edc5b5be3 | 55 | } else { |
ikenna1 | 5:bb6edc5b5be3 | 56 | _ship_xpos = _ship_xpos + (x_joystick*ship_speed); |
ikenna1 | 5:bb6edc5b5be3 | 57 | } |
ikenna1 | 5:bb6edc5b5be3 | 58 | |
ikenna1 | 5:bb6edc5b5be3 | 59 | if(_ship_ypos > 1) { |
ikenna1 | 5:bb6edc5b5be3 | 60 | if(y_joystick > 0.25) { |
ikenna1 | 5:bb6edc5b5be3 | 61 | _ship_ypos = _ship_ypos - (y_joystick*ship_speed); |
ikenna1 | 5:bb6edc5b5be3 | 62 | } |
ikenna1 | 5:bb6edc5b5be3 | 63 | } |
ikenna1 | 5:bb6edc5b5be3 | 64 | if(_ship_ypos < (48 - ship_height)) { |
ikenna1 | 5:bb6edc5b5be3 | 65 | if(y_joystick < -0.25) { |
ikenna1 | 5:bb6edc5b5be3 | 66 | _ship_ypos = _ship_ypos - (y_joystick*ship_speed); |
ikenna1 | 5:bb6edc5b5be3 | 67 | } |
ikenna1 | 5:bb6edc5b5be3 | 68 | } |
ikenna1 | 5:bb6edc5b5be3 | 69 | } |
ikenna1 | 5:bb6edc5b5be3 | 70 | } |
ikenna1 | 5:bb6edc5b5be3 | 71 | // returns the current ship position on screen as a vector |
ikenna1 | 5:bb6edc5b5be3 | 72 | Vector2D ship::get_pos() |
ikenna1 | 5:bb6edc5b5be3 | 73 | { |
ikenna1 | 5:bb6edc5b5be3 | 74 | Vector2D ship_pos = {_ship_xpos,_ship_ypos}; |
ikenna1 | 5:bb6edc5b5be3 | 75 | return ship_pos; |
ikenna1 | 5:bb6edc5b5be3 | 76 | } |
ikenna1 | 5:bb6edc5b5be3 | 77 | |
ikenna1 | 5:bb6edc5b5be3 | 78 | /****Note: if you make all the ships the same size, you could then creare a enum for them ship.[ enum class Ship {basic, devotion}; ] |
ikenna1 | 5:bb6edc5b5be3 | 79 | then, you can declare a new variable belonging to the enum Ship, ship. then to set a ships sprite simply use the variable to test if |
ikenna1 | 5:bb6edc5b5be3 | 80 | the ship is correct and create an if function to draw the appropriate ship |