Yang Meng
/
207_program
Similar to the example code.
main.cpp@7:f3b57f157655, 2019-05-05 (annotated)
- Committer:
- 2016110307
- Date:
- Sun May 05 16:17:55 2019 +0000
- Revision:
- 7:f3b57f157655
- Parent:
- 6:13297af05b9b
Final Submission. I have read and agreed with Statement of Academic Integrity.;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
2016110307 | 0:97418ec4c37d | 1 | |
2016110307 | 0:97418ec4c37d | 2 | #include "Cylinder.h" |
2016110307 | 0:97418ec4c37d | 3 | #include "Bird.h" |
2016110307 | 0:97418ec4c37d | 4 | |
2016110307 | 0:97418ec4c37d | 5 | N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); |
2016110307 | 0:97418ec4c37d | 6 | Gamepad pad; |
2016110307 | 0:97418ec4c37d | 7 | Bird bird; |
2016110307 | 0:97418ec4c37d | 8 | Cylinder cylinder; |
2016110307 | 0:97418ec4c37d | 9 | |
2016110307 | 0:97418ec4c37d | 10 | void init(); |
2016110307 | 0:97418ec4c37d | 11 | void welcome(); |
2016110307 | 0:97418ec4c37d | 12 | void play(); |
2016110307 | 0:97418ec4c37d | 13 | void reset(); |
2016110307 | 0:97418ec4c37d | 14 | void restart(); |
2016110307 | 0:97418ec4c37d | 15 | |
2016110307 | 0:97418ec4c37d | 16 | int y; |
2016110307 | 0:97418ec4c37d | 17 | int a = 0; |
2016110307 | 0:97418ec4c37d | 18 | int high_score; |
2016110307 | 0:97418ec4c37d | 19 | |
2016110307 | 6:13297af05b9b | 20 | |
2016110307 | 6:13297af05b9b | 21 | //ELEC2645 Embedded Systems Project |
2016110307 | 6:13297af05b9b | 22 | //School of Electronic & Electrical Engineering |
2016110307 | 6:13297af05b9b | 23 | //University of Leeds |
2016110307 | 6:13297af05b9b | 24 | //Name: Mmeng Yang |
2016110307 | 6:13297af05b9b | 25 | //Username: el16ym@leeds.ac.uk |
2016110307 | 6:13297af05b9b | 26 | //Student ID Number: 201089063 |
2016110307 | 6:13297af05b9b | 27 | //Date: 5th/May/2019 |
2016110307 | 6:13297af05b9b | 28 | |
2016110307 | 2:533869513c4a | 29 | |
2016110307 | 0:97418ec4c37d | 30 | int main() |
2016110307 | 0:97418ec4c37d | 31 | { |
2016110307 | 0:97418ec4c37d | 32 | |
2016110307 | 0:97418ec4c37d | 33 | init(); |
2016110307 | 0:97418ec4c37d | 34 | welcome(); |
2016110307 | 1:85ab0d979b57 | 35 | cylinder.select(lcd,pad); |
2016110307 | 0:97418ec4c37d | 36 | |
2016110307 | 0:97418ec4c37d | 37 | while(1) { |
2016110307 | 0:97418ec4c37d | 38 | |
2016110307 | 0:97418ec4c37d | 39 | play(); |
2016110307 | 0:97418ec4c37d | 40 | |
2016110307 | 0:97418ec4c37d | 41 | if(y >= 44) { |
2016110307 | 0:97418ec4c37d | 42 | reset(); |
2016110307 | 0:97418ec4c37d | 43 | } if (y <= 2) { |
2016110307 | 0:97418ec4c37d | 44 | reset(); |
2016110307 | 0:97418ec4c37d | 45 | } |
2016110307 | 0:97418ec4c37d | 46 | |
2016110307 | 0:97418ec4c37d | 47 | wait(0.1); |
2016110307 | 0:97418ec4c37d | 48 | } |
2016110307 | 0:97418ec4c37d | 49 | } |
2016110307 | 0:97418ec4c37d | 50 | |
2016110307 | 0:97418ec4c37d | 51 | |
2016110307 | 0:97418ec4c37d | 52 | void init() |
2016110307 | 0:97418ec4c37d | 53 | { |
2016110307 | 2:533869513c4a | 54 | |
2016110307 | 0:97418ec4c37d | 55 | lcd.init(); |
2016110307 | 0:97418ec4c37d | 56 | lcd.setContrast(0.5); |
2016110307 | 0:97418ec4c37d | 57 | lcd.normalMode(); |
2016110307 | 0:97418ec4c37d | 58 | lcd.setBrightness(0.5); |
2016110307 | 0:97418ec4c37d | 59 | |
2016110307 | 0:97418ec4c37d | 60 | pad.init(); |
2016110307 | 0:97418ec4c37d | 61 | bird.init(); |
2016110307 | 0:97418ec4c37d | 62 | cylinder.init(); |
2016110307 | 0:97418ec4c37d | 63 | |
2016110307 | 0:97418ec4c37d | 64 | } |
2016110307 | 0:97418ec4c37d | 65 | |
2016110307 | 0:97418ec4c37d | 66 | void play() |
2016110307 | 0:97418ec4c37d | 67 | { |
2016110307 | 0:97418ec4c37d | 68 | lcd.clear(); |
2016110307 | 0:97418ec4c37d | 69 | |
2016110307 | 0:97418ec4c37d | 70 | |
2016110307 | 0:97418ec4c37d | 71 | cylinder.check(); |
2016110307 | 0:97418ec4c37d | 72 | cylinder.print_score(lcd); |
2016110307 | 0:97418ec4c37d | 73 | |
2016110307 | 0:97418ec4c37d | 74 | bird.update(pad); |
2016110307 | 0:97418ec4c37d | 75 | y = bird.get_y(); |
2016110307 | 0:97418ec4c37d | 76 | |
2016110307 | 0:97418ec4c37d | 77 | cylinder.draw(lcd); |
2016110307 | 0:97418ec4c37d | 78 | bird.draw(lcd); |
2016110307 | 0:97418ec4c37d | 79 | Data data = cylinder.get_data(); |
2016110307 | 0:97418ec4c37d | 80 | |
2016110307 | 0:97418ec4c37d | 81 | lcd.refresh(); |
2016110307 | 0:97418ec4c37d | 82 | if(y <= data.height1+1 | y >= data.height1 + data.gap1-4) { |
2016110307 | 0:97418ec4c37d | 83 | if(data.x1 <= 4) { |
2016110307 | 0:97418ec4c37d | 84 | reset(); |
2016110307 | 0:97418ec4c37d | 85 | } |
2016110307 | 0:97418ec4c37d | 86 | } |
2016110307 | 0:97418ec4c37d | 87 | if(y <= data.height2+1 | y >= data.height2 + data.gap2-4) { |
2016110307 | 0:97418ec4c37d | 88 | if(data.x2 <= 4) { |
2016110307 | 0:97418ec4c37d | 89 | reset(); |
2016110307 | 0:97418ec4c37d | 90 | } |
2016110307 | 0:97418ec4c37d | 91 | } |
2016110307 | 0:97418ec4c37d | 92 | if(y <= data.height3+1 | y >= data.height3 + data.gap3-4) { |
2016110307 | 0:97418ec4c37d | 93 | if(data.x3 <= 4) { |
2016110307 | 0:97418ec4c37d | 94 | reset(); |
2016110307 | 0:97418ec4c37d | 95 | } |
2016110307 | 0:97418ec4c37d | 96 | } |
2016110307 | 0:97418ec4c37d | 97 | |
2016110307 | 0:97418ec4c37d | 98 | |
2016110307 | 0:97418ec4c37d | 99 | cylinder.update(); |
2016110307 | 0:97418ec4c37d | 100 | |
2016110307 | 0:97418ec4c37d | 101 | wait(0.1); |
2016110307 | 0:97418ec4c37d | 102 | } |
2016110307 | 0:97418ec4c37d | 103 | |
2016110307 | 0:97418ec4c37d | 104 | void reset() |
2016110307 | 2:533869513c4a | 105 | { |
2016110307 | 0:97418ec4c37d | 106 | pad.init(); |
2016110307 | 0:97418ec4c37d | 107 | cylinder.init(); |
2016110307 | 0:97418ec4c37d | 108 | bird.init(); |
2016110307 | 0:97418ec4c37d | 109 | restart(); |
2016110307 | 0:97418ec4c37d | 110 | |
2016110307 | 0:97418ec4c37d | 111 | } |
2016110307 | 0:97418ec4c37d | 112 | |
2016110307 | 0:97418ec4c37d | 113 | void welcome() |
2016110307 | 0:97418ec4c37d | 114 | { |
2016110307 | 0:97418ec4c37d | 115 | lcd.printString(" Flappy Bird ",0,1); |
2016110307 | 0:97418ec4c37d | 116 | lcd.printString(" Press Start ",0,4); |
2016110307 | 0:97418ec4c37d | 117 | lcd.refresh(); |
2016110307 | 0:97418ec4c37d | 118 | while ( pad.check_event(Gamepad::START_PRESSED) == false) { |
2016110307 | 0:97418ec4c37d | 119 | pad.leds_on(); |
2016110307 | 0:97418ec4c37d | 120 | wait(0.1); |
2016110307 | 0:97418ec4c37d | 121 | pad.leds_off(); |
2016110307 | 0:97418ec4c37d | 122 | wait(0.1); |
2016110307 | 0:97418ec4c37d | 123 | } |
2016110307 | 1:85ab0d979b57 | 124 | wait(0.2); |
2016110307 | 0:97418ec4c37d | 125 | } |
2016110307 | 0:97418ec4c37d | 126 | |
2016110307 | 0:97418ec4c37d | 127 | void restart() |
2016110307 | 0:97418ec4c37d | 128 | { |
2016110307 | 0:97418ec4c37d | 129 | bird.background(lcd); |
2016110307 | 0:97418ec4c37d | 130 | lcd.clear(); |
2016110307 | 0:97418ec4c37d | 131 | high_score = cylinder.get_highest_score(a); |
2016110307 | 0:97418ec4c37d | 132 | a = high_score; |
2016110307 | 0:97418ec4c37d | 133 | cylinder.print_yourscore(lcd); |
2016110307 | 0:97418ec4c37d | 134 | char buffer1[14]; |
2016110307 | 0:97418ec4c37d | 135 | sprintf(buffer1,"HighScore = %2d ",high_score); |
2016110307 | 0:97418ec4c37d | 136 | lcd.printString(buffer1,0,0); |
2016110307 | 1:85ab0d979b57 | 137 | lcd.printString(" Press Start ",0,3); |
2016110307 | 1:85ab0d979b57 | 138 | lcd.printString(" to continue ",0,4); |
2016110307 | 1:85ab0d979b57 | 139 | |
2016110307 | 0:97418ec4c37d | 140 | lcd.refresh(); |
2016110307 | 0:97418ec4c37d | 141 | while ( pad.check_event(Gamepad::START_PRESSED) == false) { |
2016110307 | 0:97418ec4c37d | 142 | pad.leds_on(); |
2016110307 | 0:97418ec4c37d | 143 | wait(0.1); |
2016110307 | 0:97418ec4c37d | 144 | pad.leds_off(); |
2016110307 | 0:97418ec4c37d | 145 | wait(0.1); |
2016110307 | 0:97418ec4c37d | 146 | } |
2016110307 | 1:85ab0d979b57 | 147 | wait(0.2); |
2016110307 | 1:85ab0d979b57 | 148 | cylinder.select(lcd,pad); |
2016110307 | 0:97418ec4c37d | 149 | } |
2016110307 | 0:97418ec4c37d | 150 | |
2016110307 | 0:97418ec4c37d | 151 | |
2016110307 | 0:97418ec4c37d | 152 | |
2016110307 | 0:97418ec4c37d | 153 |