bird

Dependencies:   mbed

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