Similar to the example code.

Dependencies:   mbed N5110

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?

UserRevisionLine numberNew 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