Snake vs Block Game to be run upon K64F.

Dependencies:   mbed

Committer:
AhmedPlaymaker
Date:
Tue Apr 30 08:32:30 2019 +0000
Revision:
61:f3c402bc2ad0
Parent:
50:3cf9a94a264e
Child:
62:ebf6ecf8a6d5
Fixed an issue with the gamepad library that made it remember the previous button pressed, also removed pad.init() because of this

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AhmedPlaymaker 33:249cf423fb18 1 #include "Stats.h"
AhmedPlaymaker 33:249cf423fb18 2
AhmedPlaymaker 33:249cf423fb18 3 Stats::Stats()
AhmedPlaymaker 33:249cf423fb18 4 {
AhmedPlaymaker 33:249cf423fb18 5
AhmedPlaymaker 33:249cf423fb18 6 }
AhmedPlaymaker 33:249cf423fb18 7
AhmedPlaymaker 33:249cf423fb18 8 Stats::~Stats()
AhmedPlaymaker 33:249cf423fb18 9 {
AhmedPlaymaker 33:249cf423fb18 10
AhmedPlaymaker 33:249cf423fb18 11 }
AhmedPlaymaker 33:249cf423fb18 12
AhmedPlaymaker 33:249cf423fb18 13 FILE *fp; // this is the file pointer
AhmedPlaymaker 33:249cf423fb18 14 //serial.baud(115200); // full-speed!
AhmedPlaymaker 33:249cf423fb18 15
AhmedPlaymaker 33:249cf423fb18 16
AhmedPlaymaker 49:441c32f6603e 17 void Stats::StatsDisplay(N5110 &lcd, Gamepad &pad)
AhmedPlaymaker 33:249cf423fb18 18 {
AhmedPlaymaker 33:249cf423fb18 19 lcd.clear();
AhmedPlaymaker 33:249cf423fb18 20 wait(0.2);
AhmedPlaymaker 61:f3c402bc2ad0 21 //pad.init();
AhmedPlaymaker 33:249cf423fb18 22 while (pad.check_event(Gamepad::BACK_PRESSED) == false) { //Change this to if button pressed.
AhmedPlaymaker 33:249cf423fb18 23 lcd.printString("Highest Level",3,1);
AhmedPlaymaker 33:249cf423fb18 24 sprintf(bufferlevel,"%d",_stored_top_level);
AhmedPlaymaker 33:249cf423fb18 25 lcd.printString(bufferlevel,38,3);
AhmedPlaymaker 33:249cf423fb18 26 lcd.refresh();
AhmedPlaymaker 33:249cf423fb18 27 }
AhmedPlaymaker 33:249cf423fb18 28 lcd.clear();
AhmedPlaymaker 33:249cf423fb18 29 pad.tone(1000.0,0.1);
AhmedPlaymaker 33:249cf423fb18 30 /////////////////////// Deleting file ////////////////////////
AhmedPlaymaker 33:249cf423fb18 31
AhmedPlaymaker 35:ce47cde57bd3 32 // comment this line out if I don't want to delete the file!
AhmedPlaymaker 33:249cf423fb18 33 //delete_file("/sd/highestlevel.txt");
AhmedPlaymaker 33:249cf423fb18 34 }
AhmedPlaymaker 33:249cf423fb18 35
AhmedPlaymaker 33:249cf423fb18 36 void Stats::write(int level, SDFileSystem &sd)
AhmedPlaymaker 33:249cf423fb18 37 {
AhmedPlaymaker 33:249cf423fb18 38 ////////////////////// writing to file while reading previous state //////////////////////////
AhmedPlaymaker 33:249cf423fb18 39
AhmedPlaymaker 33:249cf423fb18 40 // open file for writing ('w') - creates file if it doesn't exist and overwrites
AhmedPlaymaker 33:249cf423fb18 41 // if it does. If you wish to add a score onto a list, then you can
AhmedPlaymaker 33:249cf423fb18 42 // append instead 'a'.
AhmedPlaymaker 33:249cf423fb18 43
AhmedPlaymaker 33:249cf423fb18 44 Stats::read(sd);
AhmedPlaymaker 33:249cf423fb18 45 fp = fopen("/sd/highestlevel.txt", "w");
AhmedPlaymaker 33:249cf423fb18 46 _current_level = level;
AhmedPlaymaker 33:249cf423fb18 47 if (_stored_top_level < _current_level) {
AhmedPlaymaker 33:249cf423fb18 48 _top_level = _current_level;
AhmedPlaymaker 33:249cf423fb18 49 }
AhmedPlaymaker 33:249cf423fb18 50
AhmedPlaymaker 33:249cf423fb18 51 else {
AhmedPlaymaker 33:249cf423fb18 52 _top_level = _stored_top_level;
AhmedPlaymaker 33:249cf423fb18 53 }
AhmedPlaymaker 33:249cf423fb18 54
AhmedPlaymaker 33:249cf423fb18 55 if (fp == NULL) { // if it can't open the file then print error message
AhmedPlaymaker 33:249cf423fb18 56 //serial.printf("Error! Unable to open file!\n");
AhmedPlaymaker 33:249cf423fb18 57 } else { // opened file so can write
AhmedPlaymaker 33:249cf423fb18 58 //serial.printf("Writing to file....");
AhmedPlaymaker 33:249cf423fb18 59 fprintf(fp, "%d",_top_level); // ensure data type matches
AhmedPlaymaker 33:249cf423fb18 60 //serial.printf("Done.\n");
AhmedPlaymaker 33:249cf423fb18 61 fclose(fp); // ensure you close the file after writing
AhmedPlaymaker 33:249cf423fb18 62 }
AhmedPlaymaker 33:249cf423fb18 63
AhmedPlaymaker 33:249cf423fb18 64
AhmedPlaymaker 33:249cf423fb18 65 }
AhmedPlaymaker 33:249cf423fb18 66
AhmedPlaymaker 33:249cf423fb18 67 void Stats::read(SDFileSystem &sd)
AhmedPlaymaker 33:249cf423fb18 68 {
AhmedPlaymaker 33:249cf423fb18 69 ////////////////////// reading from previous state //////////////////////////
AhmedPlaymaker 33:249cf423fb18 70
AhmedPlaymaker 33:249cf423fb18 71 // now open file for reading
AhmedPlaymaker 33:249cf423fb18 72 fp = fopen("/sd/highestlevel.txt", "r");
AhmedPlaymaker 50:3cf9a94a264e 73 _stored_top_level = 0; // level 0
AhmedPlaymaker 33:249cf423fb18 74
AhmedPlaymaker 33:249cf423fb18 75 if (fp == NULL) { // if it can't open the file then print error message
AhmedPlaymaker 33:249cf423fb18 76 //serial.printf("Error! Unable to open file!\n");
AhmedPlaymaker 33:249cf423fb18 77 } else { // opened file so can write
AhmedPlaymaker 33:249cf423fb18 78 fscanf(fp, "%d",&_stored_top_level); // ensure data type matches - note address operator (&)
AhmedPlaymaker 33:249cf423fb18 79 //serial.printf("Read %d from file.\n",stored_top_level);
AhmedPlaymaker 33:249cf423fb18 80 fclose(fp); // ensure you close the file after reading
AhmedPlaymaker 33:249cf423fb18 81 }
AhmedPlaymaker 33:249cf423fb18 82 }
AhmedPlaymaker 33:249cf423fb18 83
AhmedPlaymaker 33:249cf423fb18 84 void Stats::delete_file(char filename[])
AhmedPlaymaker 33:249cf423fb18 85 {
AhmedPlaymaker 33:249cf423fb18 86 //serial.printf("Deleting file '%s'...",filename);
AhmedPlaymaker 33:249cf423fb18 87 FILE *fp = fopen(filename, "r"); // try and open file
AhmedPlaymaker 33:249cf423fb18 88 if (fp != NULL) { // if it does open...
AhmedPlaymaker 33:249cf423fb18 89 fclose(fp); // close it
AhmedPlaymaker 33:249cf423fb18 90 remove(filename); // and then delete
AhmedPlaymaker 33:249cf423fb18 91 //serial.printf("Done!\n");
AhmedPlaymaker 33:249cf423fb18 92 }
AhmedPlaymaker 33:249cf423fb18 93 // if we can't open it, it doesn't exist and so we can't delete it
AhmedPlaymaker 33:249cf423fb18 94 }