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.
SavedGames/SavedGames.cpp
- Committer:
- evanso
- Date:
- 2020-05-20
- Revision:
- 60:55fdc6bb29b9
- Parent:
- 59:0b2e43312d6b
- Child:
- 61:7c4ec680a428
File content as of revision 60:55fdc6bb29b9:
#include "SavedGames.h" const int arrow_up[3][5] = { { 0, 0, 1, 0, 0 }, { 0, 1, 1, 1, 0 }, { 1, 1, 1, 1, 1 }, }; const int arrow_down[3][5] = { { 1, 1, 1, 1, 1 }, { 0, 1, 1, 1, 0 }, { 0, 0, 1, 0, 0 }, }; SavedGames::SavedGames() { } SavedGames::~SavedGames() { } void SavedGames::init(SDFileSystem &sd,N5110 &lcd){ SavedGamesData data; error_ = false; check_sd_present(sd,lcd); display_data_number_ = 0; add_saved_data(sd, data, lcd); } void SavedGames::check_sd_present(SDFileSystem &sd,N5110 &lcd){ if(!sd.card_present()) { error_ = true; //print error screen lcd.clear(); lcd.printString("SD card not ",9,3); lcd.printString(" present ",9,4); lcd.refresh(); wait(3); } } 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); } void SavedGames::add_saved_data(SDFileSystem &sd,SavedGamesData data, N5110 &lcd){ //opens file 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,%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.csv", "r"); if (fp == NULL) { error_open_file(lcd); return; //Reads saved data into vector }else{ int lives; int score; int alien_number; int smart_bombs; 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); //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,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,21,3); lcd.printString("B To Go Back",6,5); lcd.refresh(); } void SavedGames::save_game_screen(N5110 &lcd){ lcd.clear(); //prints saved game screen lcd.printString("Selected save",3,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,21,3); lcd.printString("B To Go Back",6,5); lcd.refresh(); } bool SavedGames::get_error(){ return error_; } 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_++; //loops back round when at end of saved game vecotr if(display_data_number_ == saved_data_vector.size()){ display_data_number_ = 0; } } else if (d_ == S || d_ == SW || d_ == SE) { display_data_number_--; if(display_data_number_ < 0 ){ display_data_number_ = saved_data_vector.size() ; } } wait(0.15); }