Ben Evans University Second Year Project. Game Called Defender.

Dependencies:   mbed

https://os.mbed.com/media/uploads/evanso/84bc1a30759fd6a1e3f1fd1fae3e97c2.png

Hello, soldier, you have been specially selected as the defender of planet earth.

Your mission, if you choose to accept it. Fly around the planet and pulverise invading alien ships for as long as you can. Stop the aliens abducting the innocent people on the ground. Be warned if an alien ship manages to abduct a person and take them to top of the screen, they will no longer move randomly and will begin to hunt you down. This sounds like a challenge you were trained for.

But don’t worry soldier you’re not going into battle empty-handed. Your ship is equipped with a state of the art laser beam that has unlimited ammo and four smart bombs that will destroy anything on the screen. The ship also has three lives so use them wisely.

As time goes on more alien ships will arrive on planet earth increasing the difficulty of your mission. And remember the landscape bellow loops around so if you continually fly in the same direction you go to your original position. Good luck soldier.

Committer:
evanso
Date:
Wed May 27 02:06:05 2020 +0000
Revision:
87:832ca78426b5
Parent:
85:87bc28b151d8
Final Submission. I have read and agreed with Statement of Academic Integrity.

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 85:87bc28b151d8 32 // Runs test with all different 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 87:832ca78426b5 35 if (save_test(250, 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 87:832ca78426b5 40 if (save_test(0, 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 85:87bc28b151d8 75 // Overwrites 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 85:87bc28b151d8 96 // Check if high score 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