ssd
sdasdsad
Menu.cpp@0:c22f4a404631, 2020-04-27 (annotated)
- Committer:
- mrkang
- Date:
- Mon Apr 27 14:04:10 2020 +0000
- Revision:
- 0:c22f4a404631
Star
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mrkang | 0:c22f4a404631 | 1 | #include "Menu.h" |
mrkang | 0:c22f4a404631 | 2 | Menu::Menu(){ |
mrkang | 0:c22f4a404631 | 3 | mode = 0; |
mrkang | 0:c22f4a404631 | 4 | } |
mrkang | 0:c22f4a404631 | 5 | Menu::~Menu(){ |
mrkang | 0:c22f4a404631 | 6 | |
mrkang | 0:c22f4a404631 | 7 | } |
mrkang | 0:c22f4a404631 | 8 | void Menu::welcome(N5110 &lcd,BusOut &output,Sound &sound) |
mrkang | 0:c22f4a404631 | 9 | { |
mrkang | 0:c22f4a404631 | 10 | lcd.printString(" Star War ",0,1); |
mrkang | 0:c22f4a404631 | 11 | lcd.refresh(); |
mrkang | 0:c22f4a404631 | 12 | drawEverything(lcd); |
mrkang | 0:c22f4a404631 | 13 | lcd.refresh(); |
mrkang | 0:c22f4a404631 | 14 | output=0b000000; |
mrkang | 0:c22f4a404631 | 15 | sound.welcome(); |
mrkang | 0:c22f4a404631 | 16 | output=0b111111; |
mrkang | 0:c22f4a404631 | 17 | lcd.clear(); |
mrkang | 0:c22f4a404631 | 18 | } |
mrkang | 0:c22f4a404631 | 19 | void Menu::over(N5110 &lcd,BusOut &output) |
mrkang | 0:c22f4a404631 | 20 | { |
mrkang | 0:c22f4a404631 | 21 | lcd.printString("Game Over!",0,1); |
mrkang | 0:c22f4a404631 | 22 | lcd.printString("Press Start",0,4); |
mrkang | 0:c22f4a404631 | 23 | lcd.refresh(); |
mrkang | 0:c22f4a404631 | 24 | wait(1.0f); |
mrkang | 0:c22f4a404631 | 25 | output=0b000000; |
mrkang | 0:c22f4a404631 | 26 | wait(1.0f); |
mrkang | 0:c22f4a404631 | 27 | output=0b111111; |
mrkang | 0:c22f4a404631 | 28 | lcd.clear(); |
mrkang | 0:c22f4a404631 | 29 | } |
mrkang | 0:c22f4a404631 | 30 | void Menu::menu(N5110 &lcd,InterruptIn &buttonA,InterruptIn &buttonY,InterruptIn &buttonX,InterruptIn &buttonB,InterruptIn &start,int *score,int n) |
mrkang | 0:c22f4a404631 | 31 | { |
mrkang | 0:c22f4a404631 | 32 | lcd.refresh(); |
mrkang | 0:c22f4a404631 | 33 | while(1){ |
mrkang | 0:c22f4a404631 | 34 | lcd.printString("Start Start",0,0); |
mrkang | 0:c22f4a404631 | 35 | lcd.printString("A Ranking",0,2); |
mrkang | 0:c22f4a404631 | 36 | lcd.printString("X Select Mode",0,3); |
mrkang | 0:c22f4a404631 | 37 | lcd.printString("B Rules",0,4); |
mrkang | 0:c22f4a404631 | 38 | lcd.printString("Y Store",0,5); |
mrkang | 0:c22f4a404631 | 39 | lcd.refresh(); |
mrkang | 0:c22f4a404631 | 40 | |
mrkang | 0:c22f4a404631 | 41 | if(buttonA){ |
mrkang | 0:c22f4a404631 | 42 | wait(0.5f); |
mrkang | 0:c22f4a404631 | 43 | lcd.clear(); |
mrkang | 0:c22f4a404631 | 44 | ranking(lcd,score,n,buttonA); |
mrkang | 0:c22f4a404631 | 45 | }else if(start){ |
mrkang | 0:c22f4a404631 | 46 | lcd.clear(); |
mrkang | 0:c22f4a404631 | 47 | break; |
mrkang | 0:c22f4a404631 | 48 | }else if(buttonX){ |
mrkang | 0:c22f4a404631 | 49 | wait(0.5f); |
mrkang | 0:c22f4a404631 | 50 | lcd.clear(); |
mrkang | 0:c22f4a404631 | 51 | setMode(lcd,buttonA,buttonY,buttonX); |
mrkang | 0:c22f4a404631 | 52 | }else if(buttonB){ |
mrkang | 0:c22f4a404631 | 53 | wait(0.5f); |
mrkang | 0:c22f4a404631 | 54 | lcd.clear(); |
mrkang | 0:c22f4a404631 | 55 | rules(lcd,buttonB); |
mrkang | 0:c22f4a404631 | 56 | }else if(buttonY){ |
mrkang | 0:c22f4a404631 | 57 | wait(0.5f); |
mrkang | 0:c22f4a404631 | 58 | lcd.clear(); |
mrkang | 0:c22f4a404631 | 59 | store(lcd,buttonY); |
mrkang | 0:c22f4a404631 | 60 | } |
mrkang | 0:c22f4a404631 | 61 | } |
mrkang | 0:c22f4a404631 | 62 | } |
mrkang | 0:c22f4a404631 | 63 | void Menu::setMode(N5110 &lcd,InterruptIn &buttonA,InterruptIn &buttonY,InterruptIn &buttonX){ |
mrkang | 0:c22f4a404631 | 64 | lcd.refresh(); |
mrkang | 0:c22f4a404631 | 65 | while(1){ |
mrkang | 0:c22f4a404631 | 66 | lcd.printString("Y Easy",0,1); |
mrkang | 0:c22f4a404631 | 67 | lcd.printString("A Normal",0,2); |
mrkang | 0:c22f4a404631 | 68 | lcd.printString("X Hard",0,3); |
mrkang | 0:c22f4a404631 | 69 | lcd.refresh(); |
mrkang | 0:c22f4a404631 | 70 | |
mrkang | 0:c22f4a404631 | 71 | if(buttonA){ |
mrkang | 0:c22f4a404631 | 72 | mode = 1; |
mrkang | 0:c22f4a404631 | 73 | wait(0.5f); |
mrkang | 0:c22f4a404631 | 74 | lcd.clear(); |
mrkang | 0:c22f4a404631 | 75 | break; |
mrkang | 0:c22f4a404631 | 76 | } |
mrkang | 0:c22f4a404631 | 77 | } |
mrkang | 0:c22f4a404631 | 78 | } |
mrkang | 0:c22f4a404631 | 79 | int Menu::getMode(){ |
mrkang | 0:c22f4a404631 | 80 | return mode; |
mrkang | 0:c22f4a404631 | 81 | } |
mrkang | 0:c22f4a404631 | 82 | void Menu::ranking(N5110 &lcd,int *score,int n,InterruptIn &buttonA){ |
mrkang | 0:c22f4a404631 | 83 | while(1){ |
mrkang | 0:c22f4a404631 | 84 | for(int i = 0;i<n;i++){ |
mrkang | 0:c22f4a404631 | 85 | char buffer[10]; |
mrkang | 0:c22f4a404631 | 86 | sprintf(buffer,"%d.%d",i+1,score[i]); |
mrkang | 0:c22f4a404631 | 87 | lcd.printString(buffer,0,i+1); |
mrkang | 0:c22f4a404631 | 88 | } |
mrkang | 0:c22f4a404631 | 89 | lcd.printString("Press A to return",0,5); |
mrkang | 0:c22f4a404631 | 90 | lcd.refresh(); |
mrkang | 0:c22f4a404631 | 91 | if(buttonA) { |
mrkang | 0:c22f4a404631 | 92 | lcd.clear(); |
mrkang | 0:c22f4a404631 | 93 | wait(0.5f); |
mrkang | 0:c22f4a404631 | 94 | return; |
mrkang | 0:c22f4a404631 | 95 | } |
mrkang | 0:c22f4a404631 | 96 | } |
mrkang | 0:c22f4a404631 | 97 | } |
mrkang | 0:c22f4a404631 | 98 | void Menu::displayCurScore(N5110 &lcd,int score) { |
mrkang | 0:c22f4a404631 | 99 | char buffer[4]; |
mrkang | 0:c22f4a404631 | 100 | sprintf(buffer,"%d",score); |
mrkang | 0:c22f4a404631 | 101 | lcd.printString(buffer,0,0); |
mrkang | 0:c22f4a404631 | 102 | } |
mrkang | 0:c22f4a404631 | 103 | void Menu::drawEverything(N5110 &lcd){ |
mrkang | 0:c22f4a404631 | 104 | int enemy[60] = { |
mrkang | 0:c22f4a404631 | 105 | 0,0,1,1,1,1,1,1,1,1,0,0, |
mrkang | 0:c22f4a404631 | 106 | 0,1,1,1,1,1,1,1,1,1,1,0, |
mrkang | 0:c22f4a404631 | 107 | 1,1,1,1,0,1,1,0,1,1,1,1, |
mrkang | 0:c22f4a404631 | 108 | 0,1,1,1,1,1,1,1,1,1,1,0, |
mrkang | 0:c22f4a404631 | 109 | 0,0,1,1,1,1,1,1,1,1,0,0 }; |
mrkang | 0:c22f4a404631 | 110 | Bitmap sprite(enemy,5,12); |
mrkang | 0:c22f4a404631 | 111 | sprite.render(lcd,64,30); |
mrkang | 0:c22f4a404631 | 112 | |
mrkang | 0:c22f4a404631 | 113 | int bullet[15] = { |
mrkang | 0:c22f4a404631 | 114 | 0,0,0,1,0, |
mrkang | 0:c22f4a404631 | 115 | 1,1,1,1,1, |
mrkang | 0:c22f4a404631 | 116 | 0,0,0,1,0 }; |
mrkang | 0:c22f4a404631 | 117 | Bitmap spritel(bullet,3,5); |
mrkang | 0:c22f4a404631 | 118 | spritel.render(lcd,40,32); |
mrkang | 0:c22f4a404631 | 119 | |
mrkang | 0:c22f4a404631 | 120 | int _Plane[] = { |
mrkang | 0:c22f4a404631 | 121 | 0,0,0,1,0,0,0,0,0,0, |
mrkang | 0:c22f4a404631 | 122 | 0,0,0,1,1,1,0,0,0,0, |
mrkang | 0:c22f4a404631 | 123 | 0,0,0,1,1,1,0,0,0,0, |
mrkang | 0:c22f4a404631 | 124 | 1,1,1,1,1,1,1,1,1,0, |
mrkang | 0:c22f4a404631 | 125 | 0,0,1,1,1,1,1,0,1,1, |
mrkang | 0:c22f4a404631 | 126 | 1,1,1,1,1,1,1,1,1,0, |
mrkang | 0:c22f4a404631 | 127 | 0,0,0,0,0,0,0,0,0,0, |
mrkang | 0:c22f4a404631 | 128 | 0,0,0,0,0,0,0,0,0,0, |
mrkang | 0:c22f4a404631 | 129 | 0,0,0,0,0,0,0,0,0,0, |
mrkang | 0:c22f4a404631 | 130 | 0,0,0,0,0,0,0,0,0,0 }; |
mrkang | 0:c22f4a404631 | 131 | |
mrkang | 0:c22f4a404631 | 132 | Bitmap sprite2(_Plane,10,10); |
mrkang | 0:c22f4a404631 | 133 | sprite2.render(lcd,9,28); |
mrkang | 0:c22f4a404631 | 134 | } |
mrkang | 0:c22f4a404631 | 135 | void Menu::rules(N5110 &lcd,InterruptIn &buttonB) { |
mrkang | 0:c22f4a404631 | 136 | while(1){ |
mrkang | 0:c22f4a404631 | 137 | lcd.clear(); |
mrkang | 0:c22f4a404631 | 138 | lcd.printString("X fire bullet",0,0); |
mrkang | 0:c22f4a404631 | 139 | lcd.printString("Joystick move",0,1); |
mrkang | 0:c22f4a404631 | 140 | lcd.printString("Mission",0,2); |
mrkang | 0:c22f4a404631 | 141 | lcd.printString("Destroy enemy",0,3); |
mrkang | 0:c22f4a404631 | 142 | lcd.printString("Press B return",0,5); |
mrkang | 0:c22f4a404631 | 143 | lcd.refresh(); |
mrkang | 0:c22f4a404631 | 144 | if(buttonB){ |
mrkang | 0:c22f4a404631 | 145 | lcd.clear(); |
mrkang | 0:c22f4a404631 | 146 | wait(0.5f); |
mrkang | 0:c22f4a404631 | 147 | return; |
mrkang | 0:c22f4a404631 | 148 | } |
mrkang | 0:c22f4a404631 | 149 | } |
mrkang | 0:c22f4a404631 | 150 | } |
mrkang | 0:c22f4a404631 | 151 | int Menu::again(N5110 &lcd,int score,InterruptIn &buttonX, InterruptIn &buttonY){ |
mrkang | 0:c22f4a404631 | 152 | |
mrkang | 0:c22f4a404631 | 153 | lcd.clear(); |
mrkang | 0:c22f4a404631 | 154 | while(1){ |
mrkang | 0:c22f4a404631 | 155 | if(score>10){ |
mrkang | 0:c22f4a404631 | 156 | lcd.printString("Play Again?",0,0); |
mrkang | 0:c22f4a404631 | 157 | lcd.printString("Price :10",0,2); |
mrkang | 0:c22f4a404631 | 158 | lcd.printString("X Yes",0,3); |
mrkang | 0:c22f4a404631 | 159 | lcd.printString("Y Not",0,4); |
mrkang | 0:c22f4a404631 | 160 | lcd.refresh(); |
mrkang | 0:c22f4a404631 | 161 | if(buttonX){ |
mrkang | 0:c22f4a404631 | 162 | wait(0.5f); |
mrkang | 0:c22f4a404631 | 163 | lcd.clear(); |
mrkang | 0:c22f4a404631 | 164 | return -10; |
mrkang | 0:c22f4a404631 | 165 | }else if(buttonY){ |
mrkang | 0:c22f4a404631 | 166 | wait(0.5f); |
mrkang | 0:c22f4a404631 | 167 | lcd.clear(); |
mrkang | 0:c22f4a404631 | 168 | return 0; |
mrkang | 0:c22f4a404631 | 169 | } |
mrkang | 0:c22f4a404631 | 170 | }else{ |
mrkang | 0:c22f4a404631 | 171 | lcd.printString("Fail!",0,1); |
mrkang | 0:c22f4a404631 | 172 | lcd.printString("Press Y return",0,2); |
mrkang | 0:c22f4a404631 | 173 | lcd.refresh(); |
mrkang | 0:c22f4a404631 | 174 | if(buttonY){ |
mrkang | 0:c22f4a404631 | 175 | wait(0.5f); |
mrkang | 0:c22f4a404631 | 176 | lcd.clear(); |
mrkang | 0:c22f4a404631 | 177 | return 0; |
mrkang | 0:c22f4a404631 | 178 | } |
mrkang | 0:c22f4a404631 | 179 | } |
mrkang | 0:c22f4a404631 | 180 | } |
mrkang | 0:c22f4a404631 | 181 | } |
mrkang | 0:c22f4a404631 | 182 | |
mrkang | 0:c22f4a404631 | 183 | void Menu::store(N5110 &lcd,InterruptIn &buttonY) { |
mrkang | 0:c22f4a404631 | 184 | while(1) { |
mrkang | 0:c22f4a404631 | 185 | lcd.clear(); |
mrkang | 0:c22f4a404631 | 186 | int _heart[] = { |
mrkang | 0:c22f4a404631 | 187 | 0,1,0,0,0,1,0, |
mrkang | 0:c22f4a404631 | 188 | 1,1,1,0,1,1,1, |
mrkang | 0:c22f4a404631 | 189 | 1,1,1,1,1,1,1, |
mrkang | 0:c22f4a404631 | 190 | 1,1,1,1,1,1,1, |
mrkang | 0:c22f4a404631 | 191 | 0,1,1,1,1,1,0, |
mrkang | 0:c22f4a404631 | 192 | 0,0,1,1,1,0,0, |
mrkang | 0:c22f4a404631 | 193 | 0,0,0,1,0,0,0 }; |
mrkang | 0:c22f4a404631 | 194 | Bitmap sprite3(_heart,7,7); |
mrkang | 0:c22f4a404631 | 195 | sprite3.render(lcd,38,5); |
mrkang | 0:c22f4a404631 | 196 | lcd.refresh(); |
mrkang | 0:c22f4a404631 | 197 | lcd.printString("In development",0,2); |
mrkang | 0:c22f4a404631 | 198 | lcd.printString("Press Y return",0,5); |
mrkang | 0:c22f4a404631 | 199 | lcd.refresh(); |
mrkang | 0:c22f4a404631 | 200 | if(buttonY) { |
mrkang | 0:c22f4a404631 | 201 | lcd.clear(); |
mrkang | 0:c22f4a404631 | 202 | wait(0.5f); |
mrkang | 0:c22f4a404631 | 203 | return; |
mrkang | 0:c22f4a404631 | 204 | } |
mrkang | 0:c22f4a404631 | 205 | } |
mrkang | 0:c22f4a404631 | 206 | } |