ELEC2645 (2018/19) / Mbed 2 deprecated el17aio

Dependencies:   mbed

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?

UserRevisionLine numberNew 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