勇帜 周
/
2645_Final_project_1
bird
main.cpp@0:3887ebee1b37, 2019-05-03 (annotated)
- 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?
User | Revision | Line number | New 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 |