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 FATFileSystem
Ball/Ball.h
- Committer:
- ellisbhastroud
- Date:
- 2019-04-18
- Revision:
- 8:d410856c6d04
- Parent:
- 5:0b31909caf7f
- Child:
- 9:bc34f2243e43
File content as of revision 8:d410856c6d04:
#ifndef BALL_H
#define BALL_H
#include "mbed.h"
#include "N5110.h"
#include "Gamepad.h"
/** Enum for wall types */
enum Wall {
LEFT, /**< left wall */
RIGHT, /**< right wall */
TOP, /**< top wall */
BOTTOM, /**< bottom wall */
};
/** Pixel Coordinate Struct*/
struct Coord {
int x; /**< coordinate of x pixel */
int y; /**< coordinate of y pixel */
};
/** Course Information struct */
struct Course {
Wall wall; /**< wall type */
Coord start; /**< coordinate of line start */
Coord end; /**< coordinate of line end */
};
/** Ball Class
* @brief Class for controlling the golf ball
* @author Ellis Blackford Stroud
* @date May, 2018
*/
class Ball
{
public:
/** Constructor */
Ball();
/** Destructor */
~Ball();
void init(float x_pos, float y_pos);
void drawBall(N5110 &lcd);
void printShotCount(N5110 &lcd);
void drawPower(N5110 &lcd, float mag);
void drawAim(N5110 &lcd, Vector2D joy_coord ,float angle);
void move_ball(int frame_rate);
Vector2D get_ball_pos();
void shoot_ball(Gamepad &pad, Vector2D joy_coord);
int get_shot_count();
void set_vel(float x_vel, float y_vel);
void check_wall_bounce(Course map[], int size);
void left_bounce(Coord start, Coord end);
void right_bounce(Coord start, Coord end);
void top_bounce(Coord start, Coord end);
void bottom_bounce(Coord start, Coord end);
private:
float _x_pos;
float _y_pos;
float _x_vel;
float _y_vel;
int _shot_count;
Direction _direction;
};
#endif