ELEC2645 (2018/19) / Mbed 2 deprecated el17aio

Dependencies:   mbed

Committer:
ikenna1
Date:
Tue Apr 09 11:21:18 2019 +0000
Revision:
11:73cd744ffa80
Parent:
9:241a1a7d8527
Child:
12:47578eb9ea73
Starting to add new ship imperion

Who changed what in which revision?

UserRevisionLine numberNew 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 6:8473dacbeb65 11 // data needed for first ship: basic
ikenna1 5:bb6edc5b5be3 12 const int basic[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 11:73cd744ffa80 20 const int imperion[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 11:73cd744ffa80 30 {0,0,0,1,0,0,0},
ikenna1 11:73cd744ffa80 31 };
ikenna1 6:8473dacbeb65 32 /*
ikenna1 5:bb6edc5b5be3 33 int basic_width = 9;
ikenna1 5:bb6edc5b5be3 34 int basic_height = 6;
ikenna1 5:bb6edc5b5be3 35 int basic_speed = 5;
ikenna1 5:bb6edc5b5be3 36 */
ikenna1 5:bb6edc5b5be3 37
ikenna1 5:bb6edc5b5be3 38 // Set basic ship to be default
ikenna1 9:241a1a7d8527 39 void Ship::init(int ship_width,int ship_height,int ship_speed,int ship_xpos,int ship_ypos)
ikenna1 5:bb6edc5b5be3 40 {
ikenna1 5:bb6edc5b5be3 41 _ship_width = ship_width;
ikenna1 5:bb6edc5b5be3 42 _ship_height = ship_height;
ikenna1 9:241a1a7d8527 43 _ship_speed = ship_speed;
ikenna1 5:bb6edc5b5be3 44 _ship_xpos = ship_xpos;
ikenna1 5:bb6edc5b5be3 45 _ship_xpos = ship_ypos;
ikenna1 6:8473dacbeb65 46 // _ship_shape[_ship_height][_ship_width] = ship_shape;
ikenna1 5:bb6edc5b5be3 47 }
ikenna1 5:bb6edc5b5be3 48 // Draw the ship ***Note: figure out how to change ship type e.g from basic to devotion
ikenna1 6:8473dacbeb65 49 void Ship::draw_ship(N5110 &lcd)
ikenna1 5:bb6edc5b5be3 50 {
ikenna1 5:bb6edc5b5be3 51 lcd.drawSprite(_ship_xpos,_ship_ypos,6,9,(int *)basic);
ikenna1 5:bb6edc5b5be3 52 }
ikenna1 11:73cd744ffa80 53 void Ship::draw_imperion(N5110 &lcd)
ikenna1 11:73cd744ffa80 54 {
ikenna1 11:73cd744ffa80 55 lcd.drawSprite(_ship_xpos,_ship_ypos,10,7,(int *)imperion);
ikenna1 11:73cd744ffa80 56 }
ikenna1 5:bb6edc5b5be3 57
ikenna1 9:241a1a7d8527 58 void Ship::update_ship(float x_joystick,float y_joystick)
ikenna1 9:241a1a7d8527 59 { // Only change position if joystick is reasonably moved
ikenna1 5:bb6edc5b5be3 60 if(-0.25 > x_joystick || x_joystick > 0.25 || -0.25 > y_joystick || y_joystick > 0.25) {
ikenna1 9:241a1a7d8527 61
ikenna1 9:241a1a7d8527 62 // Update positions using joystick and the intended ships speed
ikenna1 9:241a1a7d8527 63 _ship_xpos = _ship_xpos + (x_joystick*_ship_speed);
ikenna1 9:241a1a7d8527 64 _ship_ypos = _ship_ypos - (y_joystick*_ship_speed);
ikenna1 9:241a1a7d8527 65
ikenna1 5:bb6edc5b5be3 66 // Dont let sprite move out of screen
ikenna1 9:241a1a7d8527 67 if(_ship_xpos < 0) {
ikenna1 9:241a1a7d8527 68 _ship_xpos = 0;
ikenna1 9:241a1a7d8527 69 }
ikenna1 9:241a1a7d8527 70 if(_ship_xpos > (84 - (_ship_width))) {
ikenna1 9:241a1a7d8527 71 _ship_xpos = 84 - _ship_width;
ikenna1 9:241a1a7d8527 72 }
ikenna1 9:241a1a7d8527 73 if(_ship_ypos < 0) {
ikenna1 9:241a1a7d8527 74 _ship_ypos = 0;
ikenna1 9:241a1a7d8527 75 }
ikenna1 9:241a1a7d8527 76 if(_ship_ypos > (48 - (_ship_height))) {
ikenna1 9:241a1a7d8527 77 _ship_ypos = 48 - _ship_height;
ikenna1 5:bb6edc5b5be3 78 }
ikenna1 5:bb6edc5b5be3 79
ikenna1 5:bb6edc5b5be3 80 }
ikenna1 9:241a1a7d8527 81 // printf("y_joysticzk = %f\n",y_joystick);
ikenna1 9:241a1a7d8527 82 // printf("x_joystick = %f\n",x_joystick);
ikenna1 5:bb6edc5b5be3 83 }
ikenna1 5:bb6edc5b5be3 84 // returns the current ship position on screen as a vector
ikenna1 6:8473dacbeb65 85 Vector2D Ship::get_pos()
ikenna1 5:bb6edc5b5be3 86 {
ikenna1 5:bb6edc5b5be3 87 Vector2D ship_pos = {_ship_xpos,_ship_ypos};
ikenna1 5:bb6edc5b5be3 88 return ship_pos;
ikenna1 5:bb6edc5b5be3 89 }
ikenna1 5:bb6edc5b5be3 90
ikenna1 11:73cd744ffa80 91 void Ship::set_ship(int ship_width, int ship height, int ship_xpos, int ship_ypos)
ikenna1 11:73cd744ffa80 92 {
ikenna1 11:73cd744ffa80 93 _ship_width = ship_width;
ikenna1 11:73cd744ffa80 94 _ship_height = ship_height;
ikenna1 11:73cd744ffa80 95 _ship_xpos = ship_xpos;
ikenna1 11:73cd744ffa80 96 _ship_xpos = ship_ypos;
ikenna1 11:73cd744ffa80 97
ikenna1 11:73cd744ffa80 98 }
ikenna1 11:73cd744ffa80 99
ikenna1 5:bb6edc5b5be3 100 /****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 101 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 6:8473dacbeb65 102 the ship is correct and create an if function to draw the appropriate ship
ikenna1 6:8473dacbeb65 103 */