Zeyu Feng 201377605

Dependencies:   mbed

On Minerva

Committer:
el19zf
Date:
Wed Apr 29 15:20:34 2020 +0000
Revision:
8:8287d2ef965d
Parent:
7:c49f3d3b672f
Child:
9:62d6559f0d50
update class collision and game mechanics

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el19zf 7:c49f3d3b672f 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"
el19zf 8:8287d2ef965d 20 #include "Collision.h"
eencae 0:b7f1f47bb26a 21
el19zf 6:dce38fe4e092 22
eencae 0:b7f1f47bb26a 23 // objects
eencae 0:b7f1f47bb26a 24 Gamepad pad;
eencae 0:b7f1f47bb26a 25 N5110 lcd;
el19zf 3:b8fbaefc496c 26 PeopleEngine engine;
el19zf 4:b12a49f0b730 27 shot shot;
el19zf 8:8287d2ef965d 28 Collision collision;
el19zf 4:b12a49f0b730 29
el19zf 6:dce38fe4e092 30 //flag and triggers
el19zf 6:dce38fe4e092 31 Ticker ticker;
el19zf 6:dce38fe4e092 32 volatile int timer_flag = 0;
el19zf 6:dce38fe4e092 33
el19zf 6:dce38fe4e092 34 // functions
el19zf 7:c49f3d3b672f 35 void flip()
el19zf 7:c49f3d3b672f 36 {
el19zf 6:dce38fe4e092 37 timer_flag = 1;
el19zf 6:dce38fe4e092 38 }
el19zf 6:dce38fe4e092 39 void init();
el19zf 8:8287d2ef965d 40 void control_check();
el19zf 7:c49f3d3b672f 41 void shot_update();
el19zf 6:dce38fe4e092 42
eencae 0:b7f1f47bb26a 43
eencae 0:b7f1f47bb26a 44 int main()
eencae 0:b7f1f47bb26a 45 {
el19zf 3:b8fbaefc496c 46 //initial
el19zf 6:dce38fe4e092 47 init();
el19zf 8:8287d2ef965d 48 //set a ticker
el19zf 8:8287d2ef965d 49 ticker.attach(&flip,2);
el19zf 7:c49f3d3b672f 50
el19zf 6:dce38fe4e092 51 //a infinite loop to control position of the people, update the game state
el19zf 6:dce38fe4e092 52 while(1) {
el19zf 7:c49f3d3b672f 53 if(timer_flag == 1) {
el19zf 6:dce38fe4e092 54 timer_flag = 0;
el19zf 8:8287d2ef965d 55 if(shot.get_size() < 30){
el19zf 8:8287d2ef965d 56 int size = shot.get_size()+ 2;
el19zf 8:8287d2ef965d 57 shot.set_size(size);
el19zf 8:8287d2ef965d 58 }
el19zf 6:dce38fe4e092 59 }
el19zf 6:dce38fe4e092 60 lcd.clear();
el19zf 8:8287d2ef965d 61 // shot update
el19zf 6:dce38fe4e092 62 shot_update();
el19zf 8:8287d2ef965d 63
el19zf 8:8287d2ef965d 64 // control people and check collision
el19zf 8:8287d2ef965d 65 control_check();
el19zf 8:8287d2ef965d 66
el19zf 6:dce38fe4e092 67 lcd.refresh();
el19zf 6:dce38fe4e092 68 //printf("shot refresh\n");
el19zf 6:dce38fe4e092 69 //printf("size = %d\n",shot._size);
el19zf 7:c49f3d3b672f 70 wait_ms(200);//fps = 5
el19zf 6:dce38fe4e092 71 }
el19zf 6:dce38fe4e092 72 }
el19zf 6:dce38fe4e092 73
el19zf 6:dce38fe4e092 74
el19zf 6:dce38fe4e092 75 void init()
el19zf 6:dce38fe4e092 76 {
el19zf 2:67b51ee7fc34 77 lcd.init();
el19zf 2:67b51ee7fc34 78 lcd.setContrast(0.5);
el19zf 3:b8fbaefc496c 79 engine.init();
el19zf 2:67b51ee7fc34 80 pad.init();
el19zf 7:c49f3d3b672f 81 shot.init();
el19zf 8:8287d2ef965d 82 collision.init();
el19zf 2:67b51ee7fc34 83 lcd.refresh();
eencae 0:b7f1f47bb26a 84 }
eencae 0:b7f1f47bb26a 85
el19zf 8:8287d2ef965d 86 void control_check()
el19zf 6:dce38fe4e092 87 {
el19zf 6:dce38fe4e092 88 engine.read_input(pad);
el19zf 6:dce38fe4e092 89 engine.update();
el19zf 8:8287d2ef965d 90 collision.set_pos(engine.get_pos());
el19zf 8:8287d2ef965d 91 if(collision.check(lcd)) {
el19zf 8:8287d2ef965d 92 engine.init();
el19zf 8:8287d2ef965d 93 lcd.clear();
el19zf 8:8287d2ef965d 94 shot.init();
el19zf 8:8287d2ef965d 95 }
el19zf 8:8287d2ef965d 96 collision.draw(lcd);
el19zf 6:dce38fe4e092 97 engine.draw(lcd);
el19zf 6:dce38fe4e092 98 }
el19zf 8:8287d2ef965d 99
el19zf 6:dce38fe4e092 100 void shot_update()
el19zf 6:dce38fe4e092 101 {
el19zf 7:c49f3d3b672f 102 shot.update();
el19zf 7:c49f3d3b672f 103 shot.delete_shot();
el19zf 7:c49f3d3b672f 104 shot.gen_shot();
el19zf 7:c49f3d3b672f 105 shot.draw(lcd);
el19zf 6:dce38fe4e092 106 }