Henry Triff / Mbed 2 deprecated ELEC2645_Project_el18ht

Dependencies:   mbed

Committer:
HenryWTriff
Date:
Sat Mar 28 10:31:41 2020 +0000
Revision:
11:7b12992156de
Parent:
9:7b1093d3f03a
Child:
19:0245df53e919
Comments Added

Who changed what in which revision?

UserRevisionLine numberNew contents of line
HenryWTriff 5:2d9f3c36bcb9 1 #ifndef MECHANICS_H
HenryWTriff 5:2d9f3c36bcb9 2 #define MECHANICS_H
HenryWTriff 5:2d9f3c36bcb9 3
HenryWTriff 5:2d9f3c36bcb9 4 #include "mbed.h"
HenryWTriff 5:2d9f3c36bcb9 5 #include "Gamepad.h"
HenryWTriff 5:2d9f3c36bcb9 6 #include "N5110.h"
HenryWTriff 6:5f76dd718dc3 7 #include "FXOS8700CQ.h"
HenryWTriff 5:2d9f3c36bcb9 8 #include "Graphics.h"
HenryWTriff 6:5f76dd718dc3 9 #include "Mechanics.h"
HenryWTriff 6:5f76dd718dc3 10 #include "Menu.h"
HenryWTriff 6:5f76dd718dc3 11 #include "LEDs.h"
HenryWTriff 6:5f76dd718dc3 12 #include "Ghost.h"
HenryWTriff 6:5f76dd718dc3 13 #include <string>
HenryWTriff 5:2d9f3c36bcb9 14
HenryWTriff 5:2d9f3c36bcb9 15 #ifndef STRUCTS
HenryWTriff 5:2d9f3c36bcb9 16 #define STRUCTS
HenryWTriff 5:2d9f3c36bcb9 17
HenryWTriff 5:2d9f3c36bcb9 18 //STRUCTS
HenryWTriff 5:2d9f3c36bcb9 19 struct Point_2D {
HenryWTriff 5:2d9f3c36bcb9 20 float x;
HenryWTriff 5:2d9f3c36bcb9 21 float y;
HenryWTriff 5:2d9f3c36bcb9 22 };
HenryWTriff 5:2d9f3c36bcb9 23 struct Line_2D {
HenryWTriff 5:2d9f3c36bcb9 24 Point_2D from;
HenryWTriff 5:2d9f3c36bcb9 25 Point_2D to;
HenryWTriff 5:2d9f3c36bcb9 26 };
HenryWTriff 5:2d9f3c36bcb9 27
HenryWTriff 5:2d9f3c36bcb9 28 struct Square_2D {
HenryWTriff 5:2d9f3c36bcb9 29 Point_2D TL;
HenryWTriff 5:2d9f3c36bcb9 30 Point_2D BR;
HenryWTriff 5:2d9f3c36bcb9 31 };
HenryWTriff 5:2d9f3c36bcb9 32 struct Triangle_2D {
HenryWTriff 5:2d9f3c36bcb9 33 Point_2D TL;
HenryWTriff 5:2d9f3c36bcb9 34 Point_2D BR;
HenryWTriff 5:2d9f3c36bcb9 35 int Type;
HenryWTriff 5:2d9f3c36bcb9 36 };
HenryWTriff 5:2d9f3c36bcb9 37
HenryWTriff 5:2d9f3c36bcb9 38 struct Map_Data {
HenryWTriff 5:2d9f3c36bcb9 39 int number_of_track_lines;
HenryWTriff 5:2d9f3c36bcb9 40 int number_of_dotted_lines;
HenryWTriff 5:2d9f3c36bcb9 41 int number_of_flags;
HenryWTriff 5:2d9f3c36bcb9 42 int number_of_walls;
HenryWTriff 5:2d9f3c36bcb9 43 int number_of_off_track_squares;
HenryWTriff 5:2d9f3c36bcb9 44 int number_of_off_track_triangles;
HenryWTriff 5:2d9f3c36bcb9 45 int number_of_out_of_bounds_squares;
HenryWTriff 5:2d9f3c36bcb9 46 int number_of_out_of_bounds_triangles;
HenryWTriff 5:2d9f3c36bcb9 47 int number_of_gates;
HenryWTriff 6:5f76dd718dc3 48 int number_of_boost_plates;
HenryWTriff 6:5f76dd718dc3 49 };
HenryWTriff 6:5f76dd718dc3 50
HenryWTriff 6:5f76dd718dc3 51 struct Time {
HenryWTriff 6:5f76dd718dc3 52 int mins;
HenryWTriff 6:5f76dd718dc3 53 int secs;
HenryWTriff 6:5f76dd718dc3 54 int milis;
HenryWTriff 6:5f76dd718dc3 55 };
HenryWTriff 6:5f76dd718dc3 56
HenryWTriff 6:5f76dd718dc3 57 struct Gyro_Data {
HenryWTriff 6:5f76dd718dc3 58 float ax;
HenryWTriff 6:5f76dd718dc3 59 float ay;
HenryWTriff 6:5f76dd718dc3 60 float az;
HenryWTriff 6:5f76dd718dc3 61 float mx;
HenryWTriff 6:5f76dd718dc3 62 float my;
HenryWTriff 6:5f76dd718dc3 63 float mz;
HenryWTriff 5:2d9f3c36bcb9 64 };
HenryWTriff 5:2d9f3c36bcb9 65
HenryWTriff 11:7b12992156de 66 #endif
HenryWTriff 7:2ce6e90f6d47 67
HenryWTriff 11:7b12992156de 68 #ifndef ENUMS
HenryWTriff 11:7b12992156de 69 #define ENUMS
HenryWTriff 11:7b12992156de 70 enum track {Small, Medium, Large};
HenryWTriff 11:7b12992156de 71 enum cars {Basic, Offroad, Drifter, Sportscar, Racecar, Stupid};
HenryWTriff 5:2d9f3c36bcb9 72 #endif
HenryWTriff 5:2d9f3c36bcb9 73
HenryWTriff 5:2d9f3c36bcb9 74 class Mechanics
HenryWTriff 5:2d9f3c36bcb9 75 {
HenryWTriff 6:5f76dd718dc3 76 public:
HenryWTriff 9:7b1093d3f03a 77 int Get_Gate(const Square_2D gates[], int number_of_gates, Point_2D position, int current_gate);
HenryWTriff 9:7b1093d3f03a 78 int Get_Laps(int laps, const Square_2D gates[], int number_of_gates, Point_2D position, int current_gate);
HenryWTriff 7:2ce6e90f6d47 79
HenryWTriff 6:5f76dd718dc3 80 Time Convert_To_Time(int game_fps, int number_of_frames);
HenryWTriff 7:2ce6e90f6d47 81 int Get_Angle(int angle, int handling, bool gyro_enabled, FXOS8700CQ &Gyro, Gamepad &Device);
HenryWTriff 9:7b1093d3f03a 82 Point_2D Get_Translation(Point_2D in, float angle, float speed, const Square_2D *out_of_bounds_square, const Triangle_2D *out_of_bounds_triangle, const Map_Data map_info, Gamepad &Device);
HenryWTriff 7:2ce6e90f6d47 83
HenryWTriff 7:2ce6e90f6d47 84 float Get_Speed(
HenryWTriff 7:2ce6e90f6d47 85 float speed,
HenryWTriff 7:2ce6e90f6d47 86 float max_speed,
HenryWTriff 7:2ce6e90f6d47 87 float acceleration,
HenryWTriff 7:2ce6e90f6d47 88 float deceleration,
HenryWTriff 7:2ce6e90f6d47 89 float off_track_speed,
HenryWTriff 7:2ce6e90f6d47 90 Point_2D position,
HenryWTriff 9:7b1093d3f03a 91 const Square_2D *offtrack_square,
HenryWTriff 9:7b1093d3f03a 92 const Triangle_2D *offtrack_triangle,
HenryWTriff 9:7b1093d3f03a 93 const Square_2D *out_of_bounds_square,
HenryWTriff 9:7b1093d3f03a 94 const Triangle_2D *out_of_bounds_triangle,
HenryWTriff 9:7b1093d3f03a 95 const Triangle_2D *plates,
HenryWTriff 9:7b1093d3f03a 96 const Map_Data map_info,
HenryWTriff 7:2ce6e90f6d47 97 Gamepad &Device
HenryWTriff 7:2ce6e90f6d47 98 );
HenryWTriff 7:2ce6e90f6d47 99
HenryWTriff 7:2ce6e90f6d47 100 float Get_Max_Speed(int car_model);
HenryWTriff 7:2ce6e90f6d47 101 float Get_Acceleration(int car_model);
HenryWTriff 7:2ce6e90f6d47 102 float Get_Deceleration(int car_model);
HenryWTriff 7:2ce6e90f6d47 103 float Get_Off_Road_Speed(int car_model);
HenryWTriff 7:2ce6e90f6d47 104 int Get_Handling(int car_model);
HenryWTriff 7:2ce6e90f6d47 105
HenryWTriff 6:5f76dd718dc3 106 private:
HenryWTriff 7:2ce6e90f6d47 107 //SPEED
HenryWTriff 9:7b1093d3f03a 108 bool Is_Offtrack(Point_2D position, const Square_2D offtrack_square[], const Triangle_2D offtrack_triangle[], const Map_Data map_info);
HenryWTriff 9:7b1093d3f03a 109 bool Is_Out_Of_Bounds(Point_2D position, const Square_2D offtrack_square[], const Triangle_2D offtrack_triangle[], const Map_Data map_info);
HenryWTriff 9:7b1093d3f03a 110 bool Is_Offtrack_Square(const Square_2D offtrack[], int size, Point_2D position);
HenryWTriff 9:7b1093d3f03a 111 bool Is_Offtrack_Triangle(const Triangle_2D offtrack[], int size, Point_2D position);
HenryWTriff 9:7b1093d3f03a 112 bool Is_Out_Of_Bounds_Square(const Square_2D out_of_bounds[], int size, Point_2D position);
HenryWTriff 9:7b1093d3f03a 113 bool Is_Out_Of_Bounds_Triangle(const Triangle_2D out_of_bounds[], int size, Point_2D position);
HenryWTriff 9:7b1093d3f03a 114 float Get_Boost_Speed(const Triangle_2D plates[], int number_of_plates, Point_2D position, float speed);
HenryWTriff 7:2ce6e90f6d47 115
HenryWTriff 5:2d9f3c36bcb9 116 };
HenryWTriff 5:2d9f3c36bcb9 117
HenryWTriff 5:2d9f3c36bcb9 118 #endif