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.
HighScore/HighScore.cpp@82:3211b31e9421, 2020-05-25 (annotated)
- 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?
User | Revision | Line number | New 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 |