
Zeyu Feng 201377605
Dependencies: mbed
On Minerva
main.cpp@8:8287d2ef965d, 2020-04-29 (annotated)
- 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?
User | Revision | Line number | New 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 | } |