![](/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
main.cpp@0:16094a49131e, 2016-03-11 (annotated)
- Committer:
- agamemaker
- Date:
- Fri Mar 11 17:43:25 2016 +0000
- Revision:
- 0:16094a49131e
- Child:
- 1:0328ad927150
First copy
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 | 0:16094a49131e | 4 | |
agamemaker | 0:16094a49131e | 5 | DigitalOut myled(LED1); |
agamemaker | 0:16094a49131e | 6 | uLCD_4DGL uLCD(p28,p27,p29); |
agamemaker | 0:16094a49131e | 7 | |
agamemaker | 0:16094a49131e | 8 | class Movement |
agamemaker | 0:16094a49131e | 9 | { |
agamemaker | 0:16094a49131e | 10 | public: |
agamemaker | 0:16094a49131e | 11 | double x_pos; // x position of object |
agamemaker | 0:16094a49131e | 12 | double y_pos; // |
agamemaker | 0:16094a49131e | 13 | double x_vel; // x velocity of object |
agamemaker | 0:16094a49131e | 14 | double y_vel; // |
agamemaker | 0:16094a49131e | 15 | double angle; // angle of object |
agamemaker | 0:16094a49131e | 16 | double hit_rad // hit box radius of object |
agamemaker | 0:16094a49131e | 17 | |
agamemaker | 0:16094a49131e | 18 | Movement(double xp,yp,xv,yv,a,r){ |
agamemaker | 0:16094a49131e | 19 | x_pos = xp; |
agamemaker | 0:16094a49131e | 20 | y_pos = yp; |
agamemaker | 0:16094a49131e | 21 | x_vel = xv; |
agamemaker | 0:16094a49131e | 22 | y_vel = yv; |
agamemaker | 0:16094a49131e | 23 | angle = a; |
agamemaker | 0:16094a49131e | 24 | hit_rad = r; |
agamemaker | 0:16094a49131e | 25 | } |
agamemaker | 0:16094a49131e | 26 | |
agamemaker | 0:16094a49131e | 27 | void move(){ |
agamemaker | 0:16094a49131e | 28 | p.x_pos = (p.x_pos + p.x_vel)%144; |
agamemaker | 0:16094a49131e | 29 | p.y_pos = (p.x_pos + p.y_vel)%144; |
agamemaker | 0:16094a49131e | 30 | |
agamemaker | 0:16094a49131e | 31 | } |
agamemaker | 0:16094a49131e | 32 | |
agamemaker | 0:16094a49131e | 33 | void accelerate(){ |
agamemaker | 0:16094a49131e | 34 | p.x_vel += cos(angle); |
agamemaker | 0:16094a49131e | 35 | p.y_vel += sin(angle); |
agamemaker | 0:16094a49131e | 36 | if(sqrt(p.x_vel^2 + p.y_vel^2) > 10) |
agamemaker | 0:16094a49131e | 37 | x_vel = p.x_vel * 10 / sqrt(x_vel^2 + y_vel^2); |
agamemaker | 0:16094a49131e | 38 | y_vel = p.y_vel * 10 / sqrt(x_vel^2 + y_vel^2); |
agamemaker | 0:16094a49131e | 39 | |
agamemaker | 0:16094a49131e | 40 | bool collision(&Movent p2){ |
agamemaker | 0:16094a49131e | 41 | rad = hit_rad + p2.hitrad; |
agamemaker | 0:16094a49131e | 42 | dist = sqrt((x_pos - p2.x_pos)^2 + (y_pos - p2.y_pos); |
agamemaker | 0:16094a49131e | 43 | return dist < rad; |
agamemaker | 0:16094a49131e | 44 | } |
agamemaker | 0:16094a49131e | 45 | }; |
agamemaker | 0:16094a49131e | 46 | |
agamemaker | 0:16094a49131e | 47 | int main() { |
agamemaker | 0:16094a49131e | 48 | Movement player(50, 100, 0, -5, 0, 5); |
agamemaker | 0:16094a49131e | 49 | Movement asteroid(50, 100, 0, -5, 0, 5); |
agamemaker | 0:16094a49131e | 50 | while(1) { |
agamemaker | 0:16094a49131e | 51 | player.move(); |
agamemaker | 0:16094a49131e | 52 | asteroid.move(); |
agamemaker | 0:16094a49131e | 53 | if(player.collision(asteroid)){ |
agamemaker | 0:16094a49131e | 54 | |
agamemaker | 0:16094a49131e | 55 | } |
agamemaker | 0:16094a49131e | 56 | |
agamemaker | 0:16094a49131e | 57 | |
agamemaker | 0:16094a49131e | 58 | } |
agamemaker | 0:16094a49131e | 59 | } |