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 83:35d1e846eab2 1 #ifndef PLAYENGINE_TEST_H
evanso 83:35d1e846eab2 2 #define PLAYENGINE_TEST_H
evanso 83:35d1e846eab2 3
evanso 83:35d1e846eab2 4 /** PlayEngine Test
evanso 85:87bc28b151d8 5 * @brief Checks that the engine functions of the playable part of game work
evanso 83:35d1e846eab2 6 * @author Benjamin Evans, University of Leeds
evanso 83:35d1e846eab2 7 * @date May 2020
evanso 83:35d1e846eab2 8 * @return true if test are passed
evanso 83:35d1e846eab2 9 */
evanso 83:35d1e846eab2 10
evanso 83:35d1e846eab2 11 bool read_accelerometer_direction_test(Direction expected_d, float roll,
evanso 83:35d1e846eab2 12 float pitch) {
evanso 85:87bc28b151d8 13 // Objects required for test
evanso 83:35d1e846eab2 14 PlayEngine engine;;
evanso 83:35d1e846eab2 15
evanso 83:35d1e846eab2 16 printf("read_accelerometer_direction = %d : ", expected_d);
evanso 83:35d1e846eab2 17
evanso 83:35d1e846eab2 18 engine.read_accelerometer_direction(roll, pitch);
evanso 83:35d1e846eab2 19
evanso 85:87bc28b151d8 20 // Checks if pixel is drawn and therefor testing it hasn’t gone of screen
evanso 83:35d1e846eab2 21 if (expected_d == engine.d_) {
evanso 83:35d1e846eab2 22 printf ( "Passed!\n");
evanso 83:35d1e846eab2 23 return true;
evanso 83:35d1e846eab2 24 } else {
evanso 83:35d1e846eab2 25 printf ( "Failed! value = %d (expecting %d)\n", expected_d,
evanso 83:35d1e846eab2 26 engine.d_);
evanso 83:35d1e846eab2 27 return false;
evanso 83:35d1e846eab2 28 }
evanso 83:35d1e846eab2 29 }
evanso 83:35d1e846eab2 30
evanso 83:35d1e846eab2 31 bool spawn_aliens_test(int expected_alien_num) {
evanso 85:87bc28b151d8 32 // Objects required for test
evanso 83:35d1e846eab2 33 PlayEngine engine;
evanso 83:35d1e846eab2 34 engine.alien_number_ = expected_alien_num;
evanso 83:35d1e846eab2 35
evanso 83:35d1e846eab2 36 printf("spawn_aliens : ");
evanso 83:35d1e846eab2 37
evanso 83:35d1e846eab2 38 //spawn number of expected aliens
evanso 85:87bc28b151d8 39 for (int i = 1; i <= expected_alien_num; i++) {
evanso 83:35d1e846eab2 40 engine.spawn_aliens();
evanso 83:35d1e846eab2 41 }
evanso 83:35d1e846eab2 42
evanso 85:87bc28b151d8 43 // Checks if pixel is drawn and therefor testing it hasn’t gone of screen
evanso 83:35d1e846eab2 44 if (engine.alien_vector.size() == expected_alien_num) {
evanso 83:35d1e846eab2 45 printf ( "Passed!\n");
evanso 83:35d1e846eab2 46 return true;
evanso 83:35d1e846eab2 47 } else {
evanso 83:35d1e846eab2 48 printf ( "Failed! value = %d (expecting %d)\n",
evanso 83:35d1e846eab2 49 engine.alien_vector.size(), expected_alien_num);
evanso 83:35d1e846eab2 50 return false;
evanso 83:35d1e846eab2 51 }
evanso 83:35d1e846eab2 52 }
evanso 83:35d1e846eab2 53
evanso 83:35d1e846eab2 54 bool create_alien_test(int expected_alien_num) {
evanso 85:87bc28b151d8 55 // Objects required for test
evanso 83:35d1e846eab2 56 PlayEngine engine;
evanso 83:35d1e846eab2 57 engine.alien_number_ = expected_alien_num;
evanso 83:35d1e846eab2 58
evanso 83:35d1e846eab2 59 printf("create_aliens : ");
evanso 83:35d1e846eab2 60
evanso 83:35d1e846eab2 61 //spawn number of expected aliens
evanso 85:87bc28b151d8 62 for (int i = 1; i <= expected_alien_num; i++) {
evanso 83:35d1e846eab2 63 engine.create_alien();
evanso 83:35d1e846eab2 64 }
evanso 83:35d1e846eab2 65
evanso 85:87bc28b151d8 66 // Checks if pixel is drawn and therefor testing it hasn’t gone of screen
evanso 83:35d1e846eab2 67 if (engine.alien_vector.size() == expected_alien_num) {
evanso 83:35d1e846eab2 68 printf ( "Passed!\n");
evanso 83:35d1e846eab2 69 return true;
evanso 83:35d1e846eab2 70 } else {
evanso 83:35d1e846eab2 71 printf ( "Failed! value = %d (expecting %d)\n",
evanso 83:35d1e846eab2 72 engine.alien_vector.size(), expected_alien_num);
evanso 83:35d1e846eab2 73 return false;
evanso 83:35d1e846eab2 74 }
evanso 83:35d1e846eab2 75 }
evanso 83:35d1e846eab2 76
evanso 83:35d1e846eab2 77 bool create_explosion_test(int expected_explosion_num) {
evanso 85:87bc28b151d8 78 // Objects required for test
evanso 83:35d1e846eab2 79 PlayEngine engine;
evanso 87:832ca78426b5 80 GameEngine GameEngine;
evanso 83:35d1e846eab2 81 Vector2D pos = {5,4};
evanso 83:35d1e846eab2 82
evanso 83:35d1e846eab2 83 printf("Create_explosion : ");
evanso 83:35d1e846eab2 84
evanso 83:35d1e846eab2 85 //spawn number of expected aliens
evanso 85:87bc28b151d8 86 for (int i = 1; i <= expected_explosion_num; i++) {
evanso 83:35d1e846eab2 87 engine.create_explosion(pos);
evanso 83:35d1e846eab2 88 }
evanso 83:35d1e846eab2 89
evanso 85:87bc28b151d8 90 // Checks if pixel is drawn and therefor testing it hasn’t gone of screen
evanso 83:35d1e846eab2 91 if (engine.explosion_vector.size() == expected_explosion_num) {
evanso 83:35d1e846eab2 92 printf ( "Passed!\n");
evanso 83:35d1e846eab2 93 return true;
evanso 83:35d1e846eab2 94 } else {
evanso 83:35d1e846eab2 95 printf ( "Failed! value = %d (expecting %d)\n",
evanso 83:35d1e846eab2 96 engine.explosion_vector.size(), expected_explosion_num);
evanso 83:35d1e846eab2 97 return false;
evanso 83:35d1e846eab2 98 }
evanso 83:35d1e846eab2 99 }
evanso 83:35d1e846eab2 100
evanso 83:35d1e846eab2 101 bool spawn_people_test(int expected_people_num) {
evanso 85:87bc28b151d8 102 // Objects required for test
evanso 83:35d1e846eab2 103 PlayEngine engine;
evanso 83:35d1e846eab2 104
evanso 83:35d1e846eab2 105 printf("spawn_people : ");
evanso 83:35d1e846eab2 106
evanso 83:35d1e846eab2 107 //spawn number of expected aliens
evanso 85:87bc28b151d8 108 for (int i = 1; i <= expected_people_num; i++) {
evanso 83:35d1e846eab2 109 engine.spawn_people();
evanso 83:35d1e846eab2 110 }
evanso 83:35d1e846eab2 111
evanso 85:87bc28b151d8 112 // Checks if pixel is drawn and therefor testing it hasn’t gone of screen
evanso 83:35d1e846eab2 113 if (engine.people_vector.size() == expected_people_num) {
evanso 83:35d1e846eab2 114 printf ( "Passed!\n");
evanso 83:35d1e846eab2 115 return true;
evanso 83:35d1e846eab2 116 } else {
evanso 83:35d1e846eab2 117 printf ( "Failed! value = %d (expecting %d)\n",
evanso 83:35d1e846eab2 118 engine.people_vector.size(), expected_people_num);
evanso 83:35d1e846eab2 119 return false;
evanso 83:35d1e846eab2 120 }
evanso 83:35d1e846eab2 121 }
evanso 83:35d1e846eab2 122
evanso 83:35d1e846eab2 123 bool create_people_test(int expected_people_num) {
evanso 85:87bc28b151d8 124 // Objects required for test
evanso 83:35d1e846eab2 125 PlayEngine engine;
evanso 87:832ca78426b5 126
evanso 83:35d1e846eab2 127 printf("create_people : ");
evanso 83:35d1e846eab2 128
evanso 83:35d1e846eab2 129 //spawn number of expected aliens
evanso 85:87bc28b151d8 130 for (int i = 1; i <= expected_people_num; i++) {
evanso 83:35d1e846eab2 131 engine.create_people();
evanso 83:35d1e846eab2 132 }
evanso 83:35d1e846eab2 133
evanso 85:87bc28b151d8 134 // Checks if pixel is drawn and therefor testing it hasn’t gone of screen
evanso 83:35d1e846eab2 135 if (engine.people_vector.size() == expected_people_num) {
evanso 83:35d1e846eab2 136 printf ( "Passed!\n");
evanso 83:35d1e846eab2 137 return true;
evanso 83:35d1e846eab2 138 } else {
evanso 83:35d1e846eab2 139 printf ( "Failed! value = %d (expecting %d)\n",
evanso 83:35d1e846eab2 140 engine.people_vector.size(), expected_people_num);
evanso 83:35d1e846eab2 141 return false;
evanso 83:35d1e846eab2 142 }
evanso 83:35d1e846eab2 143 }
evanso 83:35d1e846eab2 144
evanso 83:35d1e846eab2 145 bool reset_map_timer_test(Direction expected_d, bool spaceship_destroyed) {
evanso 85:87bc28b151d8 146 // Objects required for test
evanso 83:35d1e846eab2 147 PlayEngine engine;
evanso 83:35d1e846eab2 148
evanso 83:35d1e846eab2 149 printf("reset_map_timer %d: ",spaceship_destroyed);
evanso 83:35d1e846eab2 150
evanso 85:87bc28b151d8 151 // Pre defines variables
evanso 83:35d1e846eab2 152 engine.spaceship_destroyed_ = spaceship_destroyed;
evanso 83:35d1e846eab2 153 engine.d_ = N;
evanso 83:35d1e846eab2 154
evanso 83:35d1e846eab2 155 engine.reset_map_timer();
evanso 83:35d1e846eab2 156
evanso 85:87bc28b151d8 157 // Checks if pixel is drawn and therefor testing it hasn’t gone of screen
evanso 83:35d1e846eab2 158 if (engine.d_ == expected_d) {
evanso 83:35d1e846eab2 159 printf ( "Passed!\n");
evanso 83:35d1e846eab2 160 return true;
evanso 83:35d1e846eab2 161 } else {
evanso 83:35d1e846eab2 162 printf ( "Failed! value = %d (expecting %d)\n",engine.d_, expected_d);
evanso 83:35d1e846eab2 163 return false;
evanso 83:35d1e846eab2 164 }
evanso 83:35d1e846eab2 165 }
evanso 83:35d1e846eab2 166
evanso 83:35d1e846eab2 167 bool reset_map_test() {
evanso 85:87bc28b151d8 168 // Objects required for test
evanso 83:35d1e846eab2 169 PlayEngine engine;
evanso 83:35d1e846eab2 170
evanso 87:832ca78426b5 171
evanso 83:35d1e846eab2 172 printf("reset_map_ : ");
evanso 83:35d1e846eab2 173
evanso 85:87bc28b151d8 174 // Create object for map functions
evanso 83:35d1e846eab2 175 engine.spawn_people();
evanso 83:35d1e846eab2 176 engine.spawn_aliens();
evanso 83:35d1e846eab2 177
evanso 83:35d1e846eab2 178 engine.reset_map();
evanso 83:35d1e846eab2 179
evanso 85:87bc28b151d8 180 // Checks if pixel is drawn and therefor testing it hasn’t gone of screen
evanso 83:35d1e846eab2 181 if (engine.people_vector.size()== 0 && engine.alien_vector.size() == 0) {
evanso 83:35d1e846eab2 182 printf ( "Passed!\n");
evanso 83:35d1e846eab2 183 return true;
evanso 83:35d1e846eab2 184 } else {
evanso 83:35d1e846eab2 185 printf ( "Failed! value = %d,%d, (expecting 0,0)\n",
evanso 83:35d1e846eab2 186 engine.people_vector.size(), engine.alien_vector.size());
evanso 83:35d1e846eab2 187 return false;
evanso 83:35d1e846eab2 188 }
evanso 83:35d1e846eab2 189 }
evanso 85:87bc28b151d8 190 #endif