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:
Mon Apr 13 10:54:58 2020 +0000
Revision:
3:dee187b8b30c
Parent:
1:1f2ae263248e
Child:
4:0df2b85e47f1
Drawn spaceship sprite and displays it on LCD using event-triggered tasks

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
eencae 0:b7f1f47bb26a 5 2019/20
eencae 0:b7f1f47bb26a 6
evanso 1:1f2ae263248e 7 Name:Benjamin Evans
evanso 1:1f2ae263248e 8 Username:el18bpe
evanso 1:1f2ae263248e 9 Student ID Number:201216635
evanso 1:1f2ae263248e 10 Date:23/02/2020
eencae 0:b7f1f47bb26a 11 */
evanso 3:dee187b8b30c 12 // Using Google C++ Style Guide
eencae 0:b7f1f47bb26a 13
evanso 3:dee187b8b30c 14 // Includes libaries
eencae 0:b7f1f47bb26a 15 #include "mbed.h"
eencae 0:b7f1f47bb26a 16 #include "Gamepad.h"
eencae 0:b7f1f47bb26a 17 #include "N5110.h"
evanso 3:dee187b8b30c 18 #include "Spaceship.h"
eencae 0:b7f1f47bb26a 19
eencae 0:b7f1f47bb26a 20
evanso 3:dee187b8b30c 21 // Objects
eencae 0:b7f1f47bb26a 22 Gamepad pad;
eencae 0:b7f1f47bb26a 23 N5110 lcd;
evanso 3:dee187b8b30c 24 Ticker ticker;
evanso 3:dee187b8b30c 25 Spaceship spaceship;
evanso 3:dee187b8b30c 26
evanso 3:dee187b8b30c 27 // Global varable definitions
evanso 3:dee187b8b30c 28 volatile int g_lcd_frame_time_flag = 0;
evanso 3:dee187b8b30c 29
evanso 3:dee187b8b30c 30 // Function definitions
evanso 3:dee187b8b30c 31 void LcdFrameTimeIsr();
eencae 0:b7f1f47bb26a 32
eencae 0:b7f1f47bb26a 33 int main()
evanso 3:dee187b8b30c 34 {
evanso 3:dee187b8b30c 35 // Sets fram rate of lcd by using time-triggered tasks
evanso 3:dee187b8b30c 36 ticker.attach(&LcdFrameTimeIsr,0.04);
evanso 3:dee187b8b30c 37
evanso 3:dee187b8b30c 38 lcd.init();
evanso 3:dee187b8b30c 39 lcd.setContrast(0.35);
evanso 3:dee187b8b30c 40 spaceship.init();
evanso 3:dee187b8b30c 41 lcd.refresh();
eencae 0:b7f1f47bb26a 42
evanso 3:dee187b8b30c 43 while (1) {
evanso 3:dee187b8b30c 44 // Checks flag and prints spaceship on lcd then resets flag
evanso 3:dee187b8b30c 45 if (g_lcd_frame_time_flag) {
evanso 3:dee187b8b30c 46 g_lcd_frame_time_flag = 0;
evanso 3:dee187b8b30c 47
evanso 3:dee187b8b30c 48 spaceship.draw(lcd);
evanso 3:dee187b8b30c 49 lcd.refresh();
evanso 3:dee187b8b30c 50 }
evanso 3:dee187b8b30c 51
evanso 3:dee187b8b30c 52 // MCU put to sleep between each frame to save power
evanso 3:dee187b8b30c 53 sleep();
evanso 3:dee187b8b30c 54 }
evanso 3:dee187b8b30c 55
evanso 3:dee187b8b30c 56
eencae 0:b7f1f47bb26a 57 }
eencae 0:b7f1f47bb26a 58
evanso 3:dee187b8b30c 59 // Time-triggered interrupt to wake MCU from sleep
evanso 3:dee187b8b30c 60 void LcdFrameTimeIsr()
evanso 3:dee187b8b30c 61 {
evanso 3:dee187b8b30c 62 g_lcd_frame_time_flag = 1; // set flag in ISR
evanso 3:dee187b8b30c 63 }