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
--- 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_;
}