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

Committer:
agamemaker
Date:
Sat Mar 12 01:52:01 2016 +0000
Revision:
2:332ca4f1a3e3
Parent:
1:0328ad927150
Child:
3:14a2729625f6
update

Who changed what in which revision?

UserRevisionLine numberNew contents of line
agamemaker 0:16094a49131e 1 #include "mbed.h"
agamemaker 0:16094a49131e 2 #include "rtos.h"
agamemaker 0:16094a49131e 3 #include "uLCD_4DGL.h"
agamemaker 1:0328ad927150 4 #include <math.h>
agamemaker 1:0328ad927150 5 #include <list>
agamemaker 1:0328ad927150 6 using namespace std;
agamemaker 2:332ca4f1a3e3 7 //constants
agamemaker 2:332ca4f1a3e3 8 #define ACCEL = .5
agamemaker 2:332ca4f1a3e3 9 #define ROTTA = .2
agamemaker 2:332ca4f1a3e3 10 //devices
agamemaker 0:16094a49131e 11 DigitalOut myled(LED1);
agamemaker 2:332ca4f1a3e3 12 uLCD_4DGL ulcd(p28,p27,p29);
agamemaker 0:16094a49131e 13
agamemaker 0:16094a49131e 14 class Movement
agamemaker 0:16094a49131e 15 {
agamemaker 1:0328ad927150 16 public:
agamemaker 1:0328ad927150 17 double x_pos; // x position of object
agamemaker 1:0328ad927150 18 double y_pos; //
agamemaker 1:0328ad927150 19 double x_vel; // x velocity of object
agamemaker 1:0328ad927150 20 double y_vel; //
agamemaker 1:0328ad927150 21 double angle; // angle of object
agamemaker 1:0328ad927150 22 int hit_rad; // hit box radius of object
agamemaker 1:0328ad927150 23 bool wrap;
agamemaker 1:0328ad927150 24 Movement(double xp,double yp,double xv,double yv,double a,double r,double w);
agamemaker 1:0328ad927150 25 void move();
agamemaker 1:0328ad927150 26 void accelerate();
agamemaker 2:332ca4f1a3e3 27 void
agamemaker 1:0328ad927150 28
agamemaker 0:16094a49131e 29 };
agamemaker 0:16094a49131e 30
agamemaker 1:0328ad927150 31 Movement::Movement(double xp,double yp,double xv,double yv,double a,double r,double w)
agamemaker 1:0328ad927150 32 {
agamemaker 1:0328ad927150 33 x_pos = xp;
agamemaker 1:0328ad927150 34 y_pos = yp;
agamemaker 1:0328ad927150 35 x_vel = xv;
agamemaker 1:0328ad927150 36 y_vel = yv;
agamemaker 1:0328ad927150 37 angle = a;
agamemaker 1:0328ad927150 38 hit_rad = r;
agamemaker 1:0328ad927150 39 wrap = w;
agamemaker 1:0328ad927150 40 }
agamemaker 1:0328ad927150 41
agamemaker 1:0328ad927150 42
agamemaker 1:0328ad927150 43 void Movement::move()
agamemaker 1:0328ad927150 44 {
agamemaker 1:0328ad927150 45 x_pos += x_vel;
agamemaker 1:0328ad927150 46 y_pos += y_vel;
agamemaker 2:332ca4f1a3e3 47 if(x_pos < 0 || x_pos > 144 && x_pos < 0 || x_pos > 144) {
agamemaker 2:332ca4f1a3e3 48 if(wrap) {
agamemaker 2:332ca4f1a3e3 49 x_pos = 144(1 - ceil(x_pos/144)) + x_pos;
agamemaker 2:332ca4f1a3e3 50 y_pos = 144(1 - ceil(y_pos/144)) + y_pos;
agamemaker 2:332ca4f1a3e3 51 } else {
agamemaker 2:332ca4f1a3e3 52 }
agamemaker 2:332ca4f1a3e3 53 }
agamemaker 2:332ca4f1a3e3 54
agamemaker 1:0328ad927150 55 }
agamemaker 1:0328ad927150 56
agamemaker 1:0328ad927150 57 void Movement::accelerate()
agamemaker 1:0328ad927150 58 {
agamemaker 2:332ca4f1a3e3 59 x_vel += ACCEL * cos(angle);
agamemaker 2:332ca4f1a3e3 60 y_vel += ACCEL * sin(angle);
agamemaker 2:332ca4f1a3e3 61 if(sqrt(pow(x_vel,2) + pow(y_vel,2)) > 10) {
agamemaker 1:0328ad927150 62 x_vel = x_vel * 10 / sqrt(pow(x_vel,2) + pow(y_vel,2));
agamemaker 1:0328ad927150 63 y_vel = y_vel * 10 / sqrt(pow(x_vel,2) + pow(y_vel,2));
agamemaker 1:0328ad927150 64 }
agamemaker 1:0328ad927150 65 }
agamemaker 1:0328ad927150 66
agamemaker 2:332ca4f1a3e3 67 //collisions
agamemaker 1:0328ad927150 68 bool collision(Movement p1, Movement p2)
agamemaker 1:0328ad927150 69 {
agamemaker 1:0328ad927150 70 int rad = p1.hit_rad + p2.hit_rad;
agamemaker 1:0328ad927150 71 double dist = sqrt(pow((p1.x_pos - p2.x_pos),2) + pow((p1.y_pos - p2.y_pos),2));
agamemaker 1:0328ad927150 72 return dist < rad;
agamemaker 1:0328ad927150 73 }
agamemaker 1:0328ad927150 74
agamemaker 2:332ca4f1a3e3 75 void calc_collisions(Movement player, list<Movement> asteroids, list<Movement> bullets)
agamemaker 2:332ca4f1a3e3 76 {
agamemaker 1:0328ad927150 77 }
agamemaker 1:0328ad927150 78
agamemaker 2:332ca4f1a3e3 79 //drawing
agamemaker 2:332ca4f1a3e3 80 void draw_objs(Movement player, list<Movement> asteroids, list<Movement> bullets)
agamemaker 2:332ca4f1a3e3 81 {
agamemaker 2:332ca4f1a3e3 82 }
agamemaker 1:0328ad927150 83
agamemaker 1:0328ad927150 84 int main()
agamemaker 1:0328ad927150 85 {
agamemaker 1:0328ad927150 86 Movement player(50, 100, 0, -5, 0, 5, 1);
agamemaker 1:0328ad927150 87 list<Movement> asteroids();
agamemaker 1:0328ad927150 88 list<Movement> bullets();
agamemaker 0:16094a49131e 89 while(1) {
agamemaker 0:16094a49131e 90 player.move();
agamemaker 1:0328ad927150 91 calc_collisions();
agamemaker 1:0328ad927150 92 //draw_objs(player, asteroids, bullets);
agamemaker 1:0328ad927150 93
agamemaker 0:16094a49131e 94 }
agamemaker 0:16094a49131e 95 }