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.
Diff: SavedGames/SavedGames.cpp
- Revision:
- 53:01be7898c23f
- Parent:
- 52:feb8cf28bcff
- Child:
- 54:d46459104dea
diff -r feb8cf28bcff -r 01be7898c23f SavedGames/SavedGames.cpp --- a/SavedGames/SavedGames.cpp Tue May 19 17:08:06 2020 +0000 +++ b/SavedGames/SavedGames.cpp Tue May 19 17:59:07 2020 +0000 @@ -10,8 +10,7 @@ void SavedGames::init(SDFileSystem &sd,N5110 &lcd){ error_ = false; - check_sd_present(sd,lcd); - check_open_file(sd,lcd); + check_sd_present(sd,lcd); } void SavedGames::check_sd_present(SDFileSystem &sd,N5110 &lcd){ @@ -27,43 +26,83 @@ } } -void SavedGames::check_open_file(SDFileSystem &sd,N5110 &lcd){ - //opens file - FILE *fp; - fp = fopen("/sd/SavedGames.text", "a"); - - //checks if file is opened corectly - if (fp == NULL) { - error_ = true; +void SavedGames::error_open_file(N5110 &lcd){ + error_ = true; - //print error screen - lcd.clear(); - lcd.printString(" Unable to ",9,3); - lcd.printString(" open file ",9,4); - lcd.refresh(); - wait(3); - } + //print error screen + lcd.clear(); + lcd.printString(" Unable to ",9,3); + lcd.printString(" open file ",9,4); + lcd.refresh(); + wait(3); } -void SavedGames::add_saved_data(SDFileSystem &sd, SavedGamesData data, +void SavedGames::add_saved_data(SDFileSystem &sd, SavedGamesData data, N5110 &lcd){ - check_open_file(sd,lcd); - //opens file - FILE *fp; - fp = fopen("/sd/SavedGames.text", "a"); + FILE *fp = fopen("/sd/SavedGames.txt", "a"); - //Adda data to file if no error - if(!error_){ + if (fp == NULL) { + error_open_file(lcd); + return; + }else{ + //Adda data to file if no error fprintf(fp, "%d\n", data.score); fprintf(fp, "%d\n", data.lives); fprintf(fp, "%d\n", data.smart_bombs); fprintf(fp, "%d\n", data.alien_number); fclose(fp); - } + } +} + +void SavedGames::read_saved_data(SDFileSystem &sd, N5110 &lcd){ + //opens file + FILE *fp = fopen("/sd/SavedGames.txt", "r"); + + if (fp == NULL) { + error_open_file(lcd); + return; + + //Reads saved data into vector + }else{ + int line_number = 0; + int *data_array; + + //count number of lines in files + while (fscanf(fp, "%*d") != EOF) { + line_number++; + } + //creats data arrays + data_array = (int *)calloc(line_number, sizeof (int)); + + //Reads into arrays + int i = 0; + rewind(fp); + while (fscanf(fp, "%d",&data_array[i]) != EOF) { + i++; + } + + // puts array data into structs and sotres structs in vector + for(int i = 0; i <= line_number; i+=4){ + //creats objects + SavedGamesData data; + + //sets data + data.score = data_array[i]; + data.lives = data_array[i+1]; + data.smart_bombs = data_array[i+2]; + data.alien_number = data_array[i+3]; + + //store object in vector + saved_data_vector.push_back(data); + } + + fclose(fp); + } } + bool SavedGames::get_error(){ return error_; }