Dependencies:   mbed

Committer:
HenryWTriff
Date:
Fri May 22 16:27:56 2020 +0000
Revision:
26:f1d3b7e31091
Parent:
25:31761087a83f
Child:
27:7e230a7891f8
Added Spectators and helicopters to the maps!

Who changed what in which revision?

UserRevisionLine numberNew contents of line
HenryWTriff 2:d08b6a1eaf2b 1 /*
eencae 0:b7f1f47bb26a 2 ELEC2645 Embedded Systems Project
eencae 0:b7f1f47bb26a 3 School of Electronic & Electrical Engineering
eencae 0:b7f1f47bb26a 4 University of Leeds
eencae 0:b7f1f47bb26a 5 2019/20
eencae 0:b7f1f47bb26a 6
HenryWTriff 1:8c335af04679 7 Name: Henry Triff
HenryWTriff 1:8c335af04679 8 Username: el18ht
HenryWTriff 1:8c335af04679 9 Student ID Number: 201224295
HenryWTriff 1:8c335af04679 10 Date: 10/02/2020
HenryWTriff 11:7b12992156de 11
HenryWTriff 26:f1d3b7e31091 12 DIAGNOSTICS AND TEST FUNCTIONS
HenryWTriff 26:f1d3b7e31091 13 > I created a separate program that allows me to test functions of this code and to test and view the maps that i have
HenryWTriff 26:f1d3b7e31091 14 created. The code is 'quick and dirty' but works well. the controls are a little confusing. Stick moves the view of the track
HenryWTriff 26:f1d3b7e31091 15 around and X and A zoom in and out. Pots are used to show/hide different aspects of the map.
HenryWTriff 26:f1d3b7e31091 16 > It can be found here: https://os.mbed.com//users/HenryWTriff/code/ELEC2645_Project_el18ht_Map_Viewer/
HenryWTriff 26:f1d3b7e31091 17
eencae 0:b7f1f47bb26a 18 */
eencae 0:b7f1f47bb26a 19
HenryWTriff 25:31761087a83f 20 //DEBUG DEFINITIONS
HenryWTriff 25:31761087a83f 21 //#define DEBUG
HenryWTriff 25:31761087a83f 22
HenryWTriff 2:d08b6a1eaf2b 23 //LIBRARIES
eencae 0:b7f1f47bb26a 24 #include "mbed.h"
eencae 0:b7f1f47bb26a 25 #include "Gamepad.h"
eencae 0:b7f1f47bb26a 26 #include "N5110.h"
HenryWTriff 6:5f76dd718dc3 27 #include "FXOS8700CQ.h"
HenryWTriff 10:29126a41b1da 28 #include "SDFileSystem.h"
HenryWTriff 2:d08b6a1eaf2b 29 #include "Graphics.h"
HenryWTriff 6:5f76dd718dc3 30 #include "Mechanics.h"
HenryWTriff 6:5f76dd718dc3 31 #include "Menu.h"
HenryWTriff 6:5f76dd718dc3 32 #include "LEDs.h"
HenryWTriff 6:5f76dd718dc3 33 #include "Ghost.h"
HenryWTriff 6:5f76dd718dc3 34 #include <string>
eencae 0:b7f1f47bb26a 35
HenryWTriff 3:ceed6d026b8b 36 #ifndef STRUCTS
HenryWTriff 3:ceed6d026b8b 37 #define STRUCTS
HenryWTriff 3:ceed6d026b8b 38
HenryWTriff 3:ceed6d026b8b 39 //STRUCTS
HenryWTriff 3:ceed6d026b8b 40 struct Point_2D {
HenryWTriff 25:31761087a83f 41 float x;
HenryWTriff 3:ceed6d026b8b 42 float y;
HenryWTriff 3:ceed6d026b8b 43 };
HenryWTriff 23:920faed43d55 44
HenryWTriff 3:ceed6d026b8b 45 struct Line_2D {
HenryWTriff 3:ceed6d026b8b 46 Point_2D from;
HenryWTriff 3:ceed6d026b8b 47 Point_2D to;
HenryWTriff 3:ceed6d026b8b 48 };
HenryWTriff 3:ceed6d026b8b 49
HenryWTriff 5:2d9f3c36bcb9 50 struct Square_2D {
HenryWTriff 5:2d9f3c36bcb9 51 Point_2D TL;
HenryWTriff 5:2d9f3c36bcb9 52 Point_2D BR;
HenryWTriff 5:2d9f3c36bcb9 53 };
HenryWTriff 5:2d9f3c36bcb9 54 struct Triangle_2D {
HenryWTriff 5:2d9f3c36bcb9 55 Point_2D TL;
HenryWTriff 5:2d9f3c36bcb9 56 Point_2D BR;
HenryWTriff 11:7b12992156de 57 int Type; //The direction of the hypoentuse on the right angled triangle ( 1 = Top right, 2 = Bottom right, 3 = Bottom left, 4 = Top Left )
HenryWTriff 5:2d9f3c36bcb9 58 };
HenryWTriff 5:2d9f3c36bcb9 59
HenryWTriff 26:f1d3b7e31091 60 struct Sprite_2D {
HenryWTriff 26:f1d3b7e31091 61 float x;
HenryWTriff 26:f1d3b7e31091 62 float y;
HenryWTriff 26:f1d3b7e31091 63 int type;
HenryWTriff 26:f1d3b7e31091 64 };
HenryWTriff 26:f1d3b7e31091 65
HenryWTriff 3:ceed6d026b8b 66 struct Map_Data {
HenryWTriff 11:7b12992156de 67 //Information about the number of elements in each array
HenryWTriff 3:ceed6d026b8b 68 int number_of_track_lines;
HenryWTriff 3:ceed6d026b8b 69 int number_of_dotted_lines;
HenryWTriff 26:f1d3b7e31091 70 int number_of_sprites;
HenryWTriff 5:2d9f3c36bcb9 71 int number_of_walls;
HenryWTriff 5:2d9f3c36bcb9 72 int number_of_off_track_squares;
HenryWTriff 5:2d9f3c36bcb9 73 int number_of_off_track_triangles;
HenryWTriff 5:2d9f3c36bcb9 74 int number_of_out_of_bounds_squares;
HenryWTriff 5:2d9f3c36bcb9 75 int number_of_out_of_bounds_triangles;
HenryWTriff 5:2d9f3c36bcb9 76 int number_of_gates;
HenryWTriff 6:5f76dd718dc3 77 int number_of_boost_plates;
HenryWTriff 6:5f76dd718dc3 78 };
HenryWTriff 6:5f76dd718dc3 79
HenryWTriff 6:5f76dd718dc3 80 struct Time {
HenryWTriff 6:5f76dd718dc3 81 int mins;
HenryWTriff 6:5f76dd718dc3 82 int secs;
HenryWTriff 6:5f76dd718dc3 83 int milis;
HenryWTriff 6:5f76dd718dc3 84 };
HenryWTriff 6:5f76dd718dc3 85
HenryWTriff 6:5f76dd718dc3 86 struct Gyro_Data {
HenryWTriff 6:5f76dd718dc3 87 float ax;
HenryWTriff 6:5f76dd718dc3 88 float ay;
HenryWTriff 6:5f76dd718dc3 89 float az;
HenryWTriff 6:5f76dd718dc3 90 float mx;
HenryWTriff 6:5f76dd718dc3 91 float my;
HenryWTriff 6:5f76dd718dc3 92 float mz;
HenryWTriff 3:ceed6d026b8b 93 };
HenryWTriff 3:ceed6d026b8b 94
HenryWTriff 3:ceed6d026b8b 95 #endif
eencae 0:b7f1f47bb26a 96
HenryWTriff 2:d08b6a1eaf2b 97 //GLOBAL VARIABLES
HenryWTriff 10:29126a41b1da 98 #ifndef ENUMS
HenryWTriff 10:29126a41b1da 99 #define ENUMS
HenryWTriff 11:7b12992156de 100 enum track {Small, Medium, Large}; //Track Names
HenryWTriff 11:7b12992156de 101 enum cars {Basic, Offroad, Drifter, Sportscar, Racecar, Stupid}; //Car Names (Stupid is now the alien space ship)
HenryWTriff 26:f1d3b7e31091 102 enum sprites {Flag, Helicopter, People_Standing_1, People_Standing_2, People_Cheering};
HenryWTriff 10:29126a41b1da 103 #endif
HenryWTriff 7:2ce6e90f6d47 104
HenryWTriff 26:f1d3b7e31091 105 //OBJECTS
HenryWTriff 26:f1d3b7e31091 106 Gamepad Device; //Controller
HenryWTriff 26:f1d3b7e31091 107 N5110 LCD; //LCD
HenryWTriff 26:f1d3b7e31091 108 FXOS8700CQ Gyro(I2C_SDA,I2C_SCL); //Gyroscope
HenryWTriff 26:f1d3b7e31091 109 SDFileSystem SD(PTE3, PTE1, PTE2, PTE4, "sd"); //SD card (For recording ghost data)
HenryWTriff 26:f1d3b7e31091 110 Graphics Graphics; //Graphics Class
HenryWTriff 26:f1d3b7e31091 111 Mechanics Mechanics; //Mechanics Class
HenryWTriff 26:f1d3b7e31091 112 Menu Menu; //Menu Class
HenryWTriff 26:f1d3b7e31091 113 LEDs LEDs; //LEDs Class
HenryWTriff 26:f1d3b7e31091 114 Ghost Ghost; //Ghost Class (For racing against a previos version of you)
HenryWTriff 26:f1d3b7e31091 115
HenryWTriff 26:f1d3b7e31091 116 #include "Maps.h"
HenryWTriff 26:f1d3b7e31091 117
HenryWTriff 2:d08b6a1eaf2b 118 //Transform
HenryWTriff 11:7b12992156de 119 int angle = 0; //The angle of roation of the track
HenryWTriff 26:f1d3b7e31091 120 Point_2D translation = {0,0}; //The translation of the track
HenryWTriff 26:f1d3b7e31091 121 float horizon_factor = 0.02; //The translation of the track
HenryWTriff 11:7b12992156de 122 float squish = 0.15; //The amount of squish of the track
HenryWTriff 2:d08b6a1eaf2b 123
HenryWTriff 3:ceed6d026b8b 124 //Vehicle parameters
HenryWTriff 11:7b12992156de 125 float speed; //Current speed (Rate of change of translation [see above] )
HenryWTriff 11:7b12992156de 126 float max_speed; //Max speed the car can go
HenryWTriff 11:7b12992156de 127 int handling; //The maximum rate of change of angle of the track per frame
HenryWTriff 11:7b12992156de 128 float off_track_speed; //Maximum off track speed
HenryWTriff 7:2ce6e90f6d47 129 float acceleration;
HenryWTriff 7:2ce6e90f6d47 130 float deceleration;
HenryWTriff 11:7b12992156de 131 int car_model = Basic;
HenryWTriff 3:ceed6d026b8b 132
HenryWTriff 5:2d9f3c36bcb9 133 //Mechanics
HenryWTriff 11:7b12992156de 134 int lap_gate = 0; //The initial lap gate
HenryWTriff 11:7b12992156de 135 int laps = 1; //The current lap number
HenryWTriff 11:7b12992156de 136 int number_of_laps = 3; //The number of laps
HenryWTriff 11:7b12992156de 137 int race_time = 0; //The number of frames elapsed so far since the start of the race
HenryWTriff 9:7b1093d3f03a 138 bool ghost_enable = false;
HenryWTriff 5:2d9f3c36bcb9 139
HenryWTriff 11:7b12992156de 140 //Game Settings
HenryWTriff 26:f1d3b7e31091 141 int game_fps = 60; //Frame rate
HenryWTriff 11:7b12992156de 142 bool leds = true; //Turning the LEDs on / off (Useful for people with epilepsy as they flash quickly)
HenryWTriff 11:7b12992156de 143 bool gyro_enabled = false; //Gyro steering option
eencae 0:b7f1f47bb26a 144
eencae 0:b7f1f47bb26a 145 int main()
eencae 0:b7f1f47bb26a 146 {
HenryWTriff 25:31761087a83f 147 #ifdef DEBUG
HenryWTriff 25:31761087a83f 148 printf("INITIALISATION\n");
HenryWTriff 25:31761087a83f 149 #endif
HenryWTriff 25:31761087a83f 150
HenryWTriff 25:31761087a83f 151 LCD.init(); //Initialising the LCD
HenryWTriff 11:7b12992156de 152 Device.init(); //Initialising the Gamepad
HenryWTriff 11:7b12992156de 153 Gyro.init(); //Initialising the gyro
HenryWTriff 11:7b12992156de 154 Graphics.Change_Contrast(LCD,Device); //Adust Contrast to the amount on the pot
HenryWTriff 6:5f76dd718dc3 155
HenryWTriff 25:31761087a83f 156 #ifdef DEBUG
HenryWTriff 25:31761087a83f 157 printf("LOGO\n");
HenryWTriff 25:31761087a83f 158 #endif
HenryWTriff 25:31761087a83f 159
HenryWTriff 10:29126a41b1da 160 //START LOGO
HenryWTriff 10:29126a41b1da 161 Graphics.Draw_Logo(LCD);
HenryWTriff 10:29126a41b1da 162
HenryWTriff 6:5f76dd718dc3 163 //MENU
HenryWTriff 25:31761087a83f 164 #ifdef DEBUG
HenryWTriff 25:31761087a83f 165 printf("MENU\n");
HenryWTriff 25:31761087a83f 166 #endif
HenryWTriff 7:2ce6e90f6d47 167 do {
HenryWTriff 11:7b12992156de 168 while(Menu.Main_Menu(LCD, Device) == true) {
HenryWTriff 25:31761087a83f 169 Ghost.SD_init(SD,LCD); //Format SD Card
HenryWTriff 7:2ce6e90f6d47 170 }
HenryWTriff 11:7b12992156de 171 } while(Menu.Game_Setup(LCD, Device) == false);
HenryWTriff 7:2ce6e90f6d47 172
HenryWTriff 11:7b12992156de 173 //RETRIEVING STATIC VARIABLES FROM MENU CLASS
HenryWTriff 11:7b12992156de 174 car_model = Menu.Get_Car();
HenryWTriff 11:7b12992156de 175 number_of_laps = Menu.Get_Laps();
HenryWTriff 11:7b12992156de 176 ghost_enable = Menu.Get_Mode();
HenryWTriff 11:7b12992156de 177 leds = Menu.Get_Setting_LED();
HenryWTriff 11:7b12992156de 178 gyro_enabled = Menu.Get_Setting_Gyro();
HenryWTriff 7:2ce6e90f6d47 179
HenryWTriff 7:2ce6e90f6d47 180 //CAR PARAMETERS SETUP
HenryWTriff 7:2ce6e90f6d47 181 max_speed = Mechanics.Get_Max_Speed(car_model);
HenryWTriff 7:2ce6e90f6d47 182 acceleration = Mechanics.Get_Acceleration(car_model);
HenryWTriff 7:2ce6e90f6d47 183 deceleration = Mechanics.Get_Deceleration(car_model);
HenryWTriff 7:2ce6e90f6d47 184 off_track_speed = Mechanics.Get_Off_Road_Speed(car_model);
HenryWTriff 7:2ce6e90f6d47 185 handling = Mechanics.Get_Handling(car_model);
HenryWTriff 25:31761087a83f 186
HenryWTriff 25:31761087a83f 187 #ifdef DEBUG
HenryWTriff 25:31761087a83f 188 printf("GAME RUN\n");
HenryWTriff 25:31761087a83f 189 printf("MAP: %i LAPS: %i CAR: %i\n",Menu.Get_Map(),number_of_laps, car_model);
HenryWTriff 25:31761087a83f 190 #endif
HenryWTriff 25:31761087a83f 191
HenryWTriff 11:7b12992156de 192 if(Menu.Get_Map() == Small) {
HenryWTriff 8:4503c92acaf6 193
HenryWTriff 11:7b12992156de 194 while(1) { //Main Game While loop
HenryWTriff 11:7b12992156de 195 if(ghost_enable == true) { //If ghost mode is enabled
HenryWTriff 25:31761087a83f 196 #ifdef DEBUG
HenryWTriff 25:31761087a83f 197 printf("READING GHOST DATA\n");
HenryWTriff 25:31761087a83f 198 #endif
HenryWTriff 11:7b12992156de 199 Ghost.SD_Read(Small, car_model, SD); //Copy the ghost data from the SD card over to the flash memory (Make take a second)
HenryWTriff 10:29126a41b1da 200 }
HenryWTriff 8:4503c92acaf6 201
HenryWTriff 25:31761087a83f 202 #ifdef DEBUG
HenryWTriff 25:31761087a83f 203 printf("COUNTDOWN\n");
HenryWTriff 25:31761087a83f 204 #endif
HenryWTriff 8:4503c92acaf6 205 //COUNTDOWN
HenryWTriff 11:7b12992156de 206 for(int count = 3; count >= 0; count--) { //Loop for the countdown
HenryWTriff 11:7b12992156de 207 //Draw the map and the count down numbers
HenryWTriff 25:31761087a83f 208 LCD.clear();
HenryWTriff 8:4503c92acaf6 209 Graphics.Draw_Map(
HenryWTriff 8:4503c92acaf6 210 translation,
HenryWTriff 8:4503c92acaf6 211 angle,
HenryWTriff 8:4503c92acaf6 212 squish,
HenryWTriff 25:31761087a83f 213 horizon_factor,
HenryWTriff 8:4503c92acaf6 214 (Line_2D *) Map_1_Track_Lines,
HenryWTriff 8:4503c92acaf6 215 (Line_2D *)Map_1_Track_Dotted_Lines,
HenryWTriff 8:4503c92acaf6 216 (Line_2D *)Map_1_Walls,
HenryWTriff 26:f1d3b7e31091 217 (Sprite_2D *)Map_1_Sprites,
HenryWTriff 8:4503c92acaf6 218 (Triangle_2D *)Map_1_Boost_Plates,
HenryWTriff 8:4503c92acaf6 219 Map_1,
HenryWTriff 8:4503c92acaf6 220 car_model,
HenryWTriff 9:7b1093d3f03a 221 Ghost.Play(false, race_time),
HenryWTriff 8:4503c92acaf6 222 LCD
HenryWTriff 8:4503c92acaf6 223 );
HenryWTriff 8:4503c92acaf6 224 Graphics.Start_Sequence(count, LCD);
HenryWTriff 8:4503c92acaf6 225 LCD.refresh();
HenryWTriff 11:7b12992156de 226 LEDs.Start_Sequence(leds, count, Device); //Display the LED traffic light count down
HenryWTriff 8:4503c92acaf6 227 wait(1);
HenryWTriff 8:4503c92acaf6 228 }
HenryWTriff 8:4503c92acaf6 229 LEDs.Clear(Device);
HenryWTriff 8:4503c92acaf6 230
HenryWTriff 25:31761087a83f 231 #ifdef DEBUG
HenryWTriff 25:31761087a83f 232 printf("RACE START\n");
HenryWTriff 25:31761087a83f 233 #endif
HenryWTriff 10:29126a41b1da 234
HenryWTriff 11:7b12992156de 235 while(laps <= number_of_laps) { //Loop until the number of laps have been completed
HenryWTriff 8:4503c92acaf6 236 //MECHANICS
HenryWTriff 11:7b12992156de 237 laps = Mechanics.Get_Laps(laps, Map_1_Gates, Map_1.number_of_gates, translation, lap_gate); //Get the current lap count
HenryWTriff 11:7b12992156de 238 lap_gate = Mechanics.Get_Gate(Map_1_Gates, Map_1.number_of_gates, translation, lap_gate); //Get the current lap_gate
HenryWTriff 11:7b12992156de 239 angle = Mechanics.Get_Angle(angle, handling, gyro_enabled, Gyro, Device); //Get the current angle
HenryWTriff 11:7b12992156de 240 translation = Mechanics.Get_Translation(translation, angle, speed, Map_1_Out_Of_Bounds_Square, Map_1_Out_Of_Bounds_Triangle, Map_1, Device); //Get the translation
HenryWTriff 8:4503c92acaf6 241 speed = Mechanics.Get_Speed(
HenryWTriff 8:4503c92acaf6 242 speed,
HenryWTriff 8:4503c92acaf6 243 max_speed,
HenryWTriff 8:4503c92acaf6 244 acceleration,
HenryWTriff 8:4503c92acaf6 245 deceleration,
HenryWTriff 8:4503c92acaf6 246 off_track_speed,
HenryWTriff 8:4503c92acaf6 247 translation,
HenryWTriff 8:4503c92acaf6 248 Map_1_Off_Track_Square,
HenryWTriff 8:4503c92acaf6 249 Map_1_Off_Track_Triangle,
HenryWTriff 8:4503c92acaf6 250 Map_1_Out_Of_Bounds_Square,
HenryWTriff 8:4503c92acaf6 251 Map_1_Out_Of_Bounds_Triangle,
HenryWTriff 8:4503c92acaf6 252 Map_1_Boost_Plates,
HenryWTriff 8:4503c92acaf6 253 Map_1,
HenryWTriff 8:4503c92acaf6 254 Device
HenryWTriff 11:7b12992156de 255 ); //Get the speed of the player
HenryWTriff 25:31761087a83f 256
HenryWTriff 8:4503c92acaf6 257 //LEDS
HenryWTriff 11:7b12992156de 258 LEDs.Speed(leds, speed, max_speed, Device); //Change the LEDs depending on the speed
HenryWTriff 8:4503c92acaf6 259
HenryWTriff 8:4503c92acaf6 260 //GHOST
HenryWTriff 11:7b12992156de 261 if(ghost_enable == true) { //If ghost mode is enabled
HenryWTriff 11:7b12992156de 262 Ghost.Record(translation, race_time); //Record the position of the player
HenryWTriff 9:7b1093d3f03a 263 }
HenryWTriff 8:4503c92acaf6 264
HenryWTriff 8:4503c92acaf6 265 //GRAPHICS
HenryWTriff 11:7b12992156de 266 LCD.clear(); //Clear the screen buffer
HenryWTriff 11:7b12992156de 267 Graphics.Change_Contrast(LCD,Device); //Adjust the contrast
HenryWTriff 10:29126a41b1da 268 Graphics.Draw_Map(
HenryWTriff 10:29126a41b1da 269 translation,
HenryWTriff 10:29126a41b1da 270 angle,
HenryWTriff 10:29126a41b1da 271 squish,
HenryWTriff 25:31761087a83f 272 horizon_factor,
HenryWTriff 10:29126a41b1da 273 (Line_2D *) Map_1_Track_Lines,
HenryWTriff 10:29126a41b1da 274 (Line_2D *)Map_1_Track_Dotted_Lines,
HenryWTriff 10:29126a41b1da 275 (Line_2D *)Map_1_Walls,
HenryWTriff 26:f1d3b7e31091 276 (Sprite_2D *)Map_1_Sprites,
HenryWTriff 10:29126a41b1da 277 (Triangle_2D *)Map_1_Boost_Plates,
HenryWTriff 10:29126a41b1da 278 Map_1,
HenryWTriff 10:29126a41b1da 279 car_model,
HenryWTriff 10:29126a41b1da 280 Ghost.Play(ghost_enable, race_time),
HenryWTriff 10:29126a41b1da 281 LCD
HenryWTriff 11:7b12992156de 282 ); //Draw the graphics
HenryWTriff 11:7b12992156de 283 Graphics.Draw_Laps(laps, LCD); //Draw the lap counter
HenryWTriff 11:7b12992156de 284 Graphics.Draw_Time(false, Mechanics.Convert_To_Time(game_fps, race_time), LCD); //Draw the time
HenryWTriff 11:7b12992156de 285 LCD.refresh(); //Refresh the display
HenryWTriff 11:7b12992156de 286 wait((1 / float(game_fps))); //Wait for a short period of time
HenryWTriff 11:7b12992156de 287 race_time++; //Increase the race time
HenryWTriff 8:4503c92acaf6 288
HenryWTriff 8:4503c92acaf6 289 }
HenryWTriff 11:7b12992156de 290 //RACE OVER
HenryWTriff 11:7b12992156de 291 LEDs.Clear(Device); //Turn off the LEDs
HenryWTriff 7:2ce6e90f6d47 292 LCD.clear();
HenryWTriff 7:2ce6e90f6d47 293 Graphics.Draw_Map(
HenryWTriff 7:2ce6e90f6d47 294 translation,
HenryWTriff 7:2ce6e90f6d47 295 angle,
HenryWTriff 7:2ce6e90f6d47 296 squish,
HenryWTriff 25:31761087a83f 297 horizon_factor,
HenryWTriff 7:2ce6e90f6d47 298 (Line_2D *) Map_1_Track_Lines,
HenryWTriff 7:2ce6e90f6d47 299 (Line_2D *)Map_1_Track_Dotted_Lines,
HenryWTriff 7:2ce6e90f6d47 300 (Line_2D *)Map_1_Walls,
HenryWTriff 26:f1d3b7e31091 301 (Sprite_2D *)Map_1_Sprites,
HenryWTriff 7:2ce6e90f6d47 302 (Triangle_2D *)Map_1_Boost_Plates,
HenryWTriff 7:2ce6e90f6d47 303 Map_1,
HenryWTriff 7:2ce6e90f6d47 304 car_model,
HenryWTriff 9:7b1093d3f03a 305 Ghost.Play(false, race_time),
HenryWTriff 7:2ce6e90f6d47 306 LCD
HenryWTriff 11:7b12992156de 307 ); //Draw the graphics
HenryWTriff 11:7b12992156de 308 Graphics.Finish(LCD); //Display the finish logo
HenryWTriff 11:7b12992156de 309 Graphics.Draw_Time(true, Mechanics.Convert_To_Time(game_fps, race_time), LCD); //Draw the race time
HenryWTriff 11:7b12992156de 310 LCD.refresh(); //Refresh the display
HenryWTriff 11:7b12992156de 311 if(ghost_enable == true) { //If ghost mode enabled
HenryWTriff 25:31761087a83f 312 #ifdef DEBUG
HenryWTriff 25:31761087a83f 313 printf("GHOST COPY\n");
HenryWTriff 25:31761087a83f 314 #endif
HenryWTriff 11:7b12992156de 315 Ghost.Copy(race_time, Small, car_model, SD); //Copy over the ghost data to the SD card (if race time is quicker)
HenryWTriff 10:29126a41b1da 316 }
HenryWTriff 8:4503c92acaf6 317
HenryWTriff 11:7b12992156de 318 //RESET ALL VARIABLES
HenryWTriff 8:4503c92acaf6 319 angle = 0;
HenryWTriff 8:4503c92acaf6 320 Point_2D test = {0,0};
HenryWTriff 8:4503c92acaf6 321 translation = test;
HenryWTriff 8:4503c92acaf6 322 squish = 0.15;
HenryWTriff 8:4503c92acaf6 323 speed = 0;
HenryWTriff 8:4503c92acaf6 324 max_speed = 4;
HenryWTriff 8:4503c92acaf6 325 handling = 2;
HenryWTriff 8:4503c92acaf6 326 lap_gate = 0;
HenryWTriff 8:4503c92acaf6 327 laps = 1;
HenryWTriff 8:4503c92acaf6 328 race_time = 0;
HenryWTriff 8:4503c92acaf6 329
HenryWTriff 8:4503c92acaf6 330 wait(3);
HenryWTriff 25:31761087a83f 331
HenryWTriff 25:31761087a83f 332 #ifdef DEBUG
HenryWTriff 25:31761087a83f 333 printf("LOOP\n");
HenryWTriff 25:31761087a83f 334 #endif
HenryWTriff 25:31761087a83f 335
HenryWTriff 7:2ce6e90f6d47 336 }
HenryWTriff 11:7b12992156de 337 } else if(Menu.Get_Map() == Medium) {
HenryWTriff 8:4503c92acaf6 338 while(1) {
HenryWTriff 8:4503c92acaf6 339
HenryWTriff 11:7b12992156de 340 if(ghost_enable == true) { //If ghost mode is enabled
HenryWTriff 25:31761087a83f 341 #ifdef DEBUG
HenryWTriff 25:31761087a83f 342 printf("READING GHOST DATA\n");
HenryWTriff 25:31761087a83f 343 #endif
HenryWTriff 11:7b12992156de 344 Ghost.SD_Read(Medium, car_model, SD);//Copy the ghost data from the SD card over to the flash memory (Make take a second)
HenryWTriff 10:29126a41b1da 345 }
HenryWTriff 25:31761087a83f 346
HenryWTriff 25:31761087a83f 347 #ifdef DEBUG
HenryWTriff 25:31761087a83f 348 printf("COUNTDOWN\n");
HenryWTriff 25:31761087a83f 349 #endif
HenryWTriff 25:31761087a83f 350
HenryWTriff 8:4503c92acaf6 351 //COUNTDOWN
HenryWTriff 8:4503c92acaf6 352 for(int count = 3; count >= 0; count--) {
HenryWTriff 11:7b12992156de 353 //Draw the map and the count down numbers
HenryWTriff 8:4503c92acaf6 354 LCD.clear();
HenryWTriff 8:4503c92acaf6 355 Graphics.Draw_Map(
HenryWTriff 8:4503c92acaf6 356 translation,
HenryWTriff 8:4503c92acaf6 357 angle,
HenryWTriff 8:4503c92acaf6 358 squish,
HenryWTriff 25:31761087a83f 359 horizon_factor,
HenryWTriff 8:4503c92acaf6 360 (Line_2D *) Map_2_Track_Lines,
HenryWTriff 8:4503c92acaf6 361 (Line_2D *)Map_2_Track_Dotted_Lines,
HenryWTriff 8:4503c92acaf6 362 (Line_2D *)Map_2_Walls,
HenryWTriff 26:f1d3b7e31091 363 (Sprite_2D *)Map_2_Sprites,
HenryWTriff 8:4503c92acaf6 364 (Triangle_2D *)Map_2_Boost_Plates,
HenryWTriff 8:4503c92acaf6 365 Map_2,
HenryWTriff 8:4503c92acaf6 366 car_model,
HenryWTriff 9:7b1093d3f03a 367 Ghost.Play(false, race_time),
HenryWTriff 8:4503c92acaf6 368 LCD
HenryWTriff 8:4503c92acaf6 369 );
HenryWTriff 8:4503c92acaf6 370 Graphics.Start_Sequence(count, LCD);
HenryWTriff 11:7b12992156de 371 LEDs.Start_Sequence(leds, count, Device); //Display the LED traffic light count down
HenryWTriff 8:4503c92acaf6 372 LCD.refresh();
HenryWTriff 8:4503c92acaf6 373 wait(1);
HenryWTriff 8:4503c92acaf6 374 }
HenryWTriff 8:4503c92acaf6 375 LEDs.Clear(Device);
HenryWTriff 6:5f76dd718dc3 376
HenryWTriff 25:31761087a83f 377 #ifdef DEBUG
HenryWTriff 25:31761087a83f 378 printf("RACE START\n");
HenryWTriff 25:31761087a83f 379 #endif
HenryWTriff 25:31761087a83f 380
HenryWTriff 8:4503c92acaf6 381 while(laps <= number_of_laps) {
HenryWTriff 8:4503c92acaf6 382 //MECHANICS
HenryWTriff 11:7b12992156de 383 laps = Mechanics.Get_Laps(laps, Map_2_Gates, Map_2.number_of_gates, translation, lap_gate); //Get the current lap count
HenryWTriff 11:7b12992156de 384 lap_gate = Mechanics.Get_Gate(Map_2_Gates, Map_2.number_of_gates, translation, lap_gate); //Get the current lap_gate
HenryWTriff 11:7b12992156de 385 angle = Mechanics.Get_Angle(angle, handling, gyro_enabled, Gyro, Device); //Get the current angle
HenryWTriff 11:7b12992156de 386 translation = Mechanics.Get_Translation(translation, angle, speed, Map_2_Out_Of_Bounds_Square, Map_2_Out_Of_Bounds_Triangle, Map_2, Device); //Get the translation
HenryWTriff 8:4503c92acaf6 387 speed = Mechanics.Get_Speed(
HenryWTriff 8:4503c92acaf6 388 speed,
HenryWTriff 8:4503c92acaf6 389 max_speed,
HenryWTriff 8:4503c92acaf6 390 acceleration,
HenryWTriff 8:4503c92acaf6 391 deceleration,
HenryWTriff 8:4503c92acaf6 392 off_track_speed,
HenryWTriff 8:4503c92acaf6 393 translation,
HenryWTriff 8:4503c92acaf6 394 Map_2_Off_Track_Square,
HenryWTriff 8:4503c92acaf6 395 Map_2_Off_Track_Triangle,
HenryWTriff 8:4503c92acaf6 396 Map_2_Out_Of_Bounds_Square,
HenryWTriff 8:4503c92acaf6 397 Map_2_Out_Of_Bounds_Triangle,
HenryWTriff 8:4503c92acaf6 398 Map_2_Boost_Plates,
HenryWTriff 8:4503c92acaf6 399 Map_2,
HenryWTriff 8:4503c92acaf6 400 Device
HenryWTriff 11:7b12992156de 401 ); //Get the speed of the player
HenryWTriff 8:4503c92acaf6 402 //LEDS
HenryWTriff 11:7b12992156de 403 LEDs.Speed(leds, speed, max_speed, Device); //Change the LEDs depending on the speed
HenryWTriff 8:4503c92acaf6 404
HenryWTriff 8:4503c92acaf6 405 //GHOST
HenryWTriff 11:7b12992156de 406 if(ghost_enable == true) { //If ghost mode is enabled
HenryWTriff 11:7b12992156de 407 Ghost.Record(translation, race_time); //Record the position of the player
HenryWTriff 9:7b1093d3f03a 408 }
HenryWTriff 6:5f76dd718dc3 409
HenryWTriff 8:4503c92acaf6 410 //GRAPHICS
HenryWTriff 11:7b12992156de 411 LCD.clear(); //Clear the screen buffer
HenryWTriff 11:7b12992156de 412 Graphics.Change_Contrast(LCD,Device); //Adjust the contrast
HenryWTriff 10:29126a41b1da 413 Graphics.Draw_Map(
HenryWTriff 10:29126a41b1da 414 translation,
HenryWTriff 10:29126a41b1da 415 angle,
HenryWTriff 10:29126a41b1da 416 squish,
HenryWTriff 25:31761087a83f 417 horizon_factor,
HenryWTriff 10:29126a41b1da 418 (Line_2D *) Map_2_Track_Lines,
HenryWTriff 10:29126a41b1da 419 (Line_2D *)Map_2_Track_Dotted_Lines,
HenryWTriff 10:29126a41b1da 420 (Line_2D *)Map_2_Walls,
HenryWTriff 26:f1d3b7e31091 421 (Sprite_2D *)Map_2_Sprites,
HenryWTriff 10:29126a41b1da 422 (Triangle_2D *)Map_2_Boost_Plates,
HenryWTriff 10:29126a41b1da 423 Map_2,
HenryWTriff 10:29126a41b1da 424 car_model,
HenryWTriff 10:29126a41b1da 425 Ghost.Play(ghost_enable, race_time),
HenryWTriff 10:29126a41b1da 426 LCD
HenryWTriff 11:7b12992156de 427 ); //Draw the graphics
HenryWTriff 11:7b12992156de 428 Graphics.Draw_Laps(laps, LCD); //Draw the lap counter
HenryWTriff 11:7b12992156de 429 Graphics.Draw_Time(false, Mechanics.Convert_To_Time(game_fps, race_time), LCD); //Draw the time
HenryWTriff 11:7b12992156de 430 LCD.refresh(); //Refresh the display
HenryWTriff 11:7b12992156de 431 wait((1 / float(game_fps))); //Wait for a short period of time
HenryWTriff 11:7b12992156de 432 race_time++; //Increase the race time
HenryWTriff 6:5f76dd718dc3 433
HenryWTriff 8:4503c92acaf6 434 }
HenryWTriff 8:4503c92acaf6 435
HenryWTriff 6:5f76dd718dc3 436
HenryWTriff 11:7b12992156de 437 LEDs.Clear(Device); //Turn off the LEDs
HenryWTriff 6:5f76dd718dc3 438 LCD.clear();
HenryWTriff 6:5f76dd718dc3 439 Graphics.Draw_Map(
HenryWTriff 6:5f76dd718dc3 440 translation,
HenryWTriff 6:5f76dd718dc3 441 angle,
HenryWTriff 6:5f76dd718dc3 442 squish,
HenryWTriff 25:31761087a83f 443 horizon_factor,
HenryWTriff 8:4503c92acaf6 444 (Line_2D *) Map_2_Track_Lines,
HenryWTriff 8:4503c92acaf6 445 (Line_2D *)Map_2_Track_Dotted_Lines,
HenryWTriff 8:4503c92acaf6 446 (Line_2D *)Map_2_Walls,
HenryWTriff 26:f1d3b7e31091 447 (Sprite_2D *)Map_2_Sprites,
HenryWTriff 8:4503c92acaf6 448 (Triangle_2D *)Map_2_Boost_Plates,
HenryWTriff 8:4503c92acaf6 449 Map_2,
HenryWTriff 7:2ce6e90f6d47 450 car_model,
HenryWTriff 9:7b1093d3f03a 451 Ghost.Play(false, race_time),
HenryWTriff 9:7b1093d3f03a 452 LCD
HenryWTriff 11:7b12992156de 453 ); //Draw the graphics
HenryWTriff 11:7b12992156de 454 Graphics.Finish(LCD); //Display the finish logo
HenryWTriff 11:7b12992156de 455 Graphics.Draw_Time(true, Mechanics.Convert_To_Time(game_fps, race_time), LCD); //Draw the race time
HenryWTriff 11:7b12992156de 456 LCD.refresh(); //Refresh the display
HenryWTriff 11:7b12992156de 457 if(ghost_enable == true) { //If ghost mode enabled
HenryWTriff 25:31761087a83f 458 #ifdef DEBUG
HenryWTriff 25:31761087a83f 459 printf("RACE START\n");
HenryWTriff 25:31761087a83f 460 #endif
HenryWTriff 11:7b12992156de 461 Ghost.Copy(race_time, Medium, car_model, SD); //Copy over the ghost data to the SD card (if race time is quicker)
HenryWTriff 10:29126a41b1da 462 }
HenryWTriff 9:7b1093d3f03a 463
HenryWTriff 11:7b12992156de 464 //RESET ALL VARIABLES
HenryWTriff 9:7b1093d3f03a 465 angle = 0;
HenryWTriff 9:7b1093d3f03a 466 Point_2D test = {0,0};
HenryWTriff 9:7b1093d3f03a 467 translation = test;
HenryWTriff 9:7b1093d3f03a 468 squish = 0.15;
HenryWTriff 9:7b1093d3f03a 469 speed = 0;
HenryWTriff 9:7b1093d3f03a 470 max_speed = 4;
HenryWTriff 9:7b1093d3f03a 471 handling = 2;
HenryWTriff 9:7b1093d3f03a 472 lap_gate = 0;
HenryWTriff 9:7b1093d3f03a 473 laps = 1;
HenryWTriff 9:7b1093d3f03a 474 race_time = 0;
HenryWTriff 9:7b1093d3f03a 475
HenryWTriff 9:7b1093d3f03a 476 wait(3);
HenryWTriff 25:31761087a83f 477
HenryWTriff 25:31761087a83f 478 #ifdef DEBUG
HenryWTriff 25:31761087a83f 479 printf("LOOP\n");
HenryWTriff 25:31761087a83f 480 #endif
HenryWTriff 25:31761087a83f 481
HenryWTriff 9:7b1093d3f03a 482 }
HenryWTriff 11:7b12992156de 483 } else if(Menu.Get_Map() == Large) {
HenryWTriff 9:7b1093d3f03a 484 while(1) {
HenryWTriff 9:7b1093d3f03a 485
HenryWTriff 11:7b12992156de 486 if(ghost_enable == true) { //If ghost mode is enabled
HenryWTriff 25:31761087a83f 487 #ifdef DEBUG
HenryWTriff 25:31761087a83f 488 printf("READING GHOST DATA\n");
HenryWTriff 25:31761087a83f 489 #endif
HenryWTriff 11:7b12992156de 490 Ghost.SD_Read(Large, car_model, SD); //Copy the ghost data from the SD card over to the flash memory (Make take a second)
HenryWTriff 10:29126a41b1da 491 }
HenryWTriff 10:29126a41b1da 492
HenryWTriff 25:31761087a83f 493 #ifdef DEBUG
HenryWTriff 25:31761087a83f 494 printf("COUNTDOWN\n");
HenryWTriff 25:31761087a83f 495 #endif
HenryWTriff 25:31761087a83f 496
HenryWTriff 9:7b1093d3f03a 497 //COUNTDOWN
HenryWTriff 11:7b12992156de 498 for(int count = 3; count >= 0; count--) { //Loop for the countdown
HenryWTriff 25:31761087a83f 499 //Draw the map and the count down numbers
HenryWTriff 9:7b1093d3f03a 500 LCD.clear();
HenryWTriff 9:7b1093d3f03a 501 Graphics.Draw_Map(
HenryWTriff 9:7b1093d3f03a 502 translation,
HenryWTriff 9:7b1093d3f03a 503 angle,
HenryWTriff 9:7b1093d3f03a 504 squish,
HenryWTriff 25:31761087a83f 505 horizon_factor,
HenryWTriff 9:7b1093d3f03a 506 (Line_2D *) Map_3_Track_Lines,
HenryWTriff 9:7b1093d3f03a 507 (Line_2D *)Map_3_Track_Dotted_Lines,
HenryWTriff 9:7b1093d3f03a 508 (Line_2D *)Map_3_Walls,
HenryWTriff 26:f1d3b7e31091 509 (Sprite_2D *)Map_2_Sprites,
HenryWTriff 9:7b1093d3f03a 510 (Triangle_2D *)Map_3_Boost_Plates,
HenryWTriff 9:7b1093d3f03a 511 Map_3,
HenryWTriff 9:7b1093d3f03a 512 car_model,
HenryWTriff 9:7b1093d3f03a 513 Ghost.Play(false, race_time),
HenryWTriff 9:7b1093d3f03a 514 LCD
HenryWTriff 9:7b1093d3f03a 515 );
HenryWTriff 9:7b1093d3f03a 516 Graphics.Start_Sequence(count, LCD);
HenryWTriff 9:7b1093d3f03a 517 LCD.refresh();
HenryWTriff 11:7b12992156de 518 LEDs.Start_Sequence(leds, count, Device); //Display the LED traffic light count down
HenryWTriff 9:7b1093d3f03a 519 wait(1);
HenryWTriff 9:7b1093d3f03a 520 }
HenryWTriff 9:7b1093d3f03a 521 LEDs.Clear(Device);
HenryWTriff 9:7b1093d3f03a 522
HenryWTriff 25:31761087a83f 523 #ifdef DEBUG
HenryWTriff 25:31761087a83f 524 printf("RACE START\n");
HenryWTriff 25:31761087a83f 525 #endif
HenryWTriff 10:29126a41b1da 526
HenryWTriff 11:7b12992156de 527 while(laps <= number_of_laps) { //Loop until the number of laps have been completed
HenryWTriff 9:7b1093d3f03a 528 //MECHANICS
HenryWTriff 11:7b12992156de 529 laps = Mechanics.Get_Laps(laps, Map_3_Gates, Map_3.number_of_gates, translation, lap_gate); //Get the current lap count
HenryWTriff 11:7b12992156de 530 lap_gate = Mechanics.Get_Gate(Map_3_Gates, Map_3.number_of_gates, translation, lap_gate); //Get the current lap_gate
HenryWTriff 11:7b12992156de 531 angle = Mechanics.Get_Angle(angle, handling, gyro_enabled, Gyro, Device); //Get the current angle
HenryWTriff 11:7b12992156de 532 translation = Mechanics.Get_Translation(translation, angle, speed, Map_3_Out_Of_Bounds_Square, Map_3_Out_Of_Bounds_Triangle, Map_3, Device);//Get the translation
HenryWTriff 9:7b1093d3f03a 533 speed = Mechanics.Get_Speed(
HenryWTriff 9:7b1093d3f03a 534 speed,
HenryWTriff 9:7b1093d3f03a 535 max_speed,
HenryWTriff 9:7b1093d3f03a 536 acceleration,
HenryWTriff 9:7b1093d3f03a 537 deceleration,
HenryWTriff 9:7b1093d3f03a 538 off_track_speed,
HenryWTriff 9:7b1093d3f03a 539 translation,
HenryWTriff 9:7b1093d3f03a 540 Map_3_Off_Track_Square,
HenryWTriff 9:7b1093d3f03a 541 Map_3_Off_Track_Triangle,
HenryWTriff 9:7b1093d3f03a 542 Map_3_Out_Of_Bounds_Square,
HenryWTriff 9:7b1093d3f03a 543 Map_3_Out_Of_Bounds_Triangle,
HenryWTriff 9:7b1093d3f03a 544 Map_3_Boost_Plates,
HenryWTriff 9:7b1093d3f03a 545 Map_3,
HenryWTriff 9:7b1093d3f03a 546 Device
HenryWTriff 11:7b12992156de 547 );//Get the speed of the player
HenryWTriff 9:7b1093d3f03a 548
HenryWTriff 9:7b1093d3f03a 549 //LEDS
HenryWTriff 11:7b12992156de 550 LEDs.Speed(leds, speed, max_speed, Device); //Change the LEDs depending on the speed
HenryWTriff 9:7b1093d3f03a 551
HenryWTriff 9:7b1093d3f03a 552 //GHOST
HenryWTriff 11:7b12992156de 553 if(ghost_enable == true) { //If ghost mode is enabled
HenryWTriff 11:7b12992156de 554 Ghost.Record(translation, race_time); //Record the position of the player
HenryWTriff 9:7b1093d3f03a 555 }
HenryWTriff 9:7b1093d3f03a 556
HenryWTriff 9:7b1093d3f03a 557 //GRAPHICS
HenryWTriff 11:7b12992156de 558 LCD.clear(); //Clear the screen
HenryWTriff 11:7b12992156de 559 Graphics.Change_Contrast(LCD,Device); //Adjust the contrast
HenryWTriff 10:29126a41b1da 560 Graphics.Draw_Map(
HenryWTriff 10:29126a41b1da 561 translation,
HenryWTriff 10:29126a41b1da 562 angle,
HenryWTriff 10:29126a41b1da 563 squish,
HenryWTriff 25:31761087a83f 564 horizon_factor,
HenryWTriff 10:29126a41b1da 565 (Line_2D *) Map_3_Track_Lines,
HenryWTriff 10:29126a41b1da 566 (Line_2D *)Map_3_Track_Dotted_Lines,
HenryWTriff 10:29126a41b1da 567 (Line_2D *)Map_3_Walls,
HenryWTriff 26:f1d3b7e31091 568 (Sprite_2D *)Map_3_Sprites,
HenryWTriff 10:29126a41b1da 569 (Triangle_2D *)Map_3_Boost_Plates,
HenryWTriff 10:29126a41b1da 570 Map_3,
HenryWTriff 10:29126a41b1da 571 car_model,
HenryWTriff 10:29126a41b1da 572 Ghost.Play(ghost_enable, race_time),
HenryWTriff 10:29126a41b1da 573 LCD
HenryWTriff 11:7b12992156de 574 ); //Draw the graphics
HenryWTriff 11:7b12992156de 575 Graphics.Draw_Laps(laps, LCD); //Draw the lap counter
HenryWTriff 11:7b12992156de 576 Graphics.Draw_Time(false, Mechanics.Convert_To_Time(game_fps, race_time), LCD); //Draw the time
HenryWTriff 11:7b12992156de 577 LCD.refresh(); //Refresh the display
HenryWTriff 11:7b12992156de 578 wait((1 / float(game_fps))); //Wait for a short period of time
HenryWTriff 11:7b12992156de 579 race_time++; //Increase the race time
HenryWTriff 9:7b1093d3f03a 580 }
HenryWTriff 25:31761087a83f 581
HenryWTriff 11:7b12992156de 582 LEDs.Clear(Device); //Turn off the LEDs
HenryWTriff 9:7b1093d3f03a 583 LCD.clear();
HenryWTriff 9:7b1093d3f03a 584 Graphics.Draw_Map(
HenryWTriff 9:7b1093d3f03a 585 translation,
HenryWTriff 9:7b1093d3f03a 586 angle,
HenryWTriff 9:7b1093d3f03a 587 squish,
HenryWTriff 25:31761087a83f 588 horizon_factor,
HenryWTriff 9:7b1093d3f03a 589 (Line_2D *) Map_3_Track_Lines,
HenryWTriff 9:7b1093d3f03a 590 (Line_2D *)Map_3_Track_Dotted_Lines,
HenryWTriff 9:7b1093d3f03a 591 (Line_2D *)Map_3_Walls,
HenryWTriff 26:f1d3b7e31091 592 (Sprite_2D *)Map_3_Sprites,
HenryWTriff 9:7b1093d3f03a 593 (Triangle_2D *)Map_3_Boost_Plates,
HenryWTriff 9:7b1093d3f03a 594 Map_3,
HenryWTriff 9:7b1093d3f03a 595 car_model,
HenryWTriff 9:7b1093d3f03a 596 Ghost.Play(false, race_time),
HenryWTriff 6:5f76dd718dc3 597 LCD
HenryWTriff 11:7b12992156de 598 ); //Draw the graphics
HenryWTriff 11:7b12992156de 599 Graphics.Finish(LCD); //Display the finish logo
HenryWTriff 11:7b12992156de 600 Graphics.Draw_Time(true, Mechanics.Convert_To_Time(game_fps, race_time), LCD); //Draw the race time
HenryWTriff 11:7b12992156de 601 LCD.refresh(); //Refresh the display
HenryWTriff 11:7b12992156de 602 if(ghost_enable == true) { //If ghost mode enabled
HenryWTriff 25:31761087a83f 603 #ifdef DEBUG
HenryWTriff 25:31761087a83f 604 printf("RACE START\n");
HenryWTriff 25:31761087a83f 605 #endif
HenryWTriff 11:7b12992156de 606 Ghost.Copy(race_time, Large, car_model, SD); //Copy over the ghost data to the SD card (if race time is quicker)
HenryWTriff 10:29126a41b1da 607 }
HenryWTriff 7:2ce6e90f6d47 608
HenryWTriff 11:7b12992156de 609 //RESET ALL VARIABLES
HenryWTriff 8:4503c92acaf6 610 angle = 0;
HenryWTriff 8:4503c92acaf6 611 Point_2D test = {0,0};
HenryWTriff 8:4503c92acaf6 612 translation = test;
HenryWTriff 8:4503c92acaf6 613 squish = 0.15;
HenryWTriff 8:4503c92acaf6 614 speed = 0;
HenryWTriff 8:4503c92acaf6 615 max_speed = 4;
HenryWTriff 8:4503c92acaf6 616 handling = 2;
HenryWTriff 8:4503c92acaf6 617 lap_gate = 0;
HenryWTriff 8:4503c92acaf6 618 laps = 1;
HenryWTriff 8:4503c92acaf6 619 race_time = 0;
HenryWTriff 25:31761087a83f 620 wait(3);
HenryWTriff 6:5f76dd718dc3 621
HenryWTriff 25:31761087a83f 622 #ifdef DEBUG
HenryWTriff 25:31761087a83f 623 printf("LOOP\n");
HenryWTriff 25:31761087a83f 624 #endif
HenryWTriff 25:31761087a83f 625
HenryWTriff 8:4503c92acaf6 626 }
HenryWTriff 2:d08b6a1eaf2b 627 }
eencae 0:b7f1f47bb26a 628 }
eencae 0:b7f1f47bb26a 629