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:
Tue May 26 19:38:48 2020 +0000
Revision:
85:87bc28b151d8
Parent:
84:f61c85a5f13a
Child:
86:eecd168c3a23
Spell checked all of code and comments

Who changed what in which revision?

UserRevisionLine numberNew contents of line
eencae 0:b7f1f47bb26a 1 /*
eencae 0:b7f1f47bb26a 2 ELEC2645 Embedded Systems Project
eencae 0:b7f1f47bb26a 3 School of Electronic & Electrical Engineering
eencae 0:b7f1f47bb26a 4 University of Leeds
evanso 85:87bc28b151d8 5 Name: Benjamin Evans
evanso 1:1f2ae263248e 6 Username:el18bpe
evanso 1:1f2ae263248e 7 Student ID Number:201216635
evanso 1:1f2ae263248e 8 Date:23/02/2020
eencae 0:b7f1f47bb26a 9 */
eencae 0:b7f1f47bb26a 10
evanso 13:12276eed13ac 11 // pre-processor directives ----------------------------------------------------
eencae 0:b7f1f47bb26a 12 #include "mbed.h"
eencae 0:b7f1f47bb26a 13 #include "Gamepad.h"
eencae 0:b7f1f47bb26a 14 #include "N5110.h"
evanso 11:ab578a151f67 15 #include "GameEngine.h"
evanso 3:dee187b8b30c 16 #include "Spaceship.h"
evanso 6:12e8433382b3 17 #include "Map.h"
evanso 11:ab578a151f67 18
evanso 12:1c0b6796aaca 19 #ifdef GAME_TEST
evanso 67:a2984682d641 20 #include "test.h"
evanso 11:ab578a151f67 21 #endif
evanso 11:ab578a151f67 22
evanso 13:12276eed13ac 23 // Objects ---------------------------------------------------------------------
evanso 13:12276eed13ac 24
evanso 27:8bb2bd97c319 25 /** Define Game Engine object*/
evanso 8:dd1037c5435b 26 GameEngine engine;
evanso 11:ab578a151f67 27
evanso 84:f61c85a5f13a 28 // Functions -------------------------------------------------------------------
evanso 84:f61c85a5f13a 29
evanso 85:87bc28b151d8 30 /** Runs the different test for the game */
evanso 84:f61c85a5f13a 31 void test_game();
evanso 84:f61c85a5f13a 32
eencae 0:b7f1f47bb26a 33 int main()
evanso 3:dee187b8b30c 34 {
evanso 85:87bc28b151d8 35 // Initialise the game engine
evanso 42:3aed75338272 36 engine.init();
evanso 42:3aed75338272 37
evanso 84:f61c85a5f13a 38 // Tests game
evanso 84:f61c85a5f13a 39 test_game();
evanso 84:f61c85a5f13a 40
evanso 84:f61c85a5f13a 41 while (1) {
evanso 85:87bc28b151d8 42 // Selects the different parts of the game
evanso 84:f61c85a5f13a 43 engine.game_select_part();
evanso 84:f61c85a5f13a 44
evanso 84:f61c85a5f13a 45 // Sets frame rate to 20 FPS for menu system
evanso 84:f61c85a5f13a 46 wait(0.05);
evanso 84:f61c85a5f13a 47 }
evanso 84:f61c85a5f13a 48 }
evanso 84:f61c85a5f13a 49
evanso 84:f61c85a5f13a 50 void test_game(){
evanso 11:ab578a151f67 51 // Compile with tests
evanso 12:1c0b6796aaca 52 #ifdef GAME_TEST
evanso 84:f61c85a5f13a 53
evanso 83:35d1e846eab2 54 // Spaceship tests
evanso 13:12276eed13ac 55 run_spaceship_movement_tests();
evanso 13:12276eed13ac 56 run_spaceship_draw_tests();
evanso 84:f61c85a5f13a 57
evanso 83:35d1e846eab2 58 // Map tests
evanso 14:7419c680656f 59 run_map_draw_tests();
evanso 84:f61c85a5f13a 60
evanso 83:35d1e846eab2 61 // Alien tests
evanso 65:daa792a09e1f 62 run_alien_draw_tests();
evanso 65:daa792a09e1f 63 run_check_collision_test();
evanso 84:f61c85a5f13a 64
evanso 83:35d1e846eab2 65 // Weapons tests
evanso 23:cc44e26c08fa 66 run_weapons_draw_tests();
evanso 84:f61c85a5f13a 67
evanso 83:35d1e846eab2 68 // Explosion tests
evanso 26:1a7056eb3253 69 run_explosion_draw_tests();
evanso 84:f61c85a5f13a 70
evanso 83:35d1e846eab2 71 // People tests
evanso 37:a05eac7fcb4c 72 run_people_draw_tests();
evanso 84:f61c85a5f13a 73
evanso 83:35d1e846eab2 74 // Menu tests
evanso 65:daa792a09e1f 75 run_menu_select_part_test();
evanso 65:daa792a09e1f 76 run_menu_scroll_test();
evanso 70:8c4572d17441 77 run_menu_draw_part_test();
evanso 84:f61c85a5f13a 78
evanso 83:35d1e846eab2 79 // HUD tests
evanso 66:33f479036a5d 80 run_HUD_draw_test();
evanso 84:f61c85a5f13a 81
evanso 83:35d1e846eab2 82 // Saved Games tests
evanso 67:a2984682d641 83 run_saved_games_scroll_test();
evanso 67:a2984682d641 84 run_display_saved_games_test();
evanso 67:a2984682d641 85 run_save_game_screen_test();
evanso 84:f61c85a5f13a 86
evanso 83:35d1e846eab2 87 // Settings tests
evanso 70:8c4572d17441 88 run_settings_select_part_test();
evanso 70:8c4572d17441 89 run_settings_scroll_test();
evanso 70:8c4572d17441 90 run_display_settings_screen_test();
evanso 84:f61c85a5f13a 91
evanso 83:35d1e846eab2 92 // Play Engine tests
evanso 79:66bcf8fa2d2d 93 run_no_high_scores_test();
evanso 84:f61c85a5f13a 94
evanso 83:35d1e846eab2 95 // Play Engine tests
evanso 83:35d1e846eab2 96 run_read_accelerometer_direction_test();
evanso 83:35d1e846eab2 97 run_spawn_aliens_test();
evanso 83:35d1e846eab2 98 run_create_alien_test();
evanso 83:35d1e846eab2 99 run_create_explosion_test();
evanso 83:35d1e846eab2 100 run_draw_explosions_test();
evanso 83:35d1e846eab2 101 run_spawn_people_test();
evanso 83:35d1e846eab2 102 run_reset_map_timer_test();
evanso 83:35d1e846eab2 103 run_reset_map_test();
evanso 84:f61c85a5f13a 104
evanso 84:f61c85a5f13a 105 #endif
evanso 85:87bc28b151d8 106 }