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.
Ghost/Ghost.cpp@17:4c5f25d5c4d5, 2020-03-28 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |