ELEC2645 (2018/19) / Mbed 2 deprecated el17aio

Dependencies:   mbed

Revision:
5:bb6edc5b5be3
Child:
6:8473dacbeb65
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Ship/Ship.cpp	Tue Mar 05 07:08:57 2019 +0000
@@ -0,0 +1,80 @@
+#include "Ship.h"
+
+Ship::Ship()
+{
+
+}
+
+Ship::~Ship()
+{
+
+}
+/* data needed for first ship: basic
+const int basic[6][9] =   {
+    { 0,0,0,0,1,0,0,0,0 },
+    { 0,0,0,1,1,1,0,0,0 },
+    { 0,0,1,1,0,1,1,0,0 },
+    { 0,0,1,1,0,1,1,0,0 },
+    { 1,0,1,1,0,1,1,0,1 },
+    { 0,1,1,1,1,1,1,1,0 },
+};
+int basic_width = 9;
+int basic_height = 6;
+int basic_speed = 5;
+*/
+
+// Set basic ship to be default
+void ship::init(int ship_speed,int ship_width,int ship_height,int ship_xpos,int ship_ypos,const int ship_shape)
+{
+    _ship_speed = ship_speed;
+    _ship_width = ship_width;
+    _ship_height = ship_height;
+    _ship_xpos = ship_xpos;
+    _ship_xpos = ship_ypos;
+    _ship_shape[_ship_height][_ship_width] = ship_shape;
+}
+// Draw the ship ***Note: figure out how to change ship type e.g from basic to devotion
+void ship::draw_ship(N5110 &lcd)
+{
+    lcd.drawSprite(_ship_xpos,_ship_ypos,6,9,(int *)basic);
+}
+
+void ship::update_ship(int x_joystick,int y_joystick)
+{
+    // Do not move sprite until joystick is moved reasonably
+    if(-0.25 > x_joystick || x_joystick > 0.25 || -0.25 > y_joystick || y_joystick > 0.25) {
+        // Dont let sprite move out of screen
+        if(_ship_xpos > (84 - (1.5 * ship_width))) {
+            if(x_joystick < -0.25) {
+                _ship_xpos = _ship_xpos + (x_joystick*ship_speed);
+            }
+        } else if(_ship_xpos < (0.5 *ship_width)) {
+            if(x_joystick > 0.25) {
+                _ship_xpos = _ship_xpos + (x_joystick*ship_speed);
+            }
+        } else {
+            _ship_xpos = _ship_xpos + (x_joystick*ship_speed);
+        }
+
+        if(_ship_ypos > 1) {
+            if(y_joystick > 0.25) {
+                _ship_ypos = _ship_ypos - (y_joystick*ship_speed);
+            }
+        }
+        if(_ship_ypos < (48 - ship_height)) {
+            if(y_joystick < -0.25) {
+                _ship_ypos = _ship_ypos - (y_joystick*ship_speed);
+            }
+        }
+    }
+}
+// returns the current ship position on screen as a vector
+Vector2D ship::get_pos()
+{
+    Vector2D ship_pos = {_ship_xpos,_ship_ypos};
+    return ship_pos;
+}
+
+/****Note: if you make all the ships the same size, you could then creare a enum for them ship.[ enum class Ship {basic, devotion}; ]
+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
+the ship is correct and create an if function to draw the appropriate ship
\ No newline at end of file