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:
- 59:0b2e43312d6b
- Parent:
- 55:c04568b25617
- Child:
- 60:55fdc6bb29b9
--- a/SavedGames/SavedGames.cpp Tue May 19 20:21:41 2020 +0000 +++ b/SavedGames/SavedGames.cpp Wed May 20 17:47:18 2020 +0000 @@ -21,10 +21,11 @@ } void SavedGames::init(SDFileSystem &sd,N5110 &lcd){ + SavedGamesData data; error_ = false; check_sd_present(sd,lcd); - read_saved_data(sd,lcd); display_data_number_ = 0; + add_saved_data(sd, data, lcd); } void SavedGames::check_sd_present(SDFileSystem &sd,N5110 &lcd){ @@ -51,90 +52,90 @@ wait(3); } -void SavedGames::add_saved_data(SDFileSystem &sd, SavedGamesData data, -N5110 &lcd){ +void SavedGames::add_saved_data(SDFileSystem &sd,SavedGamesData data, + N5110 &lcd){ //opens file - FILE *fp = fopen("/sd/SavedGames.txt", "a"); + FILE *fp = fopen("/sd/SavedGames.csv", "w"); 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); + fprintf(fp, "%d,%d,%d,%d\n", data.score, data.lives, data.smart_bombs, + data.alien_number); fclose(fp); } } void SavedGames::read_saved_data(SDFileSystem &sd, N5110 &lcd){ //opens file - FILE *fp = fopen("/sd/SavedGames.txt", "r"); + FILE *fp = fopen("/sd/SavedGames.csv", "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++; - } + int lives; + int score; + int alien_number; + int smart_bombs; - // puts array data into structs and sotres structs in vector - for(int i = 0; i <= line_number; i+=4){ - //creats objects + while (fscanf(fp, "%d,%d,%d,%d",&score, &lives,&smart_bombs, + &alien_number) != EOF) { + //creats object SavedGamesData data; + + //sets data to object + data.score = score; + printf ("data.score = %d \n", data.score); + data.lives = lives; + printf ("data.lives = %d \n", data.lives); + data.smart_bombs = smart_bombs; + printf ("data.smart_bombs = %d \n", data.smart_bombs); + data.alien_number = alien_number; + printf ("data.alien_number = %d \n", data.lives); - //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); + //Add object to vector + saved_data_vector.push_back(data); } - + //printf ("saved_data_vector_ 1%d \n", saved_data_vector.size()); fclose(fp); - } + + } + + } void SavedGames::display_saved_games(N5110 &lcd){ lcd.clear(); //prints saved game screen - lcd.printString("Saved Games",9,1); - lcd.drawSprite(39, 16, 3, 5, (int *)arrow_up); - lcd.drawSprite(39, 32, 3, 5, (int *)arrow_down); + lcd.printString("Saved Games",9,0); + lcd.drawSprite(39, 18, 3, 5, (int *)arrow_up); + lcd.drawSprite(39, 34, 3, 5, (int *)arrow_down); //prints saved game that is displayed char buffer[9]; - sprintf(buffer,"Save = %2d",display_data_number_); - lcd.printString(buffer,15,3); + sprintf(buffer,"Save %2d",display_data_number_); + lcd.printString(buffer,21,3); + lcd.printString("B To Go Back",6,5); lcd.refresh(); } + bool SavedGames::get_error(){ return error_; } -void SavedGames::saved_games_scroll(Gamepad &pad, Direction d_) { +int SavedGames::get_display_data_number(){ + return display_data_number_; +} + +void SavedGames::saved_games_scroll(Direction d_) { + // Changes displayed manu part depending on joystick input if (d_ == N || d_ == NE || d_ == NW ) { display_data_number_++; @@ -146,7 +147,7 @@ } else if (d_ == S || d_ == SW || d_ == SE) { display_data_number_--; if(display_data_number_ < 0 ){ - display_data_number_ = saved_data_vector.size() - 1; + display_data_number_ = saved_data_vector.size() ; } } wait(0.15);