![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
bird
Diff: main.cpp
- Revision:
- 0:3887ebee1b37
- Child:
- 1:8672e52115e3
diff -r 000000000000 -r 3887ebee1b37 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri May 03 17:51:38 2019 +0000 @@ -0,0 +1,174 @@ + +#include "structure.h" +#include "structure_2.h" +void init(); +void welcome(); +void render(); +void render1(); +void check(); +void check1(); +void death(); + + + +//pin +N5110 lcd(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11); +Gamepad pad; +bird bird; +structure structure; +structure_2 structure_2; + + + +int main() +{ + int fps = 2; + init();//初始化 + lcd.drawRect(0,0,84,1,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽, + lcd.drawRect(0,1,1,48,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽, + lcd.drawRect(0,47,84,1,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽, + lcd.drawRect(83,1,1,48,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽, + welcome(); + wait(1.0f/fps); + lcd.clear(); + lcd.printString(" A NORMAL ",1,1); + lcd.printString(" B HARD ",1,3); + lcd.drawRect(0,0,84,1,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽, + lcd.drawRect(0,1,1,48,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽, + lcd.drawRect(0,47,84,1,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽, + lcd.drawRect(83,1,1,48,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽, + lcd.refresh(); + wait(1.0f/fps); + while (pad.check_event(Gamepad::A_PRESSED) == true) { + while (1) { + render(); + wait(1.0f/fps); + check(); + } +}//while A + + while (pad.check_event(Gamepad::B_PRESSED) == true) { + while (1) { + render1(); + wait(1.0f/fps); + check1(); +}//while B +} +} + + + + + + + + + +void init() +{ + lcd.init(); + pad.init(); + bird.init(); + structure.init(); + structure_2.init(); +} + + +void render()//A nomal +{ // clear screen, re-draw and refresh + lcd.clear(); + Data1 data1 = structure.get_data1(); + lcd.drawRect(0,0,84,1,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽, + lcd.drawRect(0,1,1,48,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽, + lcd.drawRect(0,47,84,1,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽, + lcd.drawRect(83,1,1,48,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽, + bird.draw(lcd); + structure.draw(lcd); + char buffer1[14]; + sprintf(buffer1,"%2d",data1.t); + lcd.printString(buffer1,1,1); + bird.check(pad); + lcd.refresh(); +} + + +void render1()//A nomal +{ // clear screen, re-draw and refresh + lcd.clear(); + Data2 data2 = structure_2.get_data2(); + lcd.drawRect(0,0,84,1,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽, + lcd.drawRect(0,1,1,48,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽, + lcd.drawRect(0,47,84,1,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽, + lcd.drawRect(83,1,1,48,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽, + bird.draw(lcd); + structure_2.draw(lcd); + char buffer1[14]; + sprintf(buffer1,"%2d",data2.tt); + lcd.printString(buffer1,1,1); + bird.check(pad); + lcd.refresh(); +} + + +void welcome() { + lcd.printString(" Fly Bird ",1,1); + lcd.printString(" Press Start ",1,4); + lcd.refresh(); + // wait flashing LEDs until start button is pressed LED灯闪到按Press + while (pad.check_event(Gamepad::START_PRESSED) == false) { + pad.leds_on(); + wait(0.1); + pad.leds_off(); + wait(0.1); + } +} + + +void check(){ + Data data = bird.get_data(); + Data1 data1 = structure.get_data1(); + if ( data.y >= 48 ){ + death(); + }else if(data1.m >= 25 && data1.m <= 32 ){ if(data.y <= data1.n || data.y >= data1.n + 15){ + death(); }} + else if(data1.p >= 25 && data1.p <= 32){ if(data.y <= data1.q || data.y >= data1.q + 15){ + death(); }} + else if(data1.e >= 25 && data1.e <= 32){ if(data.y <= data1.o || data.y >= data1.o + 15){ + death(); }} + + } + + + +void check1(){ + Data data = bird.get_data(); + Data2 data2 = structure_2.get_data2(); + if ( data.y >= 48 ){ + death(); + }else if(data2.mm >= 25 && data2.mm <= 32 ){ if(data.y <= data2.nn || data.y >= data2.nn + 15){ + death(); }} + else if(data2.pp >= 25 && data2.pp <= 32){ if(data.y <= data2.qq || data.y >= data2.qq + 15){ + death(); }} + else if(data2.ee >= 25 && data2.ee <= 32){ if(data.y <= data2.oo || data.y >= data2.oo + 15){ + death(); }} + + } + +void death(){ + int fps = 2; + init(); + while (pad.check_event(Gamepad::START_PRESSED) == false) { + lcd.clear(); + lcd.drawRect(0,0,84,1,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽, + lcd.drawRect(0,1,1,48,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽, + lcd.drawRect(0,47,84,1,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽, + lcd.drawRect(83,1,1,48,FILL_BLACK);//该公式前两个点是坐标,后两个点是涂抹区域的长宽,先长后宽, + lcd.printString(" Dead ",1,1); + lcd.printString(" Press start",1,3); + lcd.printString("to play again",1,4); + lcd.refresh(); + wait(0.3); + + }//while(1) + + }//death \ No newline at end of file