Zeyu Feng 201377605

Dependencies:   mbed

On Minerva

Committer:
el19zf
Date:
Tue Apr 28 15:54:41 2020 +0000
Revision:
6:dce38fe4e092
Parent:
5:6774b7272e85
Child:
7:c49f3d3b672f
add ticker to increase shots along with time

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
el19zf 1:b133934e0d45 7 Name:Zeyu Feng
el19zf 1:b133934e0d45 8 Username:el19zf
el19zf 1:b133934e0d45 9 Student ID Number:201377605
el19zf 1:b133934e0d45 10 Date:11/3/2020
eencae 0:b7f1f47bb26a 11 */
eencae 0:b7f1f47bb26a 12
eencae 0:b7f1f47bb26a 13 // includes
eencae 0:b7f1f47bb26a 14 #include "mbed.h"
eencae 0:b7f1f47bb26a 15 #include "Gamepad.h"
eencae 0:b7f1f47bb26a 16 #include "N5110.h"
el19zf 2:67b51ee7fc34 17 #include "People.h"
el19zf 3:b8fbaefc496c 18 #include "PeopleEngine.h"
el19zf 4:b12a49f0b730 19 #include "shot.h"
eencae 0:b7f1f47bb26a 20
el19zf 6:dce38fe4e092 21
eencae 0:b7f1f47bb26a 22 // objects
eencae 0:b7f1f47bb26a 23 Gamepad pad;
eencae 0:b7f1f47bb26a 24 N5110 lcd;
el19zf 3:b8fbaefc496c 25 PeopleEngine engine;
el19zf 4:b12a49f0b730 26 shot shot;
el19zf 4:b12a49f0b730 27
el19zf 6:dce38fe4e092 28 //flag and triggers
el19zf 6:dce38fe4e092 29 Ticker ticker;
el19zf 6:dce38fe4e092 30 volatile int timer_flag = 0;
el19zf 6:dce38fe4e092 31
el19zf 6:dce38fe4e092 32 // functions
el19zf 6:dce38fe4e092 33 void flip() {
el19zf 6:dce38fe4e092 34 timer_flag = 1;
el19zf 6:dce38fe4e092 35 }
el19zf 6:dce38fe4e092 36 void init();
el19zf 6:dce38fe4e092 37 void control_people();
el19zf 6:dce38fe4e092 38 void shot_update();
el19zf 6:dce38fe4e092 39
eencae 0:b7f1f47bb26a 40
eencae 0:b7f1f47bb26a 41 int main()
eencae 0:b7f1f47bb26a 42 {
el19zf 3:b8fbaefc496c 43 //initial
el19zf 6:dce38fe4e092 44 init();
el19zf 6:dce38fe4e092 45
el19zf 6:dce38fe4e092 46 ticker.attach(&flip,5);
el19zf 6:dce38fe4e092 47
el19zf 6:dce38fe4e092 48 //a infinite loop to control position of the people, update the game state
el19zf 6:dce38fe4e092 49 while(1) {
el19zf 6:dce38fe4e092 50 if(timer_flag == 1){
el19zf 6:dce38fe4e092 51 timer_flag = 0;
el19zf 6:dce38fe4e092 52 if(shot._size < 30)
el19zf 6:dce38fe4e092 53 shot._size = shot._size + 2;
el19zf 6:dce38fe4e092 54 }
el19zf 6:dce38fe4e092 55 lcd.clear();
el19zf 6:dce38fe4e092 56 // people
el19zf 6:dce38fe4e092 57 control_people();
el19zf 6:dce38fe4e092 58 shot_update();
el19zf 6:dce38fe4e092 59 lcd.refresh();
el19zf 6:dce38fe4e092 60 //printf("shot refresh\n");
el19zf 6:dce38fe4e092 61 //printf("size = %d\n",shot._size);
el19zf 6:dce38fe4e092 62 wait_ms(100);//fps = 10
el19zf 6:dce38fe4e092 63
el19zf 6:dce38fe4e092 64 }
el19zf 6:dce38fe4e092 65
el19zf 6:dce38fe4e092 66 }
el19zf 6:dce38fe4e092 67
el19zf 6:dce38fe4e092 68
el19zf 6:dce38fe4e092 69 void init()
el19zf 6:dce38fe4e092 70 {
el19zf 2:67b51ee7fc34 71 lcd.init();
el19zf 2:67b51ee7fc34 72 lcd.setContrast(0.5);
el19zf 3:b8fbaefc496c 73 engine.init();
el19zf 2:67b51ee7fc34 74 pad.init();
el19zf 2:67b51ee7fc34 75 lcd.refresh();
el19zf 6:dce38fe4e092 76 shot.init();
eencae 0:b7f1f47bb26a 77 }
eencae 0:b7f1f47bb26a 78
el19zf 6:dce38fe4e092 79 void control_people()
el19zf 6:dce38fe4e092 80 {
el19zf 6:dce38fe4e092 81 engine.read_input(pad);
el19zf 6:dce38fe4e092 82 engine.update();
el19zf 6:dce38fe4e092 83 engine.draw(lcd);
el19zf 6:dce38fe4e092 84 }
el19zf 6:dce38fe4e092 85 void shot_update()
el19zf 6:dce38fe4e092 86 {
el19zf 6:dce38fe4e092 87 shot.update();
el19zf 6:dce38fe4e092 88 shot.delete_shot();
el19zf 6:dce38fe4e092 89 shot.gen_shot();
el19zf 6:dce38fe4e092 90 shot.draw(lcd);
el19zf 6:dce38fe4e092 91 }
el19zf 6:dce38fe4e092 92