Ben Evans / Mbed 2 deprecated Defender_Game

Dependencies:   mbed

Committer:
evanso
Date:
Mon May 25 18:39:51 2020 +0000
Revision:
82:3211b31e9421
Parent:
79:66bcf8fa2d2d
Child:
85:87bc28b151d8
Made commenting and formatting of code more consistent.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
evanso 75:643a509cf9ed 1 #include "HighScore.h"
evanso 75:643a509cf9ed 2
evanso 76:6daba3002424 3 HighScore::HighScore() {
evanso 76:6daba3002424 4
evanso 76:6daba3002424 5 }
evanso 76:6daba3002424 6
evanso 76:6daba3002424 7 HighScore::~HighScore() {
evanso 76:6daba3002424 8
evanso 76:6daba3002424 9 }
evanso 76:6daba3002424 10
evanso 82:3211b31e9421 11 bool HighScore::save_test(int score,SDFileSystem &sd, N5110 &lcd) {
evanso 79:66bcf8fa2d2d 12 printf("Score = %d : ",score);
evanso 79:66bcf8fa2d2d 13
evanso 79:66bcf8fa2d2d 14 save_new_high_score(sd, lcd, score);
evanso 79:66bcf8fa2d2d 15
evanso 79:66bcf8fa2d2d 16 int output_score = read_high_score(sd);
evanso 79:66bcf8fa2d2d 17
evanso 79:66bcf8fa2d2d 18 // Checks if the input and output are equal
evanso 79:66bcf8fa2d2d 19 if (output_score == score) {
evanso 79:66bcf8fa2d2d 20 printf ( "Passed!\n");
evanso 79:66bcf8fa2d2d 21 return true;
evanso 79:66bcf8fa2d2d 22 } else {
evanso 79:66bcf8fa2d2d 23 printf ( "Failed!\n");
evanso 79:66bcf8fa2d2d 24 return false;
evanso 79:66bcf8fa2d2d 25 }
evanso 79:66bcf8fa2d2d 26 }
evanso 79:66bcf8fa2d2d 27
evanso 82:3211b31e9421 28 void HighScore::run_save_test(SDFileSystem &sd, N5110 &lcd) {
evanso 79:66bcf8fa2d2d 29 printf ("\nTesting high_score_save_test() \n\n");
evanso 79:66bcf8fa2d2d 30 int passed_counter = 0;
evanso 79:66bcf8fa2d2d 31
evanso 79:66bcf8fa2d2d 32 // Runs test with all differnt possible inputs
evanso 79:66bcf8fa2d2d 33 if (save_test(4, sd, lcd)) passed_counter++;
evanso 79:66bcf8fa2d2d 34 if (save_test(3, sd, lcd)) passed_counter++;
evanso 79:66bcf8fa2d2d 35 if (save_test(0, sd, lcd)) passed_counter++;
evanso 79:66bcf8fa2d2d 36 if (save_test(-3, sd, lcd)) passed_counter++;
evanso 79:66bcf8fa2d2d 37 if (save_test(222, sd, lcd)) passed_counter++;
evanso 79:66bcf8fa2d2d 38 if (save_test(9999, sd, lcd)) passed_counter++;
evanso 79:66bcf8fa2d2d 39 if (save_test(-9999, sd, lcd)) passed_counter++;
evanso 79:66bcf8fa2d2d 40 if (save_test(250, sd, lcd)) passed_counter++;
evanso 79:66bcf8fa2d2d 41
evanso 79:66bcf8fa2d2d 42 // prints results
evanso 79:66bcf8fa2d2d 43 printf ("\n high_score_save_test %d tests out of 8\n\n\n",
evanso 79:66bcf8fa2d2d 44 passed_counter);
evanso 79:66bcf8fa2d2d 45 }
evanso 79:66bcf8fa2d2d 46
evanso 82:3211b31e9421 47 void HighScore::init() {
evanso 76:6daba3002424 48 error_ = false;
evanso 76:6daba3002424 49 }
evanso 76:6daba3002424 50
evanso 82:3211b31e9421 51 void HighScore::no_high_scores(N5110 &lcd) {
evanso 82:3211b31e9421 52 // Print error screen
evanso 76:6daba3002424 53 lcd.clear();
evanso 76:6daba3002424 54 lcd.printString("No High Scores",0,3);
evanso 77:2ee9d1f9e282 55 lcd.printString("Or No SD Card",3,4);
evanso 76:6daba3002424 56 lcd.refresh();
evanso 76:6daba3002424 57 wait(3);
evanso 76:6daba3002424 58 }
evanso 76:6daba3002424 59
evanso 82:3211b31e9421 60 void HighScore::error_open_file(N5110 &lcd) {
evanso 76:6daba3002424 61 error_ = true;
evanso 76:6daba3002424 62
evanso 82:3211b31e9421 63 // Print error screen
evanso 76:6daba3002424 64 lcd.clear();
evanso 76:6daba3002424 65 lcd.printString(" Unable to ",9,3);
evanso 77:2ee9d1f9e282 66 lcd.printString("Save",30,4);
evanso 77:2ee9d1f9e282 67 lcd.printString("High Score",12,4);
evanso 76:6daba3002424 68 lcd.refresh();
evanso 76:6daba3002424 69 }
evanso 76:6daba3002424 70
evanso 76:6daba3002424 71 void HighScore::save_new_high_score(SDFileSystem &sd, N5110 &lcd,
evanso 82:3211b31e9421 72 int new_high_score) {
evanso 76:6daba3002424 73 FILE *fp;
evanso 76:6daba3002424 74
evanso 82:3211b31e9421 75 // Overwirtes previous high score
evanso 77:2ee9d1f9e282 76 fp = fopen("/sd/HighScore.csv", "w");
evanso 76:6daba3002424 77
evanso 76:6daba3002424 78
evanso 76:6daba3002424 79 if (fp == NULL) {
evanso 76:6daba3002424 80 error_open_file(lcd);
evanso 76:6daba3002424 81
evanso 76:6daba3002424 82 }else{
evanso 76:6daba3002424 83
evanso 82:3211b31e9421 84 // Add data to file if no error
evanso 76:6daba3002424 85 fprintf(fp, "%d", new_high_score);
evanso 76:6daba3002424 86 fclose(fp);
evanso 76:6daba3002424 87 }
evanso 76:6daba3002424 88 }
evanso 76:6daba3002424 89
evanso 82:3211b31e9421 90 int HighScore::read_high_score(SDFileSystem &sd) {
evanso 76:6daba3002424 91 FILE *fp;
evanso 76:6daba3002424 92 int saved_high_score = 0;
evanso 76:6daba3002424 93
evanso 76:6daba3002424 94 fp = fopen("/sd/HighScore.csv", "r");
evanso 76:6daba3002424 95
evanso 82:3211b31e9421 96 // Check if highscore game files
evanso 76:6daba3002424 97 if (fp == NULL) {
evanso 76:6daba3002424 98 error_ = true;
evanso 76:6daba3002424 99
evanso 82:3211b31e9421 100 // Reads current high score if no high score is set zero is returned
evanso 76:6daba3002424 101 }else{
evanso 76:6daba3002424 102
evanso 82:3211b31e9421 103 // Read save file and add values to saved_high_score int
evanso 76:6daba3002424 104 fscanf(fp, "%d", &saved_high_score);
evanso 76:6daba3002424 105
evanso 76:6daba3002424 106 fclose(fp);
evanso 76:6daba3002424 107 }
evanso 76:6daba3002424 108
evanso 76:6daba3002424 109 return saved_high_score;
evanso 76:6daba3002424 110 }
evanso 76:6daba3002424 111