Henry Triff / Mbed 2 deprecated ELEC2645_Project_el18ht

Dependencies:   mbed

Committer:
HenryWTriff
Date:
Sat Mar 28 12:50:59 2020 +0000
Revision:
17:4c5f25d5c4d5
Parent:
16:17f91f51358f
Child:
25:31761087a83f
;

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