![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Asteroids for MBED game with Bluetooth LE UART Friend Controller, uLCD, speaker, and uSD.
Dependencies: 4DGL-uLCD-SE mbed-rtos mbed
Asteroids for MBED game with Bluetooth LE UART Friend Controller
Diff: main.cpp
- Revision:
- 1:0328ad927150
- Parent:
- 0:16094a49131e
- Child:
- 2:332ca4f1a3e3
diff -r 16094a49131e -r 0328ad927150 main.cpp --- a/main.cpp Fri Mar 11 17:43:25 2016 +0000 +++ b/main.cpp Sat Mar 12 01:23:40 2016 +0000 @@ -1,59 +1,82 @@ #include "mbed.h" #include "rtos.h" #include "uLCD_4DGL.h" +#include <math.h> +#include <list> +using namespace std; DigitalOut myled(LED1); uLCD_4DGL uLCD(p28,p27,p29); class Movement { - public: - double x_pos; // x position of object - double y_pos; // - double x_vel; // x velocity of object - double y_vel; // - double angle; // angle of object - double hit_rad // hit box radius of object - - Movement(double xp,yp,xv,yv,a,r){ - x_pos = xp; - y_pos = yp; - x_vel = xv; - y_vel = yv; - angle = a; - hit_rad = r; - } - - void move(){ - p.x_pos = (p.x_pos + p.x_vel)%144; - p.y_pos = (p.x_pos + p.y_vel)%144; - - } - - void accelerate(){ - p.x_vel += cos(angle); - p.y_vel += sin(angle); - if(sqrt(p.x_vel^2 + p.y_vel^2) > 10) - x_vel = p.x_vel * 10 / sqrt(x_vel^2 + y_vel^2); - y_vel = p.y_vel * 10 / sqrt(x_vel^2 + y_vel^2); - - bool collision(&Movent p2){ - rad = hit_rad + p2.hitrad; - dist = sqrt((x_pos - p2.x_pos)^2 + (y_pos - p2.y_pos); - return dist < rad; - } +public: + double x_pos; // x position of object + double y_pos; // + double x_vel; // x velocity of object + double y_vel; // + double angle; // angle of object + int hit_rad; // hit box radius of object + bool wrap; + Movement(double xp,double yp,double xv,double yv,double a,double r,double w); + void move(); + void accelerate(); + }; -int main() { - Movement player(50, 100, 0, -5, 0, 5); - Movement asteroid(50, 100, 0, -5, 0, 5); +Movement::Movement(double xp,double yp,double xv,double yv,double a,double r,double w) +{ + x_pos = xp; + y_pos = yp; + x_vel = xv; + y_vel = yv; + angle = a; + hit_rad = r; + wrap = w; +} + + +void Movement::move() +{ + x_pos += x_vel; + y_pos += y_vel; + +} + +void Movement::accelerate() +{ + x_vel += cos(angle); + y_vel += sin(angle); + if(sqrt(pow(x_vel,2) + pow(y_vel,2)) > 10){ + x_vel = x_vel * 10 / sqrt(pow(x_vel,2) + pow(y_vel,2)); + y_vel = y_vel * 10 / sqrt(pow(x_vel,2) + pow(y_vel,2)); + } +} + + +bool collision(Movement p1, Movement p2) +{ + int rad = p1.hit_rad + p2.hit_rad; + double dist = sqrt(pow((p1.x_pos - p2.x_pos),2) + pow((p1.y_pos - p2.y_pos),2)); + return dist < rad; +} + +void calc_collisions(){ +} + +void draw_objs(Movement player, list<Movement> asteroids, list<Movement> bullets){ + +} + +int main() +{ + Movement player(50, 100, 0, -5, 0, 5, 1); + list<Movement> asteroids(); + list<Movement> bullets(); while(1) { player.move(); - asteroid.move(); - if(player.collision(asteroid)){ - - } - - + calc_collisions(); + //draw_objs(player, asteroids, bullets); + } }