Henry Triff / Mbed 2 deprecated ELEC2645_Project_el18ht

Dependencies:   mbed

Committer:
HenryWTriff
Date:
Sat Mar 28 12:41:25 2020 +0000
Revision:
16:17f91f51358f
Parent:
11:7b12992156de
Child:
17:4c5f25d5c4d5
Ghost Documentation Done

Who changed what in which revision?

UserRevisionLine numberNew contents of line
HenryWTriff 6:5f76dd718dc3 1 #include "Ghost.h"
HenryWTriff 6:5f76dd718dc3 2
HenryWTriff 16:17f91f51358f 3 Ghost::Ghost()
HenryWTriff 16:17f91f51358f 4 {
HenryWTriff 16:17f91f51358f 5 }
HenryWTriff 16:17f91f51358f 6
HenryWTriff 16:17f91f51358f 7 Ghost::~Ghost()
HenryWTriff 16:17f91f51358f 8 {
HenryWTriff 16:17f91f51358f 9 }
HenryWTriff 16:17f91f51358f 10
HenryWTriff 11:7b12992156de 11 void Ghost::Record(Point_2D position, int race_time) //Save the current position of player to Ghost_Data
HenryWTriff 6:5f76dd718dc3 12 {
HenryWTriff 11:7b12992156de 13 if(race_time < 6000) { //Set Max time to be 6000 frames ≈ 2mins
HenryWTriff 11:7b12992156de 14 Ghost_Data[race_time] = position; //Save position to Ghost_Data
HenryWTriff 6:5f76dd718dc3 15 }
HenryWTriff 6:5f76dd718dc3 16 }
HenryWTriff 6:5f76dd718dc3 17
HenryWTriff 11:7b12992156de 18 void Ghost::Copy(int race_time, int track, int car, SDFileSystem &SD) //Copy the Ghost_Data to the SD Card
HenryWTriff 6:5f76dd718dc3 19 {
HenryWTriff 11:7b12992156de 20 int time = SD_Get_Time(track, car, SD); //Get the best time recorded for that track and car so far
HenryWTriff 10:29126a41b1da 21
HenryWTriff 11:7b12992156de 22 if(race_time < time) { //If the time just raced is less than the previos best
HenryWTriff 11:7b12992156de 23 SD_Write(track, car, race_time, SD); //Over write Ghost_Data to the SD Card
HenryWTriff 6:5f76dd718dc3 24 }
HenryWTriff 6:5f76dd718dc3 25 }
HenryWTriff 6:5f76dd718dc3 26
HenryWTriff 11:7b12992156de 27 Point_2D Ghost::Play(bool ghost_available, int race_time) //Get the position of the Ghost for a given frame (time)
HenryWTriff 6:5f76dd718dc3 28 {
HenryWTriff 11:7b12992156de 29 if(ghost_available == true) { //If in ghost mode
HenryWTriff 11:7b12992156de 30 if(race_time < Ghost_Held_Data_Time && race_time < 6000) { //If the time is less than the max time for a given race and less than 6000 max
HenryWTriff 11:7b12992156de 31 return Ghost_Held_Data[race_time]; //Return the value in the array Ghost_Held_Data for that frame
HenryWTriff 6:5f76dd718dc3 32 }
HenryWTriff 6:5f76dd718dc3 33 } else {
HenryWTriff 11:7b12992156de 34 return {1000,1000}; //Return a position that is way out out of map bounds
HenryWTriff 6:5f76dd718dc3 35 }
HenryWTriff 6:5f76dd718dc3 36 }
HenryWTriff 10:29126a41b1da 37
HenryWTriff 16:17f91f51358f 38 void Ghost::SD_init(SDFileSystem &SD) //Sets up the SD card so that it contains the right files and writes them with data
HenryWTriff 10:29126a41b1da 39 {
HenryWTriff 11:7b12992156de 40 for(int i = 0; i < 6000; i++) { //Up to 6000 frames (max)
HenryWTriff 11:7b12992156de 41 Ghost_Data[i].x = 10000; //Set the Ghost_Data position to be way out of map bounds
HenryWTriff 10:29126a41b1da 42 Ghost_Data[i].y = 10000;
HenryWTriff 10:29126a41b1da 43 }
HenryWTriff 11:7b12992156de 44
HenryWTriff 11:7b12992156de 45 //Write each different file for each combination of car and track with Ghost_Data
HenryWTriff 10:29126a41b1da 46 SD_Write(Small, Basic, 6000, SD);
HenryWTriff 10:29126a41b1da 47 SD_Write(Small, Offroad, 6000, SD);
HenryWTriff 10:29126a41b1da 48 SD_Write(Small, Drifter, 6000, SD);
HenryWTriff 10:29126a41b1da 49 SD_Write(Small, Sportscar, 6000, SD);
HenryWTriff 10:29126a41b1da 50 SD_Write(Small, Racecar, 6000, SD);
HenryWTriff 10:29126a41b1da 51 SD_Write(Small, Stupid, 6000, SD);
HenryWTriff 10:29126a41b1da 52 SD_Write(Medium, Basic, 6000, SD);
HenryWTriff 10:29126a41b1da 53 SD_Write(Medium, Offroad, 6000, SD);
HenryWTriff 10:29126a41b1da 54 SD_Write(Medium, Drifter, 6000, SD);
HenryWTriff 10:29126a41b1da 55 SD_Write(Medium, Sportscar, 6000, SD);
HenryWTriff 10:29126a41b1da 56 SD_Write(Medium, Racecar, 6000, SD);
HenryWTriff 10:29126a41b1da 57 SD_Write(Medium, Stupid, 6000, SD);
HenryWTriff 10:29126a41b1da 58 SD_Write(Large, Basic, 6000, SD);
HenryWTriff 10:29126a41b1da 59 SD_Write(Large, Offroad, 6000, SD);
HenryWTriff 10:29126a41b1da 60 SD_Write(Large, Drifter, 6000, SD);
HenryWTriff 10:29126a41b1da 61 SD_Write(Large, Sportscar, 6000, SD);
HenryWTriff 10:29126a41b1da 62 SD_Write(Large, Racecar, 6000, SD);
HenryWTriff 10:29126a41b1da 63 SD_Write(Large, Stupid, 6000, SD);
HenryWTriff 10:29126a41b1da 64 }
HenryWTriff 10:29126a41b1da 65
HenryWTriff 11:7b12992156de 66 void Ghost::SD_Write(int track, int car, int race_time, SDFileSystem &SD) //Produce the correct file name and write Ghost_Data
HenryWTriff 10:29126a41b1da 67 {
HenryWTriff 11:7b12992156de 68 SD_Write_Time(track, car, race_time, SD); //Write the time for the previos race
HenryWTriff 10:29126a41b1da 69
HenryWTriff 11:7b12992156de 70 string name_track = ""; //Declare track string
HenryWTriff 11:7b12992156de 71 string name_car = ""; //Declare car string
HenryWTriff 10:29126a41b1da 72
HenryWTriff 11:7b12992156de 73 //For each type of track, set track string to the correct name
HenryWTriff 10:29126a41b1da 74 if(track == Small) {
HenryWTriff 10:29126a41b1da 75 name_track = "_Sml";
HenryWTriff 10:29126a41b1da 76 } else if(track == Medium) {
HenryWTriff 10:29126a41b1da 77 name_track = "_Med";
HenryWTriff 10:29126a41b1da 78 } else if(track == Large) {
HenryWTriff 10:29126a41b1da 79 name_track = "_Lrg";
HenryWTriff 10:29126a41b1da 80 }
HenryWTriff 11:7b12992156de 81
HenryWTriff 11:7b12992156de 82 //For each type of car, set car string to the correct name.
HenryWTriff 11:7b12992156de 83 //'X' is used to ensure all strings are the same length
HenryWTriff 10:29126a41b1da 84 if(car == Basic) {
HenryWTriff 10:29126a41b1da 85 name_car = "_BasicXXXX";
HenryWTriff 10:29126a41b1da 86 } else if(car == Offroad) {
HenryWTriff 10:29126a41b1da 87 name_car = "_OffRoadXX";
HenryWTriff 10:29126a41b1da 88 } else if(car == Drifter) {
HenryWTriff 10:29126a41b1da 89 name_car = "_DrifterXX";
HenryWTriff 10:29126a41b1da 90 } else if(car == Sportscar) {
HenryWTriff 10:29126a41b1da 91 name_car = "_SportsCar";
HenryWTriff 10:29126a41b1da 92 } else if(car == Racecar) {
HenryWTriff 10:29126a41b1da 93 name_car = "_RaceCarXX";
HenryWTriff 10:29126a41b1da 94 } else if(car == Stupid) {
HenryWTriff 10:29126a41b1da 95 name_car = "_StupidXXX";
HenryWTriff 10:29126a41b1da 96 }
HenryWTriff 10:29126a41b1da 97
HenryWTriff 11:7b12992156de 98 string name = "/sd/ghost" + name_track + name_car + ".txt"; //Concatenate the strings to produce the file name
HenryWTriff 11:7b12992156de 99 SD_Write_Data(name, race_time, SD); //Write the data
HenryWTriff 10:29126a41b1da 100 }
HenryWTriff 10:29126a41b1da 101
HenryWTriff 11:7b12992156de 102 void Ghost::SD_Read(int track, int car, SDFileSystem &SD) //Produce the correct file name and read data
HenryWTriff 10:29126a41b1da 103 {
HenryWTriff 11:7b12992156de 104 SD_Read_Time(track, car, SD); //Read the time from the SD card
HenryWTriff 10:29126a41b1da 105
HenryWTriff 11:7b12992156de 106 string name_track; //Declare track string
HenryWTriff 11:7b12992156de 107 string name_car; //Declare car string
HenryWTriff 11:7b12992156de 108
HenryWTriff 11:7b12992156de 109 //For each type of track, set track string to the correct name
HenryWTriff 10:29126a41b1da 110 if(track == Small) {
HenryWTriff 10:29126a41b1da 111 name_track = "_Sml";
HenryWTriff 10:29126a41b1da 112 } else if(track == Medium) {
HenryWTriff 10:29126a41b1da 113 name_track = "_Med";
HenryWTriff 10:29126a41b1da 114 } else if(track == Large) {
HenryWTriff 10:29126a41b1da 115 name_track = "_Lrg";
HenryWTriff 10:29126a41b1da 116 }
HenryWTriff 11:7b12992156de 117
HenryWTriff 11:7b12992156de 118 //For each type of car, set car string to the correct name.
HenryWTriff 11:7b12992156de 119 //'X' is used to ensure all strings are the same length
HenryWTriff 10:29126a41b1da 120 if(car == Basic) {
HenryWTriff 10:29126a41b1da 121 name_car = "_BasicXXXX";
HenryWTriff 10:29126a41b1da 122 } else if(car == Offroad) {
HenryWTriff 10:29126a41b1da 123 name_car = "_OffRoadXX";
HenryWTriff 10:29126a41b1da 124 } else if(car == Drifter) {
HenryWTriff 10:29126a41b1da 125 name_car = "_DrifterXX";
HenryWTriff 10:29126a41b1da 126 } else if(car == Sportscar) {
HenryWTriff 10:29126a41b1da 127 name_car = "_SportsCar";
HenryWTriff 10:29126a41b1da 128 } else if(car == Racecar) {
HenryWTriff 10:29126a41b1da 129 name_car = "_RaceCarXX";
HenryWTriff 10:29126a41b1da 130 } else if(car == Stupid) {
HenryWTriff 10:29126a41b1da 131 name_car = "_StupidXXX";
HenryWTriff 10:29126a41b1da 132 }
HenryWTriff 10:29126a41b1da 133
HenryWTriff 11:7b12992156de 134 string name = "/sd/ghost" + name_track + name_car + ".txt"; //Concatenate the strings to produce the file name
HenryWTriff 11:7b12992156de 135 SD_Read_Data(name, Ghost_Held_Data_Time, SD);//Read the data
HenryWTriff 10:29126a41b1da 136 }
HenryWTriff 10:29126a41b1da 137
HenryWTriff 10:29126a41b1da 138 //**************
HenryWTriff 10:29126a41b1da 139 // WRITE DATA
HenryWTriff 10:29126a41b1da 140 //**************
HenryWTriff 10:29126a41b1da 141
HenryWTriff 11:7b12992156de 142 void Ghost::SD_Write_Data(string name, int race_time, SDFileSystem &SD) //Write Ghost data to the given file
HenryWTriff 10:29126a41b1da 143 {
HenryWTriff 11:7b12992156de 144 char name_char[27]; //Create the char array for the file name
HenryWTriff 10:29126a41b1da 145
HenryWTriff 11:7b12992156de 146 //Conver string name to char array
HenryWTriff 10:29126a41b1da 147 for(int i = 0; i < 27; i++) {
HenryWTriff 10:29126a41b1da 148 name_char[i] = name[i];
HenryWTriff 10:29126a41b1da 149 }
HenryWTriff 11:7b12992156de 150
HenryWTriff 11:7b12992156de 151 FILE *file_data; //Create file pointer
HenryWTriff 10:29126a41b1da 152 wait(0.1);
HenryWTriff 11:7b12992156de 153 file_data = fopen(name_char, "w"); //Open file for writing
HenryWTriff 11:7b12992156de 154 if (file_data == NULL) { //If file fails to open
HenryWTriff 10:29126a41b1da 155 while(1);
HenryWTriff 11:7b12992156de 156 } else { //Else
HenryWTriff 11:7b12992156de 157 for(int i = 0; i < race_time; i++) { //Write Ghost_Data to SD up to the race_time for the ghost_Data
HenryWTriff 10:29126a41b1da 158 fprintf(file_data, "%f,%f\n",Ghost_Data[i].x,Ghost_Data[i].y);
HenryWTriff 10:29126a41b1da 159 }
HenryWTriff 11:7b12992156de 160 for(int i = 0; i < (6000 - race_time); i++) { //For the remaining time
HenryWTriff 11:7b12992156de 161 float end_point = 10000;
HenryWTriff 11:7b12992156de 162 fprintf(file_data, "%f,%f\n",end_point,end_point); //Set the position of the ghost to be way off map
HenryWTriff 10:29126a41b1da 163 }
HenryWTriff 11:7b12992156de 164 fclose(file_data); //Close the file
HenryWTriff 10:29126a41b1da 165 }
HenryWTriff 10:29126a41b1da 166 }
HenryWTriff 10:29126a41b1da 167
HenryWTriff 10:29126a41b1da 168 void Ghost::SD_Write_Time(int track, int car, int race_time, SDFileSystem &SD)
HenryWTriff 10:29126a41b1da 169 {
HenryWTriff 11:7b12992156de 170 FILE *file_time_read; //Create pointer
HenryWTriff 10:29126a41b1da 171 wait(0.1);
HenryWTriff 10:29126a41b1da 172
HenryWTriff 11:7b12992156de 173 file_time_read = fopen("/sd/ghost_data.txt", "r"); //Open reading from file
HenryWTriff 11:7b12992156de 174 int track_time_array[3][6]; //Create an array
HenryWTriff 10:29126a41b1da 175
HenryWTriff 11:7b12992156de 176 if(file_time_read == NULL) { //If file failed to open
HenryWTriff 10:29126a41b1da 177 while(1);
HenryWTriff 11:7b12992156de 178 } else { //Else
HenryWTriff 10:29126a41b1da 179 fscanf(
HenryWTriff 10:29126a41b1da 180 file_time_read,
HenryWTriff 10:29126a41b1da 181 "%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i",
HenryWTriff 10:29126a41b1da 182 &track_time_array[0][0],
HenryWTriff 10:29126a41b1da 183 &track_time_array[0][1],
HenryWTriff 10:29126a41b1da 184 &track_time_array[0][2],
HenryWTriff 10:29126a41b1da 185 &track_time_array[0][3],
HenryWTriff 10:29126a41b1da 186 &track_time_array[0][4],
HenryWTriff 10:29126a41b1da 187 &track_time_array[0][5],
HenryWTriff 10:29126a41b1da 188 &track_time_array[1][0],
HenryWTriff 10:29126a41b1da 189 &track_time_array[1][1],
HenryWTriff 10:29126a41b1da 190 &track_time_array[1][2],
HenryWTriff 10:29126a41b1da 191 &track_time_array[1][3],
HenryWTriff 10:29126a41b1da 192 &track_time_array[1][4],
HenryWTriff 10:29126a41b1da 193 &track_time_array[1][5],
HenryWTriff 10:29126a41b1da 194 &track_time_array[2][0],
HenryWTriff 10:29126a41b1da 195 &track_time_array[2][1],
HenryWTriff 10:29126a41b1da 196 &track_time_array[2][2],
HenryWTriff 10:29126a41b1da 197 &track_time_array[2][3],
HenryWTriff 10:29126a41b1da 198 &track_time_array[2][4],
HenryWTriff 10:29126a41b1da 199 &track_time_array[2][5]
HenryWTriff 11:7b12992156de 200 ); //Read first line from file (containing all times)
HenryWTriff 10:29126a41b1da 201 }
HenryWTriff 11:7b12992156de 202 fclose(file_time_read); //Close file
HenryWTriff 10:29126a41b1da 203
HenryWTriff 11:7b12992156de 204 track_time_array[track][car] = race_time; //Set the time for that track and car to the race_time
HenryWTriff 10:29126a41b1da 205
HenryWTriff 11:7b12992156de 206 FILE *file_time_write; //Create pointer
HenryWTriff 10:29126a41b1da 207 wait(0.1);
HenryWTriff 10:29126a41b1da 208
HenryWTriff 11:7b12992156de 209 file_time_write = fopen("/sd/ghost_data.txt", "w"); //Open writing from file
HenryWTriff 11:7b12992156de 210 if(file_time_write == NULL) { //If file fails to open
HenryWTriff 10:29126a41b1da 211 while(1);
HenryWTriff 10:29126a41b1da 212 } else {
HenryWTriff 10:29126a41b1da 213 fprintf(
HenryWTriff 10:29126a41b1da 214 file_time_write,
HenryWTriff 10:29126a41b1da 215 "%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i",
HenryWTriff 10:29126a41b1da 216 track_time_array[0][0],
HenryWTriff 10:29126a41b1da 217 track_time_array[0][1],
HenryWTriff 10:29126a41b1da 218 track_time_array[0][2],
HenryWTriff 10:29126a41b1da 219 track_time_array[0][3],
HenryWTriff 10:29126a41b1da 220 track_time_array[0][4],
HenryWTriff 10:29126a41b1da 221 track_time_array[0][5],
HenryWTriff 10:29126a41b1da 222 track_time_array[1][0],
HenryWTriff 10:29126a41b1da 223 track_time_array[1][1],
HenryWTriff 10:29126a41b1da 224 track_time_array[1][2],
HenryWTriff 10:29126a41b1da 225 track_time_array[1][3],
HenryWTriff 10:29126a41b1da 226 track_time_array[1][4],
HenryWTriff 10:29126a41b1da 227 track_time_array[1][5],
HenryWTriff 10:29126a41b1da 228 track_time_array[2][0],
HenryWTriff 10:29126a41b1da 229 track_time_array[2][1],
HenryWTriff 10:29126a41b1da 230 track_time_array[2][2],
HenryWTriff 10:29126a41b1da 231 track_time_array[2][3],
HenryWTriff 10:29126a41b1da 232 track_time_array[2][4],
HenryWTriff 10:29126a41b1da 233 track_time_array[2][5]
HenryWTriff 11:7b12992156de 234 ); //Write all timings
HenryWTriff 10:29126a41b1da 235 }
HenryWTriff 11:7b12992156de 236 fclose(file_time_write); //Close file
HenryWTriff 10:29126a41b1da 237 }
HenryWTriff 10:29126a41b1da 238
HenryWTriff 10:29126a41b1da 239 void Ghost::SD_Read_Data(string name, int race_time, SDFileSystem &SD)
HenryWTriff 10:29126a41b1da 240 {
HenryWTriff 11:7b12992156de 241 //Create char name
HenryWTriff 11:7b12992156de 242 char name_char[27];
HenryWTriff 11:7b12992156de 243
HenryWTriff 11:7b12992156de 244 //Convert from string to char
HenryWTriff 10:29126a41b1da 245 for(int i = 0; i < name.length(); i++) {
HenryWTriff 10:29126a41b1da 246 name_char[i] = name[i];
HenryWTriff 10:29126a41b1da 247 }
HenryWTriff 11:7b12992156de 248
HenryWTriff 11:7b12992156de 249 FILE *file_data; //Open pointer
HenryWTriff 10:29126a41b1da 250 wait(0.1);
HenryWTriff 11:7b12992156de 251 file_data = fopen(name_char, "r"); //Open file with name
HenryWTriff 10:29126a41b1da 252 float x_point = 10000;
HenryWTriff 10:29126a41b1da 253 float y_point = 10000;
HenryWTriff 10:29126a41b1da 254 int i = 0;
HenryWTriff 11:7b12992156de 255 if(file_data == NULL) { //If file fails to open
HenryWTriff 10:29126a41b1da 256 while(1);
HenryWTriff 11:7b12992156de 257 } else { //Else
HenryWTriff 11:7b12992156de 258 for(int i = 0; i < race_time; i++) { //Up to the total race time
HenryWTriff 11:7b12992156de 259 fscanf(file_data, "%f,%f", &x_point, &y_point); //Read the point data for each frame
HenryWTriff 11:7b12992156de 260 Ghost_Held_Data[i].x = x_point; //Save each point to Ghost_Held_Data
HenryWTriff 11:7b12992156de 261 Ghost_Held_Data[i].y = y_point;
HenryWTriff 10:29126a41b1da 262 }
HenryWTriff 11:7b12992156de 263 for(int i = 0; i < (6000 - race_time); i++) { //For the remaining time
HenryWTriff 11:7b12992156de 264 Ghost_Held_Data[(i + race_time)].x = 10000; //Set Ghost_Held_Data to 10000,10000
HenryWTriff 10:29126a41b1da 265 Ghost_Held_Data[(i + race_time)].y = 10000;
HenryWTriff 10:29126a41b1da 266 }
HenryWTriff 11:7b12992156de 267 fclose(file_data); //Close file
HenryWTriff 10:29126a41b1da 268 }
HenryWTriff 10:29126a41b1da 269 }
HenryWTriff 10:29126a41b1da 270
HenryWTriff 11:7b12992156de 271 void Ghost::SD_Read_Time(int track, int car, SDFileSystem &SD) //Read the time for the given track and car
HenryWTriff 10:29126a41b1da 272 {
HenryWTriff 11:7b12992156de 273 FILE *file_time; //Create pointer
HenryWTriff 10:29126a41b1da 274 wait(0.1);
HenryWTriff 10:29126a41b1da 275
HenryWTriff 11:7b12992156de 276 file_time = fopen("/sd/ghost_data.txt", "r"); //Open file
HenryWTriff 11:7b12992156de 277 int track_time_array[3][6]; //Create an array
HenryWTriff 10:29126a41b1da 278
HenryWTriff 11:7b12992156de 279 if(file_time == NULL) { //If file fails to open
HenryWTriff 10:29126a41b1da 280 while(1);
HenryWTriff 10:29126a41b1da 281 } else {
HenryWTriff 10:29126a41b1da 282 fscanf(
HenryWTriff 10:29126a41b1da 283 file_time,
HenryWTriff 10:29126a41b1da 284 "%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i",
HenryWTriff 10:29126a41b1da 285 &track_time_array[0][0],
HenryWTriff 10:29126a41b1da 286 &track_time_array[0][1],
HenryWTriff 10:29126a41b1da 287 &track_time_array[0][2],
HenryWTriff 10:29126a41b1da 288 &track_time_array[0][3],
HenryWTriff 10:29126a41b1da 289 &track_time_array[0][4],
HenryWTriff 10:29126a41b1da 290 &track_time_array[0][5],
HenryWTriff 10:29126a41b1da 291 &track_time_array[1][0],
HenryWTriff 10:29126a41b1da 292 &track_time_array[1][1],
HenryWTriff 10:29126a41b1da 293 &track_time_array[1][2],
HenryWTriff 10:29126a41b1da 294 &track_time_array[1][3],
HenryWTriff 10:29126a41b1da 295 &track_time_array[1][4],
HenryWTriff 10:29126a41b1da 296 &track_time_array[1][5],
HenryWTriff 10:29126a41b1da 297 &track_time_array[2][0],
HenryWTriff 10:29126a41b1da 298 &track_time_array[2][1],
HenryWTriff 10:29126a41b1da 299 &track_time_array[2][2],
HenryWTriff 10:29126a41b1da 300 &track_time_array[2][3],
HenryWTriff 10:29126a41b1da 301 &track_time_array[2][4],
HenryWTriff 10:29126a41b1da 302 &track_time_array[2][5]
HenryWTriff 11:7b12992156de 303 ); //Read from file
HenryWTriff 10:29126a41b1da 304 }
HenryWTriff 11:7b12992156de 305 fclose(file_time); //Close file
HenryWTriff 10:29126a41b1da 306
HenryWTriff 11:7b12992156de 307 Ghost_Held_Data_Time = track_time_array[track][car]; //Set Ghost_Held_Data_Time to the time for the track and car
HenryWTriff 10:29126a41b1da 308 }
HenryWTriff 10:29126a41b1da 309
HenryWTriff 11:7b12992156de 310 int Ghost::SD_Get_Time(int track, int car, SDFileSystem &SD) //Get the time for a given track and car
HenryWTriff 10:29126a41b1da 311 {
HenryWTriff 11:7b12992156de 312 FILE *file_time; //Create pointer
HenryWTriff 10:29126a41b1da 313 wait(0.1);
HenryWTriff 10:29126a41b1da 314
HenryWTriff 11:7b12992156de 315 file_time = fopen("/sd/ghost_data.txt", "r"); //Open reading file
HenryWTriff 11:7b12992156de 316 int track_time_array[3][6]; //Create an array
HenryWTriff 10:29126a41b1da 317
HenryWTriff 11:7b12992156de 318 if(file_time == NULL) { //If the file fails to open
HenryWTriff 10:29126a41b1da 319 while(1);
HenryWTriff 10:29126a41b1da 320 } else {
HenryWTriff 10:29126a41b1da 321 fscanf(
HenryWTriff 10:29126a41b1da 322 file_time,
HenryWTriff 10:29126a41b1da 323 "%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i,%i",
HenryWTriff 10:29126a41b1da 324 &track_time_array[0][0],
HenryWTriff 10:29126a41b1da 325 &track_time_array[0][1],
HenryWTriff 10:29126a41b1da 326 &track_time_array[0][2],
HenryWTriff 10:29126a41b1da 327 &track_time_array[0][3],
HenryWTriff 10:29126a41b1da 328 &track_time_array[0][4],
HenryWTriff 10:29126a41b1da 329 &track_time_array[0][5],
HenryWTriff 10:29126a41b1da 330 &track_time_array[1][0],
HenryWTriff 10:29126a41b1da 331 &track_time_array[1][1],
HenryWTriff 10:29126a41b1da 332 &track_time_array[1][2],
HenryWTriff 10:29126a41b1da 333 &track_time_array[1][3],
HenryWTriff 10:29126a41b1da 334 &track_time_array[1][4],
HenryWTriff 10:29126a41b1da 335 &track_time_array[1][5],
HenryWTriff 10:29126a41b1da 336 &track_time_array[2][0],
HenryWTriff 10:29126a41b1da 337 &track_time_array[2][1],
HenryWTriff 10:29126a41b1da 338 &track_time_array[2][2],
HenryWTriff 10:29126a41b1da 339 &track_time_array[2][3],
HenryWTriff 10:29126a41b1da 340 &track_time_array[2][4],
HenryWTriff 10:29126a41b1da 341 &track_time_array[2][5]
HenryWTriff 11:7b12992156de 342 ); //Read from the file
HenryWTriff 10:29126a41b1da 343 }
HenryWTriff 11:7b12992156de 344 fclose(file_time); //Close file
HenryWTriff 10:29126a41b1da 345
HenryWTriff 11:7b12992156de 346 return track_time_array[track][car]; //Return the time for a given track and car
HenryWTriff 10:29126a41b1da 347 }