bird

Dependencies:   mbed

Committer:
1013373474
Date:
Sun May 05 18:46:58 2019 +0000
Revision:
2:fb9c05867677
Parent:
1:8672e52115e3
Child:
6:9bf0273ee25f
FLY BIRD

Who changed what in which revision?

UserRevisionLine numberNew contents of line
1013373474 0:3887ebee1b37 1
1013373474 0:3887ebee1b37 2 #include "structure.h"
1013373474 0:3887ebee1b37 3 #include "structure_2.h"
1013373474 1:8672e52115e3 4
1013373474 0:3887ebee1b37 5 void init();
1013373474 0:3887ebee1b37 6 void welcome();
1013373474 0:3887ebee1b37 7 void render();
1013373474 0:3887ebee1b37 8 void render1();
1013373474 0:3887ebee1b37 9 void check();
1013373474 0:3887ebee1b37 10 void check1();
1013373474 0:3887ebee1b37 11 void death();
1013373474 0:3887ebee1b37 12
1013373474 0:3887ebee1b37 13
1013373474 0:3887ebee1b37 14
1013373474 0:3887ebee1b37 15 //pin
1013373474 0:3887ebee1b37 16 N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
1013373474 0:3887ebee1b37 17 Gamepad pad;
1013373474 0:3887ebee1b37 18 bird bird;
1013373474 0:3887ebee1b37 19 structure structure;
1013373474 0:3887ebee1b37 20 structure_2 structure_2;
1013373474 0:3887ebee1b37 21
1013373474 0:3887ebee1b37 22
1013373474 0:3887ebee1b37 23
1013373474 0:3887ebee1b37 24 int main()
1013373474 1:8672e52115e3 25 {
1013373474 1:8672e52115e3 26 while (1){
1013373474 0:3887ebee1b37 27 init();//初始化
1013373474 0:3887ebee1b37 28 lcd.drawRect(0,0,84,1,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽,
1013373474 0:3887ebee1b37 29 lcd.drawRect(0,1,1,48,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽,
1013373474 0:3887ebee1b37 30 lcd.drawRect(0,47,84,1,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽,
1013373474 0:3887ebee1b37 31 lcd.drawRect(83,1,1,48,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽,
1013373474 0:3887ebee1b37 32 welcome();
1013373474 1:8672e52115e3 33
1013373474 1:8672e52115e3 34
1013373474 1:8672e52115e3 35 while (pad.check_event(Gamepad::BACK_PRESSED) == false){
1013373474 0:3887ebee1b37 36 lcd.clear();
1013373474 0:3887ebee1b37 37 lcd.printString(" A NORMAL ",1,1);
1013373474 1:8672e52115e3 38 lcd.printString(" B HARD ",1,2);
1013373474 1:8672e52115e3 39 lcd.printString(" Y MESSAGE ",1,3);
1013373474 0:3887ebee1b37 40 lcd.drawRect(0,0,84,1,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽,
1013373474 0:3887ebee1b37 41 lcd.drawRect(0,1,1,48,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽,
1013373474 0:3887ebee1b37 42 lcd.drawRect(0,47,84,1,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽,
1013373474 0:3887ebee1b37 43 lcd.drawRect(83,1,1,48,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽,
1013373474 0:3887ebee1b37 44 lcd.refresh();
1013373474 1:8672e52115e3 45
1013373474 1:8672e52115e3 46 wait(0.5);
1013373474 1:8672e52115e3 47
1013373474 1:8672e52115e3 48 if (pad.check_event(Gamepad::A_PRESSED) == true) {
1013373474 1:8672e52115e3 49 while (pad.check_event(Gamepad::BACK_PRESSED) == false) {
1013373474 0:3887ebee1b37 50 render();
1013373474 1:8672e52115e3 51 wait(0.5);
1013373474 0:3887ebee1b37 52 check();
1013373474 1:8672e52115e3 53 }//BACK
1013373474 1:8672e52115e3 54 }//A
1013373474 1:8672e52115e3 55
1013373474 1:8672e52115e3 56
1013373474 1:8672e52115e3 57 if (pad.check_event(Gamepad::B_PRESSED) == true) {
1013373474 1:8672e52115e3 58 while (pad.check_event(Gamepad::BACK_PRESSED) == false) {
1013373474 0:3887ebee1b37 59 render1();
1013373474 1:8672e52115e3 60 wait(0.5);
1013373474 1:8672e52115e3 61 check1();
1013373474 1:8672e52115e3 62 }//BACK
1013373474 1:8672e52115e3 63 }//B
1013373474 1:8672e52115e3 64
1013373474 1:8672e52115e3 65 if (pad.check_event(Gamepad::Y_PRESSED) == true) {
1013373474 1:8672e52115e3 66 while (pad.check_event(Gamepad::BACK_PRESSED) == false) {
1013373474 1:8672e52115e3 67 lcd.clear();
1013373474 1:8672e52115e3 68 lcd.printString(" Programme by:",0,1);
1013373474 1:8672e52115e3 69 lcd.printString(" Zhou Yongzhi",0,2);
1013373474 1:8672e52115e3 70 lcd.printString(" 201090418 ",0,3);
1013373474 1:8672e52115e3 71 lcd.printString(" 2016110306 ",0,4);
1013373474 1:8672e52115e3 72 lcd.refresh();
1013373474 1:8672e52115e3 73 }//BACK
1013373474 1:8672e52115e3 74 }//C
1013373474 1:8672e52115e3 75
1013373474 1:8672e52115e3 76
1013373474 0:3887ebee1b37 77 }
1013373474 0:3887ebee1b37 78 }
1013373474 1:8672e52115e3 79 }
1013373474 0:3887ebee1b37 80
1013373474 0:3887ebee1b37 81
1013373474 0:3887ebee1b37 82 void init()
1013373474 0:3887ebee1b37 83 {
1013373474 0:3887ebee1b37 84 lcd.init();
1013373474 0:3887ebee1b37 85 pad.init();
1013373474 0:3887ebee1b37 86 bird.init();
1013373474 0:3887ebee1b37 87 structure.init();
1013373474 0:3887ebee1b37 88 structure_2.init();
1013373474 0:3887ebee1b37 89 }
1013373474 0:3887ebee1b37 90
1013373474 0:3887ebee1b37 91
1013373474 0:3887ebee1b37 92 void render()//A nomal
1013373474 0:3887ebee1b37 93 { // clear screen, re-draw and refresh
1013373474 0:3887ebee1b37 94 lcd.clear();
1013373474 0:3887ebee1b37 95 Data1 data1 = structure.get_data1();
1013373474 0:3887ebee1b37 96 lcd.drawRect(0,0,84,1,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽,
1013373474 0:3887ebee1b37 97 lcd.drawRect(0,1,1,48,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽,
1013373474 0:3887ebee1b37 98 lcd.drawRect(0,47,84,1,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽,
1013373474 0:3887ebee1b37 99 lcd.drawRect(83,1,1,48,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽,
1013373474 0:3887ebee1b37 100 bird.draw(lcd);
1013373474 0:3887ebee1b37 101 structure.draw(lcd);
1013373474 0:3887ebee1b37 102 char buffer1[14];
1013373474 0:3887ebee1b37 103 sprintf(buffer1,"%2d",data1.t);
1013373474 0:3887ebee1b37 104 lcd.printString(buffer1,1,1);
1013373474 2:fb9c05867677 105 lcd.drawRect(1,1,15,15,FILL_TRANSPARENT);
1013373474 1:8672e52115e3 106 bird.check(pad,lcd);
1013373474 0:3887ebee1b37 107 lcd.refresh();
1013373474 0:3887ebee1b37 108 }
1013373474 0:3887ebee1b37 109
1013373474 0:3887ebee1b37 110
1013373474 0:3887ebee1b37 111 void render1()//A nomal
1013373474 0:3887ebee1b37 112 { // clear screen, re-draw and refresh
1013373474 0:3887ebee1b37 113 lcd.clear();
1013373474 0:3887ebee1b37 114 Data2 data2 = structure_2.get_data2();
1013373474 0:3887ebee1b37 115 lcd.drawRect(0,0,84,1,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽,
1013373474 0:3887ebee1b37 116 lcd.drawRect(0,1,1,48,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽,
1013373474 0:3887ebee1b37 117 lcd.drawRect(0,47,84,1,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽,
1013373474 0:3887ebee1b37 118 lcd.drawRect(83,1,1,48,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽,
1013373474 0:3887ebee1b37 119 bird.draw(lcd);
1013373474 0:3887ebee1b37 120 structure_2.draw(lcd);
1013373474 0:3887ebee1b37 121 char buffer1[14];
1013373474 0:3887ebee1b37 122 sprintf(buffer1,"%2d",data2.tt);
1013373474 0:3887ebee1b37 123 lcd.printString(buffer1,1,1);
1013373474 2:fb9c05867677 124 lcd.drawRect(1,1,15,15,FILL_TRANSPARENT);
1013373474 1:8672e52115e3 125 bird.check(pad,lcd);
1013373474 0:3887ebee1b37 126 lcd.refresh();
1013373474 0:3887ebee1b37 127 }
1013373474 0:3887ebee1b37 128
1013373474 0:3887ebee1b37 129
1013373474 0:3887ebee1b37 130 void welcome() {
1013373474 1:8672e52115e3 131 lcd.printString(" Flappy Bird ",1,1);
1013373474 0:3887ebee1b37 132 lcd.printString(" Press Start ",1,4);
1013373474 0:3887ebee1b37 133 lcd.refresh();
1013373474 0:3887ebee1b37 134 // wait flashing LEDs until start button is pressed LED灯闪到按Press
1013373474 0:3887ebee1b37 135 while (pad.check_event(Gamepad::START_PRESSED) == false) {
1013373474 0:3887ebee1b37 136 pad.leds_on();
1013373474 0:3887ebee1b37 137 wait(0.1);
1013373474 0:3887ebee1b37 138 pad.leds_off();
1013373474 0:3887ebee1b37 139 wait(0.1);
1013373474 0:3887ebee1b37 140 }
1013373474 0:3887ebee1b37 141 }
1013373474 0:3887ebee1b37 142
1013373474 0:3887ebee1b37 143
1013373474 0:3887ebee1b37 144 void check(){
1013373474 0:3887ebee1b37 145 Data data = bird.get_data();
1013373474 0:3887ebee1b37 146 Data1 data1 = structure.get_data1();
1013373474 0:3887ebee1b37 147 if ( data.y >= 48 ){
1013373474 0:3887ebee1b37 148 death();
1013373474 0:3887ebee1b37 149 }else if(data1.m >= 25 && data1.m <= 32 ){ if(data.y <= data1.n || data.y >= data1.n + 15){
1013373474 0:3887ebee1b37 150 death(); }}
1013373474 0:3887ebee1b37 151 else if(data1.p >= 25 && data1.p <= 32){ if(data.y <= data1.q || data.y >= data1.q + 15){
1013373474 0:3887ebee1b37 152 death(); }}
1013373474 0:3887ebee1b37 153 else if(data1.e >= 25 && data1.e <= 32){ if(data.y <= data1.o || data.y >= data1.o + 15){
1013373474 0:3887ebee1b37 154 death(); }}
1013373474 0:3887ebee1b37 155
1013373474 0:3887ebee1b37 156 }
1013373474 0:3887ebee1b37 157
1013373474 0:3887ebee1b37 158
1013373474 0:3887ebee1b37 159
1013373474 0:3887ebee1b37 160 void check1(){
1013373474 0:3887ebee1b37 161 Data data = bird.get_data();
1013373474 0:3887ebee1b37 162 Data2 data2 = structure_2.get_data2();
1013373474 0:3887ebee1b37 163 if ( data.y >= 48 ){
1013373474 0:3887ebee1b37 164 death();
1013373474 0:3887ebee1b37 165 }else if(data2.mm >= 25 && data2.mm <= 32 ){ if(data.y <= data2.nn || data.y >= data2.nn + 15){
1013373474 0:3887ebee1b37 166 death(); }}
1013373474 0:3887ebee1b37 167 else if(data2.pp >= 25 && data2.pp <= 32){ if(data.y <= data2.qq || data.y >= data2.qq + 15){
1013373474 0:3887ebee1b37 168 death(); }}
1013373474 0:3887ebee1b37 169 else if(data2.ee >= 25 && data2.ee <= 32){ if(data.y <= data2.oo || data.y >= data2.oo + 15){
1013373474 0:3887ebee1b37 170 death(); }}
1013373474 0:3887ebee1b37 171
1013373474 0:3887ebee1b37 172 }
1013373474 0:3887ebee1b37 173
1013373474 0:3887ebee1b37 174 void death(){
1013373474 0:3887ebee1b37 175 int fps = 2;
1013373474 0:3887ebee1b37 176 init();
1013373474 0:3887ebee1b37 177 while (pad.check_event(Gamepad::START_PRESSED) == false) {
1013373474 0:3887ebee1b37 178 lcd.clear();
1013373474 0:3887ebee1b37 179 lcd.drawRect(0,0,84,1,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽,
1013373474 0:3887ebee1b37 180 lcd.drawRect(0,1,1,48,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽,
1013373474 0:3887ebee1b37 181 lcd.drawRect(0,47,84,1,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽,
1013373474 0:3887ebee1b37 182 lcd.drawRect(83,1,1,48,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽,
1013373474 0:3887ebee1b37 183 lcd.printString(" Dead ",1,1);
1013373474 0:3887ebee1b37 184 lcd.printString(" Press start",1,3);
1013373474 0:3887ebee1b37 185 lcd.printString("to play again",1,4);
1013373474 0:3887ebee1b37 186 lcd.refresh();
1013373474 0:3887ebee1b37 187 wait(0.3);
1013373474 0:3887ebee1b37 188
1013373474 0:3887ebee1b37 189 }//while(1)
1013373474 0:3887ebee1b37 190
1013373474 0:3887ebee1b37 191 }//death