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:
Thu May 21 00:09:10 2020 +0000
Revision:
63:4631447440cf
Parent:
62:f0c86a854a9e
Child:
64:e9dfc35a1738
Correct error screen show if save isn't present or sd card not inserted

Who changed what in which revision?

UserRevisionLine numberNew contents of line
evanso 49:ed569eceeaa4 1 #include "SavedGames.h"
evanso 49:ed569eceeaa4 2
evanso 54:d46459104dea 3 const int arrow_up[3][5] = {
evanso 54:d46459104dea 4 { 0, 0, 1, 0, 0 },
evanso 54:d46459104dea 5 { 0, 1, 1, 1, 0 },
evanso 54:d46459104dea 6 { 1, 1, 1, 1, 1 },
evanso 54:d46459104dea 7 };
evanso 54:d46459104dea 8
evanso 54:d46459104dea 9 const int arrow_down[3][5] = {
evanso 54:d46459104dea 10 { 1, 1, 1, 1, 1 },
evanso 54:d46459104dea 11 { 0, 1, 1, 1, 0 },
evanso 54:d46459104dea 12 { 0, 0, 1, 0, 0 },
evanso 54:d46459104dea 13 };
evanso 54:d46459104dea 14
evanso 49:ed569eceeaa4 15 SavedGames::SavedGames() {
evanso 49:ed569eceeaa4 16
evanso 49:ed569eceeaa4 17 }
evanso 49:ed569eceeaa4 18
evanso 49:ed569eceeaa4 19 SavedGames::~SavedGames() {
evanso 49:ed569eceeaa4 20
evanso 49:ed569eceeaa4 21 }
evanso 49:ed569eceeaa4 22
evanso 50:13c8710985f4 23 void SavedGames::init(SDFileSystem &sd,N5110 &lcd){
evanso 50:13c8710985f4 24 error_ = false;
evanso 54:d46459104dea 25 check_sd_present(sd,lcd);
evanso 62:f0c86a854a9e 26 display_data_number_ = 1;
evanso 63:4631447440cf 27
evanso 50:13c8710985f4 28 }
evanso 49:ed569eceeaa4 29
evanso 63:4631447440cf 30 void SavedGames::check_sd_present(SDFileSystem &sd, N5110 &lcd){
evanso 63:4631447440cf 31 if(sd.card_present()) {
evanso 51:35cb8e604b72 32 //print error screen
evanso 50:13c8710985f4 33 lcd.clear();
evanso 50:13c8710985f4 34 lcd.printString("SD card not ",9,3);
evanso 50:13c8710985f4 35 lcd.printString(" present ",9,4);
evanso 50:13c8710985f4 36 lcd.refresh();
evanso 50:13c8710985f4 37 wait(3);
evanso 50:13c8710985f4 38 }
evanso 50:13c8710985f4 39 }
evanso 50:13c8710985f4 40
evanso 53:01be7898c23f 41 void SavedGames::error_open_file(N5110 &lcd){
evanso 53:01be7898c23f 42 error_ = true;
evanso 63:4631447440cf 43
evanso 53:01be7898c23f 44 //print error screen
evanso 53:01be7898c23f 45 lcd.clear();
evanso 53:01be7898c23f 46 lcd.printString(" Unable to ",9,3);
evanso 53:01be7898c23f 47 lcd.printString(" open file ",9,4);
evanso 53:01be7898c23f 48 lcd.refresh();
evanso 53:01be7898c23f 49 wait(3);
evanso 51:35cb8e604b72 50 }
evanso 51:35cb8e604b72 51
evanso 61:7c4ec680a428 52 void SavedGames::no_saved_files(N5110 &lcd){
evanso 61:7c4ec680a428 53 error_ = true;
evanso 63:4631447440cf 54
evanso 61:7c4ec680a428 55 //print error screen
evanso 61:7c4ec680a428 56 lcd.clear();
evanso 61:7c4ec680a428 57 lcd.printString("No saved Files",0,3);
evanso 61:7c4ec680a428 58 lcd.refresh();
evanso 61:7c4ec680a428 59 wait(3);
evanso 61:7c4ec680a428 60 }
evanso 61:7c4ec680a428 61
evanso 59:0b2e43312d6b 62 void SavedGames::add_saved_data(SDFileSystem &sd,SavedGamesData data,
evanso 59:0b2e43312d6b 63 N5110 &lcd){
evanso 61:7c4ec680a428 64 FILE *fp;
evanso 61:7c4ec680a428 65
evanso 61:7c4ec680a428 66 //opens correct save file
evanso 61:7c4ec680a428 67 if (display_data_number_ == 1){
evanso 61:7c4ec680a428 68 fp = fopen("/sd/SavedGamesOne.csv", "w");
evanso 63:4631447440cf 69 // printf ("save1 \n");
evanso 61:7c4ec680a428 70 }else if (display_data_number_ == 2){
evanso 61:7c4ec680a428 71 fp = fopen("/sd/SavedGamesTwo.csv", "w");
evanso 63:4631447440cf 72 // printf ("save2\n" );
evanso 61:7c4ec680a428 73 }else{
evanso 61:7c4ec680a428 74 fp = fopen("/sd/SavedGamesThree.csv", "w");
evanso 63:4631447440cf 75 // printf ("save2 \n");
evanso 61:7c4ec680a428 76 }
evanso 63:4631447440cf 77
evanso 53:01be7898c23f 78 if (fp == NULL) {
evanso 53:01be7898c23f 79 error_open_file(lcd);
evanso 63:4631447440cf 80
evanso 53:01be7898c23f 81 }else{
evanso 63:4631447440cf 82 //printf ("add data.score = %d \n", data.score);
evanso 63:4631447440cf 83 //printf ("add data.lives = %d \n", data.lives);
evanso 63:4631447440cf 84 //printf ("adddata.smart_bombs = %d \n", data.smart_bombs);
evanso 63:4631447440cf 85 //printf ("add data.alien_number = %d \n", data.lives);
evanso 53:01be7898c23f 86 //Adda data to file if no error
evanso 59:0b2e43312d6b 87 fprintf(fp, "%d,%d,%d,%d\n", data.score, data.lives, data.smart_bombs,
evanso 59:0b2e43312d6b 88 data.alien_number);
evanso 52:feb8cf28bcff 89 fclose(fp);
evanso 53:01be7898c23f 90 }
evanso 53:01be7898c23f 91 }
evanso 53:01be7898c23f 92
evanso 61:7c4ec680a428 93 SavedGamesData SavedGames::read_saved_data(SDFileSystem &sd, N5110 &lcd){
evanso 61:7c4ec680a428 94 FILE *fp;
evanso 62:f0c86a854a9e 95 SavedGamesData data;
evanso 61:7c4ec680a428 96
evanso 61:7c4ec680a428 97 //opens diplayed file
evanso 61:7c4ec680a428 98 if (display_data_number_ == 1){
evanso 62:f0c86a854a9e 99 fp = fopen("/sd/SavedGamesOne.csv", "r");
evanso 63:4631447440cf 100 //printf ("open save1\n");
evanso 61:7c4ec680a428 101 }else if (display_data_number_ == 2){
evanso 63:4631447440cf 102 //fp = fopen("/sd/SavedGamesTwo.csv", "r");
evanso 62:f0c86a854a9e 103 printf ("open save2\n");
evanso 61:7c4ec680a428 104 }else{
evanso 62:f0c86a854a9e 105 fp = fopen("/sd/SavedGamesThree.csv", "r");
evanso 63:4631447440cf 106 // printf ("open save2\n");
evanso 61:7c4ec680a428 107 }
evanso 61:7c4ec680a428 108
evanso 53:01be7898c23f 109 if (fp == NULL) {
evanso 63:4631447440cf 110 no_saved_files(lcd);
evanso 63:4631447440cf 111 //Reads saved data into object
evanso 53:01be7898c23f 112 }else{
evanso 59:0b2e43312d6b 113 int lives;
evanso 59:0b2e43312d6b 114 int score;
evanso 59:0b2e43312d6b 115 int alien_number;
evanso 59:0b2e43312d6b 116 int smart_bombs;
evanso 53:01be7898c23f 117
evanso 61:7c4ec680a428 118 //read save file
evanso 61:7c4ec680a428 119 fscanf(fp, "%d,%d,%d,%d",&score, &lives,&smart_bombs,&alien_number);
evanso 59:0b2e43312d6b 120
evanso 61:7c4ec680a428 121 //sets data to object
evanso 61:7c4ec680a428 122 data.score = score;
evanso 63:4631447440cf 123 // printf ("data.score = %d \n", data.score);
evanso 61:7c4ec680a428 124 data.lives = lives;
evanso 63:4631447440cf 125 // printf ("data.lives = %d \n", data.lives);
evanso 61:7c4ec680a428 126 data.smart_bombs = smart_bombs;
evanso 63:4631447440cf 127 //printf ("data.smart_bombs = %d \n", data.smart_bombs);
evanso 61:7c4ec680a428 128 data.alien_number = alien_number;
evanso 63:4631447440cf 129 //printf ("data.alien_number = %d \n", data.lives);
evanso 63:4631447440cf 130
evanso 63:4631447440cf 131 //printf ("saved_data_vector_ 1%d \n", saved_data_vector.size());
evanso 63:4631447440cf 132 fclose(fp);
evanso 61:7c4ec680a428 133 }
evanso 63:4631447440cf 134
evanso 61:7c4ec680a428 135 return data;
evanso 51:35cb8e604b72 136 }
evanso 51:35cb8e604b72 137
evanso 54:d46459104dea 138 void SavedGames::display_saved_games(N5110 &lcd){
evanso 54:d46459104dea 139 lcd.clear();
evanso 54:d46459104dea 140 //prints saved game screen
evanso 59:0b2e43312d6b 141 lcd.printString("Saved Games",9,0);
evanso 59:0b2e43312d6b 142 lcd.drawSprite(39, 18, 3, 5, (int *)arrow_up);
evanso 59:0b2e43312d6b 143 lcd.drawSprite(39, 34, 3, 5, (int *)arrow_down);
evanso 54:d46459104dea 144
evanso 54:d46459104dea 145 //prints saved game that is displayed
evanso 54:d46459104dea 146 char buffer[9];
evanso 59:0b2e43312d6b 147 sprintf(buffer,"Save %2d",display_data_number_);
evanso 59:0b2e43312d6b 148 lcd.printString(buffer,21,3);
evanso 62:f0c86a854a9e 149 lcd.printString("B Back A Play",0,5);
evanso 54:d46459104dea 150
evanso 54:d46459104dea 151 lcd.refresh();
evanso 54:d46459104dea 152 }
evanso 59:0b2e43312d6b 153
evanso 60:55fdc6bb29b9 154 void SavedGames::save_game_screen(N5110 &lcd){
evanso 60:55fdc6bb29b9 155 lcd.clear();
evanso 60:55fdc6bb29b9 156 //prints saved game screen
evanso 61:7c4ec680a428 157 lcd.printString("Select a save",3,0);
evanso 60:55fdc6bb29b9 158 lcd.drawSprite(39, 18, 3, 5, (int *)arrow_up);
evanso 60:55fdc6bb29b9 159 lcd.drawSprite(39, 34, 3, 5, (int *)arrow_down);
evanso 60:55fdc6bb29b9 160
evanso 60:55fdc6bb29b9 161 //prints saved game that is displayed
evanso 60:55fdc6bb29b9 162 char buffer[9];
evanso 60:55fdc6bb29b9 163 sprintf(buffer,"Save %2d",display_data_number_);
evanso 60:55fdc6bb29b9 164 lcd.printString(buffer,21,3);
evanso 61:7c4ec680a428 165 lcd.printString("A To save",15,5);
evanso 61:7c4ec680a428 166
evanso 60:55fdc6bb29b9 167 lcd.refresh();
evanso 60:55fdc6bb29b9 168 }
evanso 60:55fdc6bb29b9 169
evanso 50:13c8710985f4 170 bool SavedGames::get_error(){
evanso 50:13c8710985f4 171 return error_;
evanso 50:13c8710985f4 172 }
evanso 54:d46459104dea 173
evanso 63:4631447440cf 174
evanso 63:4631447440cf 175 bool SavedGames::set_error(bool error){
evanso 63:4631447440cf 176 error_ = error;
evanso 63:4631447440cf 177 }
evanso 63:4631447440cf 178
evanso 63:4631447440cf 179
evanso 59:0b2e43312d6b 180 int SavedGames::get_display_data_number(){
evanso 59:0b2e43312d6b 181 return display_data_number_;
evanso 59:0b2e43312d6b 182 }
evanso 59:0b2e43312d6b 183
evanso 59:0b2e43312d6b 184 void SavedGames::saved_games_scroll(Direction d_) {
evanso 59:0b2e43312d6b 185
evanso 54:d46459104dea 186 // Changes displayed manu part depending on joystick input
evanso 54:d46459104dea 187 if (d_ == N || d_ == NE || d_ == NW ) {
evanso 54:d46459104dea 188 display_data_number_++;
evanso 54:d46459104dea 189
evanso 54:d46459104dea 190 //loops back round when at end of saved game vecotr
evanso 61:7c4ec680a428 191 if(display_data_number_ > 3){
evanso 61:7c4ec680a428 192 display_data_number_ = 1;
evanso 54:d46459104dea 193 }
evanso 54:d46459104dea 194 } else if (d_ == S || d_ == SW || d_ == SE) {
evanso 54:d46459104dea 195 display_data_number_--;
evanso 62:f0c86a854a9e 196 if(display_data_number_ < 1 ){
evanso 61:7c4ec680a428 197 display_data_number_ = 3;
evanso 54:d46459104dea 198 }
evanso 54:d46459104dea 199 }
evanso 54:d46459104dea 200 wait(0.15);
evanso 54:d46459104dea 201 }
evanso 55:c04568b25617 202