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
main.cpp@1:0328ad927150, 2016-03-12 (annotated)
- Committer:
- agamemaker
- Date:
- Sat Mar 12 01:23:40 2016 +0000
- Revision:
- 1:0328ad927150
- Parent:
- 0:16094a49131e
- Child:
- 2:332ca4f1a3e3
first compilable commit
Who changed what in which revision?
User | Revision | Line number | New 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 | 0:16094a49131e | 7 | |
agamemaker | 0:16094a49131e | 8 | DigitalOut myled(LED1); |
agamemaker | 0:16094a49131e | 9 | uLCD_4DGL uLCD(p28,p27,p29); |
agamemaker | 0:16094a49131e | 10 | |
agamemaker | 0:16094a49131e | 11 | class Movement |
agamemaker | 0:16094a49131e | 12 | { |
agamemaker | 1:0328ad927150 | 13 | public: |
agamemaker | 1:0328ad927150 | 14 | double x_pos; // x position of object |
agamemaker | 1:0328ad927150 | 15 | double y_pos; // |
agamemaker | 1:0328ad927150 | 16 | double x_vel; // x velocity of object |
agamemaker | 1:0328ad927150 | 17 | double y_vel; // |
agamemaker | 1:0328ad927150 | 18 | double angle; // angle of object |
agamemaker | 1:0328ad927150 | 19 | int hit_rad; // hit box radius of object |
agamemaker | 1:0328ad927150 | 20 | bool wrap; |
agamemaker | 1:0328ad927150 | 21 | Movement(double xp,double yp,double xv,double yv,double a,double r,double w); |
agamemaker | 1:0328ad927150 | 22 | void move(); |
agamemaker | 1:0328ad927150 | 23 | void accelerate(); |
agamemaker | 1:0328ad927150 | 24 | |
agamemaker | 0:16094a49131e | 25 | }; |
agamemaker | 0:16094a49131e | 26 | |
agamemaker | 1:0328ad927150 | 27 | Movement::Movement(double xp,double yp,double xv,double yv,double a,double r,double w) |
agamemaker | 1:0328ad927150 | 28 | { |
agamemaker | 1:0328ad927150 | 29 | x_pos = xp; |
agamemaker | 1:0328ad927150 | 30 | y_pos = yp; |
agamemaker | 1:0328ad927150 | 31 | x_vel = xv; |
agamemaker | 1:0328ad927150 | 32 | y_vel = yv; |
agamemaker | 1:0328ad927150 | 33 | angle = a; |
agamemaker | 1:0328ad927150 | 34 | hit_rad = r; |
agamemaker | 1:0328ad927150 | 35 | wrap = w; |
agamemaker | 1:0328ad927150 | 36 | } |
agamemaker | 1:0328ad927150 | 37 | |
agamemaker | 1:0328ad927150 | 38 | |
agamemaker | 1:0328ad927150 | 39 | void Movement::move() |
agamemaker | 1:0328ad927150 | 40 | { |
agamemaker | 1:0328ad927150 | 41 | x_pos += x_vel; |
agamemaker | 1:0328ad927150 | 42 | y_pos += y_vel; |
agamemaker | 1:0328ad927150 | 43 | |
agamemaker | 1:0328ad927150 | 44 | } |
agamemaker | 1:0328ad927150 | 45 | |
agamemaker | 1:0328ad927150 | 46 | void Movement::accelerate() |
agamemaker | 1:0328ad927150 | 47 | { |
agamemaker | 1:0328ad927150 | 48 | x_vel += cos(angle); |
agamemaker | 1:0328ad927150 | 49 | y_vel += sin(angle); |
agamemaker | 1:0328ad927150 | 50 | if(sqrt(pow(x_vel,2) + pow(y_vel,2)) > 10){ |
agamemaker | 1:0328ad927150 | 51 | x_vel = x_vel * 10 / sqrt(pow(x_vel,2) + pow(y_vel,2)); |
agamemaker | 1:0328ad927150 | 52 | y_vel = y_vel * 10 / sqrt(pow(x_vel,2) + pow(y_vel,2)); |
agamemaker | 1:0328ad927150 | 53 | } |
agamemaker | 1:0328ad927150 | 54 | } |
agamemaker | 1:0328ad927150 | 55 | |
agamemaker | 1:0328ad927150 | 56 | |
agamemaker | 1:0328ad927150 | 57 | bool collision(Movement p1, Movement p2) |
agamemaker | 1:0328ad927150 | 58 | { |
agamemaker | 1:0328ad927150 | 59 | int rad = p1.hit_rad + p2.hit_rad; |
agamemaker | 1:0328ad927150 | 60 | double dist = sqrt(pow((p1.x_pos - p2.x_pos),2) + pow((p1.y_pos - p2.y_pos),2)); |
agamemaker | 1:0328ad927150 | 61 | return dist < rad; |
agamemaker | 1:0328ad927150 | 62 | } |
agamemaker | 1:0328ad927150 | 63 | |
agamemaker | 1:0328ad927150 | 64 | void calc_collisions(){ |
agamemaker | 1:0328ad927150 | 65 | } |
agamemaker | 1:0328ad927150 | 66 | |
agamemaker | 1:0328ad927150 | 67 | void draw_objs(Movement player, list<Movement> asteroids, list<Movement> bullets){ |
agamemaker | 1:0328ad927150 | 68 | |
agamemaker | 1:0328ad927150 | 69 | } |
agamemaker | 1:0328ad927150 | 70 | |
agamemaker | 1:0328ad927150 | 71 | int main() |
agamemaker | 1:0328ad927150 | 72 | { |
agamemaker | 1:0328ad927150 | 73 | Movement player(50, 100, 0, -5, 0, 5, 1); |
agamemaker | 1:0328ad927150 | 74 | list<Movement> asteroids(); |
agamemaker | 1:0328ad927150 | 75 | list<Movement> bullets(); |
agamemaker | 0:16094a49131e | 76 | while(1) { |
agamemaker | 0:16094a49131e | 77 | player.move(); |
agamemaker | 1:0328ad927150 | 78 | calc_collisions(); |
agamemaker | 1:0328ad927150 | 79 | //draw_objs(player, asteroids, bullets); |
agamemaker | 1:0328ad927150 | 80 | |
agamemaker | 0:16094a49131e | 81 | } |
agamemaker | 0:16094a49131e | 82 | } |