Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Ball/Ball.cpp@17:5104ecef5bd0, 2019-04-15 (annotated)
- Committer:
- JamesCummins
- Date:
- Mon Apr 15 13:28:30 2019 +0000
- Revision:
- 17:5104ecef5bd0
- Parent:
- 15:1564bd6b713d
- Child:
- 23:61fa82f76808
Brickbreaker not working, all else working fine
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JamesCummins | 11:2cf0d4ce8677 | 1 | #include "Ball.h" |
JamesCummins | 9:ce0a12fb205b | 2 | |
JamesCummins | 9:ce0a12fb205b | 3 | Ball::Ball() |
JamesCummins | 9:ce0a12fb205b | 4 | {} |
JamesCummins | 9:ce0a12fb205b | 5 | |
JamesCummins | 9:ce0a12fb205b | 6 | Ball::~Ball() |
JamesCummins | 9:ce0a12fb205b | 7 | {} |
JamesCummins | 9:ce0a12fb205b | 8 | |
JamesCummins | 9:ce0a12fb205b | 9 | void Ball::init(int radius){ |
JamesCummins | 9:ce0a12fb205b | 10 | _radius = radius; |
JamesCummins | 9:ce0a12fb205b | 11 | _x = 48; |
JamesCummins | 9:ce0a12fb205b | 12 | _y = 24; |
JamesCummins | 17:5104ecef5bd0 | 13 | _velocity.x = 0; |
JamesCummins | 17:5104ecef5bd0 | 14 | _velocity.y = 0; |
JamesCummins | 9:ce0a12fb205b | 15 | } |
JamesCummins | 9:ce0a12fb205b | 16 | |
JamesCummins | 13:e5a36fbd48ae | 17 | void Ball::draw(N5110 &lcd){ |
JamesCummins | 13:e5a36fbd48ae | 18 | int radius = get_radius(); |
JamesCummins | 13:e5a36fbd48ae | 19 | lcd.drawCircle(_x, _y, radius, FILL_BLACK); |
JamesCummins | 9:ce0a12fb205b | 20 | } |
JamesCummins | 9:ce0a12fb205b | 21 | |
JamesCummins | 17:5104ecef5bd0 | 22 | void Ball::read_input(FXOS8700CQ &accelerometer){ |
JamesCummins | 13:e5a36fbd48ae | 23 | Data values = accelerometer.get_values(); |
JamesCummins | 17:5104ecef5bd0 | 24 | _velocity.x = -10*values.ay; //axes of the accelerometer are different to orientation of the screen |
JamesCummins | 17:5104ecef5bd0 | 25 | _velocity.y = -10*values.ax; //negative to account for reversed direction |
JamesCummins | 17:5104ecef5bd0 | 26 | printf("ax = %f | ay = %f | ", values.ax, values.ay); |
JamesCummins | 17:5104ecef5bd0 | 27 | printf("vel.x = %f | vel.y = %f\n", _velocity.x, _velocity.y); |
JamesCummins | 17:5104ecef5bd0 | 28 | } |
JamesCummins | 17:5104ecef5bd0 | 29 | |
JamesCummins | 17:5104ecef5bd0 | 30 | void Ball::update(){ |
JamesCummins | 17:5104ecef5bd0 | 31 | int RADIUS = get_radius(); |
JamesCummins | 9:ce0a12fb205b | 32 | _x += _velocity.x; |
JamesCummins | 9:ce0a12fb205b | 33 | _y += _velocity.y; |
JamesCummins | 14:108052b6222b | 34 | if (_x < RADIUS){ _x = RADIUS;} //check wall collisions |
JamesCummins | 13:e5a36fbd48ae | 35 | if (_x > 84 - RADIUS){ _x = 83 - RADIUS;} |
JamesCummins | 13:e5a36fbd48ae | 36 | if (_y < RADIUS){ _y = RADIUS;} |
JamesCummins | 13:e5a36fbd48ae | 37 | if (_y > 48 - RADIUS){ _y = 47 - RADIUS;} |
JamesCummins | 9:ce0a12fb205b | 38 | } |
JamesCummins | 9:ce0a12fb205b | 39 | |
JamesCummins | 9:ce0a12fb205b | 40 | Vector2D Ball::get_position(){ |
JamesCummins | 9:ce0a12fb205b | 41 | Vector2D pos = {_x, _y}; |
JamesCummins | 9:ce0a12fb205b | 42 | return pos; |
JamesCummins | 9:ce0a12fb205b | 43 | } |
JamesCummins | 9:ce0a12fb205b | 44 | |
JamesCummins | 9:ce0a12fb205b | 45 | Vector2D Ball::get_velocity(){ |
JamesCummins | 9:ce0a12fb205b | 46 | Vector2D vel = {_velocity.x, _velocity.y}; |
JamesCummins | 9:ce0a12fb205b | 47 | return vel; |
JamesCummins | 9:ce0a12fb205b | 48 | } |
JamesCummins | 9:ce0a12fb205b | 49 | |
JamesCummins | 10:40c77d69e83c | 50 | int Ball::get_radius(){ |
JamesCummins | 10:40c77d69e83c | 51 | int radius = _radius; |
JamesCummins | 10:40c77d69e83c | 52 | return radius; |
JamesCummins | 10:40c77d69e83c | 53 | } |
JamesCummins | 10:40c77d69e83c | 54 | |
JamesCummins | 9:ce0a12fb205b | 55 | void Ball::set_velocity(Vector2D vel){ |
JamesCummins | 9:ce0a12fb205b | 56 | _velocity.x = vel.x; |
JamesCummins | 9:ce0a12fb205b | 57 | _velocity.y = vel.y; |
JamesCummins | 9:ce0a12fb205b | 58 | } |
JamesCummins | 9:ce0a12fb205b | 59 | |
JamesCummins | 9:ce0a12fb205b | 60 | void Ball::set_position(Vector2D pos){ |
JamesCummins | 9:ce0a12fb205b | 61 | _x = pos.x; |
JamesCummins | 9:ce0a12fb205b | 62 | _y = pos.y; |
JamesCummins | 10:40c77d69e83c | 63 | } |
JamesCummins | 10:40c77d69e83c | 64 | |
JamesCummins | 10:40c77d69e83c | 65 | void Ball::set_radius(int radius){ |
JamesCummins | 10:40c77d69e83c | 66 | _radius = radius; |
JamesCummins | 9:ce0a12fb205b | 67 | } |