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.
Dependencies: mbed
Diff: Ball/Ball.cpp
- Revision:
- 3:bd3465a70a5a
- Child:
- 4:55a0509c4874
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Ball/Ball.cpp Mon Apr 15 13:40:49 2019 +0000 @@ -0,0 +1,101 @@ +#include "Ball.h" + +Ball::Ball() +{ + +} + +Ball::~Ball() +{ + +} + +void Ball::init(int size,int speed) +{ + _size = size; + + _x = 42; + _y = 15; + + srand(time(NULL)); + int direction = rand() % 4; // randomise initial direction. + + // 4 possibilities. Get random modulo and set velocities accordingly + if (direction == 0) { + _velocity.x = speed; + _velocity.y = speed; + } else if (direction == 1) { + _velocity.x = speed; + _velocity.y = -speed; + } else if (direction == 2) { + _velocity.x = speed; + _velocity.y = speed; + } else { + _velocity.x = -speed; + _velocity.y = -speed; + } +} + +void Ball::start(N5110 &lcd){ + if (_y!=28){ + _y+=1; + } +} + +void Ball::draw(N5110 &lcd) +{ + lcd.drawCircle(_x,_y,1,FILL_BLACK); + //lcd.drawRect(_x,_y,_size,_size,FILL_BLACK); +} + +void Ball::update() +{ + _x += _velocity.x; + _y += _velocity.y; +} + +void Ball::set_velocity(Vector2D v) +{ + _velocity.x = v.x; + _velocity.y = v.y; +} + +Vector2D Ball::get_velocity() +{ + Vector2D v = {_velocity.x,_velocity.y}; + return v; +} + +Vector2D Ball::get_pos() +{ + Vector2D p = {_x,_y}; + return p; +} + +void Ball::set_pos(Vector2D p) +{ + _x = p.x; + _y = p.y; +} +void Ball::get_direction(Gamepad &pad){ + _d = pad.get_direction(); +} +void Ball::set_field(N5110 &lcd){ + + lcd.drawCircle(25,2,2,FILL_BLACK); //NE + lcd.drawCircle(65,2,2,FILL_BLACK); //NW + lcd.drawCircle(65,40,2,FILL_BLACK); //SE + lcd.drawCircle(25,40,2,FILL_BLACK); //SW + lcd.drawCircle(3,20,2,FILL_BLACK); //E + lcd.drawCircle(80,20,2,FILL_BLACK); + + /* + for(int i=0;i<5;i++){ + get_direction(); + while (_d==N||_d==S){ + get_direction(); + } + if (d==NE){ + lcd.drawCircle(42,4,2,FILL_BLACK); + */ +} \ No newline at end of file