Arturs Kozlovskis / Mbed 2 deprecated ELEC2645_Project_el18ak

Dependencies:   mbed

Revision:
6:33bdb54c2c88
Child:
7:82079de8bcd6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/My_game_clases/Objects.cpp	Wed Apr 01 11:20:24 2020 +0000
@@ -0,0 +1,78 @@
+//includes
+#include "Objects.h"
+#include "Gamepad.h"
+#include "N5110.h"
+#include "mbed.h"
+
+int _cannon[6][6] = {
+    { 0,0,1,1,0,0 },
+    { 0,0,1,1,0,0 },
+    { 0,1,1,1,1,0 },
+    { 0,1,1,1,1,0 },
+    { 1,1,1,1,1,1 },
+    { 1,1,1,1,1,1 },
+};
+
+Objects::Objects()
+{
+    _cannon_pos = 0; //sets the speed counter to 0
+    _initial_shot_pos = 37;// sets the vertical position of the shot which is one above the cannon
+    _shot_incrementer = 2;
+    _shot_y_pos.push_back(_initial_shot_pos);
+    _shot_x_pos.push_back(_cannon_pos + 2);
+    _radiuss = 2;
+};
+
+void Objects::draw_base(N5110 &lcd)
+{
+    lcd.drawRect(0,46,84,2,FILL_BLACK);
+};
+void Objects::cannon_position(Gamepad &pad)
+{
+    float joy_mag = pad.get_mag();
+    float joy_angle = pad.get_angle();
+
+    if(joy_mag < 0.5 && _cannon_pos > 1 && joy_angle > 180.0) {
+        _cannon_pos += -1;
+    } else if(joy_mag < 1.01 && _cannon_pos > 0 && joy_angle > 180.0) {
+        _cannon_pos += -2;
+    } else if(joy_mag < 0.5 && _cannon_pos < 78 && joy_angle > 0.0) {
+        _cannon_pos += 1;
+    } else if (joy_mag <= 1.01 && _cannon_pos < 77 && joy_angle > 0.0) {
+        _cannon_pos += 2;
+    } else {
+        _cannon_pos = _cannon_pos;
+    }
+}
+void Objects::draw_cannon(N5110 &lcd)
+{
+
+    lcd.drawSprite(_cannon_pos,40,6,6,(int *)_cannon);
+
+}
+void Objects::draw_shots(N5110 &lcd)
+{
+
+    for (int i = 0; i < _shot_y_pos.size(); i++) {
+
+        lcd.drawRect(_shot_x_pos[i],_shot_y_pos[i],2,2,FILL_BLACK);
+       // printf( " %d || %d \n",_shot_x_pos.size(),_shot_y_pos.size());
+        _shot_y_pos[i] -= _shot_incrementer; // moves the shots upwards
+
+    }
+    //adds another shot if the distance between
+    //y pos of the initial pos and previous shot pos is more than 5
+    if(_shot_y_pos[_shot_y_pos.size() - 1 ] + 5 < _initial_shot_pos && _shot_y_pos.size() < 10) {
+        _shot_y_pos.push_back(_initial_shot_pos);
+        _shot_x_pos.push_back(_cannon_pos + 2);
+    }
+    //erasing a shot if the y position is below 0
+    if(_shot_y_pos[0] <= 0) {
+        _shot_y_pos.erase(_shot_y_pos.begin());
+        _shot_x_pos.erase(_shot_x_pos.begin());
+    }
+}
+void Objects::draw_ball(N5110 &lcd,int ball_x, int ball_y, int delta_r)
+{   
+    lcd.drawCircle(ball_x,ball_y,_radiuss + delta_r,FILL_BLACK);
+}
\ No newline at end of file