Advanced Simon Says

Dependencies:   PinDetect mbed

Committer:
joon874
Date:
Mon Nov 02 00:39:04 2015 +0000
Revision:
0:55ca2ac95962
Advanced Simon Says

Who changed what in which revision?

UserRevisionLine numberNew contents of line
joon874 0:55ca2ac95962 1 #include "mbed.h"
joon874 0:55ca2ac95962 2 #include "PinDetect.h"
joon874 0:55ca2ac95962 3 #include "SSD1306.h"
joon874 0:55ca2ac95962 4
joon874 0:55ca2ac95962 5
joon874 0:55ca2ac95962 6 DigitalOut Yellow(D13);
joon874 0:55ca2ac95962 7 DigitalOut LED[5] = {D8,D9,D10,D11,D12};
joon874 0:55ca2ac95962 8 PinDetect BUTTON[5] = {D3,D4,D5,D6,D7};
joon874 0:55ca2ac95962 9
joon874 0:55ca2ac95962 10 #define level0 0.4
joon874 0:55ca2ac95962 11 #define level1 0.15
joon874 0:55ca2ac95962 12
joon874 0:55ca2ac95962 13 char temp_line[5] = {0};
joon874 0:55ca2ac95962 14 char line[5] = {0};
joon874 0:55ca2ac95962 15 char answer[5] = {0};
joon874 0:55ca2ac95962 16 int user_score = 0;
joon874 0:55ca2ac95962 17 int level = 0;
joon874 0:55ca2ac95962 18 int life = 0;
joon874 0:55ca2ac95962 19 int score_up = 0;
joon874 0:55ca2ac95962 20
joon874 0:55ca2ac95962 21 uint8_t offset1 = 50;
joon874 0:55ca2ac95962 22 uint8_t offset2 = 75;
joon874 0:55ca2ac95962 23 char buf_0[8] = "0";
joon874 0:55ca2ac95962 24 char buf_1[8] = "1";
joon874 0:55ca2ac95962 25 char buf_2[8] = "2";
joon874 0:55ca2ac95962 26 char buf_3[8] = "3";
joon874 0:55ca2ac95962 27
joon874 0:55ca2ac95962 28 void LED_BLINK();
joon874 0:55ca2ac95962 29
joon874 0:55ca2ac95962 30 void START();
joon874 0:55ca2ac95962 31 void INIT();
joon874 0:55ca2ac95962 32 void SETLINE();
joon874 0:55ca2ac95962 33 void SHOWLINE();
joon874 0:55ca2ac95962 34
joon874 0:55ca2ac95962 35 void KEY0PRESSED();
joon874 0:55ca2ac95962 36 void KEY1PRESSED();
joon874 0:55ca2ac95962 37 void KEY2PRESSED();
joon874 0:55ca2ac95962 38 void KEY3PRESSED();
joon874 0:55ca2ac95962 39 void KEY4PRESSED();
joon874 0:55ca2ac95962 40 void PRESSBUTTON();
joon874 0:55ca2ac95962 41
joon874 0:55ca2ac95962 42 int COMPARE();
joon874 0:55ca2ac95962 43
joon874 0:55ca2ac95962 44 void SCORE();
joon874 0:55ca2ac95962 45
joon874 0:55ca2ac95962 46 void CLOSE();
joon874 0:55ca2ac95962 47
joon874 0:55ca2ac95962 48
joon874 0:55ca2ac95962 49 int main()
joon874 0:55ca2ac95962 50 {
joon874 0:55ca2ac95962 51
joon874 0:55ca2ac95962 52 START();
joon874 0:55ca2ac95962 53
joon874 0:55ca2ac95962 54 init();
joon874 0:55ca2ac95962 55 cls();
joon874 0:55ca2ac95962 56 wait(1.0);
joon874 0:55ca2ac95962 57 OLED_DrawBMP(0,0,128,8,(unsigned char *)ready);
joon874 0:55ca2ac95962 58 wait(2.0);
joon874 0:55ca2ac95962 59 OLED_DrawBMP(0,0,128,8,(unsigned char *)go);
joon874 0:55ca2ac95962 60 wait(1.5);
joon874 0:55ca2ac95962 61 cls();
joon874 0:55ca2ac95962 62 OLED_DrawBMP(0,0,128,8,(unsigned char *)level0_full);
joon874 0:55ca2ac95962 63 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 64
joon874 0:55ca2ac95962 65 wait(0.5);
joon874 0:55ca2ac95962 66
joon874 0:55ca2ac95962 67 printf("start\r\n");
joon874 0:55ca2ac95962 68
joon874 0:55ca2ac95962 69 while(1){
joon874 0:55ca2ac95962 70 if(user_score == 30 && level == 1) break;
joon874 0:55ca2ac95962 71
joon874 0:55ca2ac95962 72 INIT();
joon874 0:55ca2ac95962 73 SETLINE();
joon874 0:55ca2ac95962 74 PRESSBUTTON();
joon874 0:55ca2ac95962 75
joon874 0:55ca2ac95962 76 wait(1.0); // wait for answer time
joon874 0:55ca2ac95962 77
joon874 0:55ca2ac95962 78 int ret = COMPARE();
joon874 0:55ca2ac95962 79
joon874 0:55ca2ac95962 80 if(ret < 0){
joon874 0:55ca2ac95962 81 printf("bubu\r\n");
joon874 0:55ca2ac95962 82 life--;
joon874 0:55ca2ac95962 83 if(life == 2){
joon874 0:55ca2ac95962 84 score_up = 0;
joon874 0:55ca2ac95962 85 SCORE();
joon874 0:55ca2ac95962 86 }else if(life == 1){
joon874 0:55ca2ac95962 87 score_up = 0;
joon874 0:55ca2ac95962 88 SCORE();
joon874 0:55ca2ac95962 89 }else if(life == 0){
joon874 0:55ca2ac95962 90 if(level == 0){
joon874 0:55ca2ac95962 91 OLED_DrawBMP(0,0,128,8,(unsigned char *)level0_empty);
joon874 0:55ca2ac95962 92 wait(0.1);
joon874 0:55ca2ac95962 93 }else if(level == 1){
joon874 0:55ca2ac95962 94 OLED_DrawBMP(0,0,128,8,(unsigned char *)level1_empty);
joon874 0:55ca2ac95962 95 wait(0.1);
joon874 0:55ca2ac95962 96 }else{
joon874 0:55ca2ac95962 97 printf("life error\r\n");
joon874 0:55ca2ac95962 98 }
joon874 0:55ca2ac95962 99
joon874 0:55ca2ac95962 100 break;
joon874 0:55ca2ac95962 101
joon874 0:55ca2ac95962 102 }else{
joon874 0:55ca2ac95962 103 printf("score display error\r\n");
joon874 0:55ca2ac95962 104 score_up = 0;
joon874 0:55ca2ac95962 105 SCORE();
joon874 0:55ca2ac95962 106 }
joon874 0:55ca2ac95962 107 }else{
joon874 0:55ca2ac95962 108 printf("correct\r\n");
joon874 0:55ca2ac95962 109 score_up = 1;
joon874 0:55ca2ac95962 110 SCORE();
joon874 0:55ca2ac95962 111 }
joon874 0:55ca2ac95962 112
joon874 0:55ca2ac95962 113 wait(2.0);
joon874 0:55ca2ac95962 114 }
joon874 0:55ca2ac95962 115
joon874 0:55ca2ac95962 116 CLOSE();
joon874 0:55ca2ac95962 117
joon874 0:55ca2ac95962 118 printf("end\r\n");
joon874 0:55ca2ac95962 119
joon874 0:55ca2ac95962 120
joon874 0:55ca2ac95962 121 }
joon874 0:55ca2ac95962 122
joon874 0:55ca2ac95962 123
joon874 0:55ca2ac95962 124
joon874 0:55ca2ac95962 125 void LED_BLINK( void ) {
joon874 0:55ca2ac95962 126 for(int i = 0; i < 5; i++) LED[i] = 1; Yellow = 0; wait(0.5);
joon874 0:55ca2ac95962 127 for(int i = 0; i < 5; i++) LED[i] = 0; Yellow = 1; wait(0.5);
joon874 0:55ca2ac95962 128 for(int i = 0; i < 5; i++) LED[i] = 1; Yellow = 0; wait(0.5);
joon874 0:55ca2ac95962 129 for(int i = 0; i < 5; i++) LED[i] = 0; Yellow = 1; wait(0.5);
joon874 0:55ca2ac95962 130 for(int i = 0; i < 5; i++) LED[i] = 1; Yellow = 0; wait(0.5);
joon874 0:55ca2ac95962 131 for(int i = 0; i < 5; i++) LED[i] = 0; Yellow = 1;
joon874 0:55ca2ac95962 132 }
joon874 0:55ca2ac95962 133
joon874 0:55ca2ac95962 134 // callbacks follow.
joon874 0:55ca2ac95962 135 void START( void ){
joon874 0:55ca2ac95962 136 user_score = 0;
joon874 0:55ca2ac95962 137 life = 3;
joon874 0:55ca2ac95962 138 score_up = 0;
joon874 0:55ca2ac95962 139 level = 0;
joon874 0:55ca2ac95962 140
joon874 0:55ca2ac95962 141 LED_BLINK();
joon874 0:55ca2ac95962 142
joon874 0:55ca2ac95962 143 printf("start\r\n"); // oled diaplay part
joon874 0:55ca2ac95962 144 }
joon874 0:55ca2ac95962 145
joon874 0:55ca2ac95962 146 // initialize
joon874 0:55ca2ac95962 147 void INIT( void ) {
joon874 0:55ca2ac95962 148 for(int i = 0; i < 5; i++){
joon874 0:55ca2ac95962 149 line[i] = 0;
joon874 0:55ca2ac95962 150 answer[i] = 0;
joon874 0:55ca2ac95962 151 }
joon874 0:55ca2ac95962 152 }
joon874 0:55ca2ac95962 153
joon874 0:55ca2ac95962 154 // set led random value and display
joon874 0:55ca2ac95962 155 void SETLINE( void ) {
joon874 0:55ca2ac95962 156 for(int j = 0; j < 2; j++){
joon874 0:55ca2ac95962 157
joon874 0:55ca2ac95962 158 for(int i = 0; i < 5; i++){
joon874 0:55ca2ac95962 159 temp_line[i] = rand() % 2;
joon874 0:55ca2ac95962 160 line[i] = line[i] + temp_line[i];
joon874 0:55ca2ac95962 161 printf("line[%d] = %d\r\n",i,line[i]);
joon874 0:55ca2ac95962 162 }
joon874 0:55ca2ac95962 163
joon874 0:55ca2ac95962 164 int temp = 0;
joon874 0:55ca2ac95962 165 for(int i = 0; i < 5; i++){
joon874 0:55ca2ac95962 166 temp = temp + temp_line[i];
joon874 0:55ca2ac95962 167 }
joon874 0:55ca2ac95962 168
joon874 0:55ca2ac95962 169 if(temp == 0){
joon874 0:55ca2ac95962 170 for(int i = 0; i < 5; i++){
joon874 0:55ca2ac95962 171 temp_line[i] = 1;
joon874 0:55ca2ac95962 172 }
joon874 0:55ca2ac95962 173 }else{
joon874 0:55ca2ac95962 174 for(int i = 0; i < 5; i++){
joon874 0:55ca2ac95962 175 temp_line[i] = temp_line[i];
joon874 0:55ca2ac95962 176 }
joon874 0:55ca2ac95962 177 }
joon874 0:55ca2ac95962 178
joon874 0:55ca2ac95962 179 for(int i = 0; i < 5; i++) {
joon874 0:55ca2ac95962 180 if(temp_line[i] > 0){
joon874 0:55ca2ac95962 181 LED[i] = 1;
joon874 0:55ca2ac95962 182 temp_line[i]--;
joon874 0:55ca2ac95962 183 }else {
joon874 0:55ca2ac95962 184 LED[i] = 0;
joon874 0:55ca2ac95962 185 }
joon874 0:55ca2ac95962 186
joon874 0:55ca2ac95962 187 if(level == 0) wait(level0);
joon874 0:55ca2ac95962 188 else if(level == 1) wait(level1);
joon874 0:55ca2ac95962 189 else wait(level0);
joon874 0:55ca2ac95962 190
joon874 0:55ca2ac95962 191 LED[i] = 0;
joon874 0:55ca2ac95962 192 wait(0.02);
joon874 0:55ca2ac95962 193 }
joon874 0:55ca2ac95962 194 }
joon874 0:55ca2ac95962 195 }
joon874 0:55ca2ac95962 196
joon874 0:55ca2ac95962 197
joon874 0:55ca2ac95962 198 // button
joon874 0:55ca2ac95962 199 void KEY0PRESSED( void ) {
joon874 0:55ca2ac95962 200 answer[0]++;
joon874 0:55ca2ac95962 201 printf("answer[0] = %d\r\n",answer[0]);
joon874 0:55ca2ac95962 202 }
joon874 0:55ca2ac95962 203
joon874 0:55ca2ac95962 204 void KEY1PRESSED( void ) {
joon874 0:55ca2ac95962 205 answer[1]++;
joon874 0:55ca2ac95962 206 printf("answer[1] = %d\r\n",answer[1]);
joon874 0:55ca2ac95962 207 }
joon874 0:55ca2ac95962 208
joon874 0:55ca2ac95962 209 void KEY2PRESSED( void ) {
joon874 0:55ca2ac95962 210 answer[2]++;
joon874 0:55ca2ac95962 211 printf("answer[2] = %d\r\n",answer[2]);
joon874 0:55ca2ac95962 212 }
joon874 0:55ca2ac95962 213
joon874 0:55ca2ac95962 214 void KEY3PRESSED( void ) {
joon874 0:55ca2ac95962 215 answer[3]++;
joon874 0:55ca2ac95962 216 printf("answer[3] = %d\r\n",answer[3]);
joon874 0:55ca2ac95962 217 }
joon874 0:55ca2ac95962 218
joon874 0:55ca2ac95962 219 void KEY4PRESSED( void ) {
joon874 0:55ca2ac95962 220 answer[4]++;
joon874 0:55ca2ac95962 221 printf("answer[4] = %d\r\n",answer[4]);
joon874 0:55ca2ac95962 222 }
joon874 0:55ca2ac95962 223
joon874 0:55ca2ac95962 224
joon874 0:55ca2ac95962 225 // interrupt
joon874 0:55ca2ac95962 226 void PRESSBUTTON( void ) {
joon874 0:55ca2ac95962 227 BUTTON[0].attach_asserted(&KEY0PRESSED);
joon874 0:55ca2ac95962 228 BUTTON[1].attach_asserted(&KEY1PRESSED);
joon874 0:55ca2ac95962 229 BUTTON[2].attach_asserted(&KEY2PRESSED);
joon874 0:55ca2ac95962 230 BUTTON[3].attach_asserted(&KEY3PRESSED);
joon874 0:55ca2ac95962 231 BUTTON[4].attach_asserted(&KEY4PRESSED);
joon874 0:55ca2ac95962 232
joon874 0:55ca2ac95962 233 for(int i = 0; i < 5; i++) {
joon874 0:55ca2ac95962 234 BUTTON[i].mode(PullDown);
joon874 0:55ca2ac95962 235 BUTTON[i].setSampleFrequency(); // Defaults to 20ms.
joon874 0:55ca2ac95962 236 }
joon874 0:55ca2ac95962 237 wait(5.0);
joon874 0:55ca2ac95962 238 }
joon874 0:55ca2ac95962 239
joon874 0:55ca2ac95962 240
joon874 0:55ca2ac95962 241 // compare user input and random value
joon874 0:55ca2ac95962 242 int COMPARE() {
joon874 0:55ca2ac95962 243 for(int i = 0; i < 5; i++) {
joon874 0:55ca2ac95962 244 printf("answer[%d]=%d\r\n",i,answer[i]);
joon874 0:55ca2ac95962 245 if(answer[i] != line[i]){
joon874 0:55ca2ac95962 246 answer[i] = 0;
joon874 0:55ca2ac95962 247 return -1;
joon874 0:55ca2ac95962 248 }else{
joon874 0:55ca2ac95962 249 answer[i] = 0;
joon874 0:55ca2ac95962 250 }
joon874 0:55ca2ac95962 251 }
joon874 0:55ca2ac95962 252 return 0;
joon874 0:55ca2ac95962 253 }
joon874 0:55ca2ac95962 254
joon874 0:55ca2ac95962 255 // score
joon874 0:55ca2ac95962 256 void SCORE() {
joon874 0:55ca2ac95962 257
joon874 0:55ca2ac95962 258 wait(0.5);
joon874 0:55ca2ac95962 259 if(level == 0){
joon874 0:55ca2ac95962 260 if(user_score == 0){
joon874 0:55ca2ac95962 261 if(score_up == 1){
joon874 0:55ca2ac95962 262 Yellow = 0; wait(0.2);
joon874 0:55ca2ac95962 263 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 264 Yellow = 0; wait(0.2);
joon874 0:55ca2ac95962 265 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 266 Yellow = 0; wait(0.2);
joon874 0:55ca2ac95962 267 Yellow = 1;
joon874 0:55ca2ac95962 268 user_score = user_score + 10;
joon874 0:55ca2ac95962 269 printf("score : %d\r\n",user_score);
joon874 0:55ca2ac95962 270 if(life == 3){
joon874 0:55ca2ac95962 271 OLED_DrawBMP(0,0,128,8,(unsigned char *)level0_full);
joon874 0:55ca2ac95962 272 LED_P23x32Str(offset1,3,buf_1);
joon874 0:55ca2ac95962 273 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 274 }else if(life == 2){
joon874 0:55ca2ac95962 275 OLED_DrawBMP(0,0,128,8,(unsigned char *)level0_two);
joon874 0:55ca2ac95962 276 LED_P23x32Str(offset1,3,buf_1);
joon874 0:55ca2ac95962 277 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 278 }else if(life == 1){
joon874 0:55ca2ac95962 279 OLED_DrawBMP(0,0,128,8,(unsigned char *)level0_one);
joon874 0:55ca2ac95962 280 LED_P23x32Str(offset1,3,buf_1);
joon874 0:55ca2ac95962 281 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 282 }else{
joon874 0:55ca2ac95962 283 printf("level menu error\r\n");
joon874 0:55ca2ac95962 284 }
joon874 0:55ca2ac95962 285
joon874 0:55ca2ac95962 286 }else{
joon874 0:55ca2ac95962 287 user_score = user_score;
joon874 0:55ca2ac95962 288 printf("score : %d\r\n",user_score);
joon874 0:55ca2ac95962 289 if(life == 3){
joon874 0:55ca2ac95962 290 Yellow = 0; wait(0.7);
joon874 0:55ca2ac95962 291 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 292 OLED_DrawBMP(0,0,128,8,(unsigned char *)level0_full);
joon874 0:55ca2ac95962 293 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 294 }else if(life == 2){
joon874 0:55ca2ac95962 295 Yellow = 0; wait(0.7);
joon874 0:55ca2ac95962 296 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 297 OLED_DrawBMP(0,0,128,8,(unsigned char *)level0_two);
joon874 0:55ca2ac95962 298 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 299 }else if(life == 1){
joon874 0:55ca2ac95962 300 Yellow = 0; wait(0.7);
joon874 0:55ca2ac95962 301 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 302 OLED_DrawBMP(0,0,128,8,(unsigned char *)level0_one);
joon874 0:55ca2ac95962 303 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 304 }else{
joon874 0:55ca2ac95962 305 printf("level menu error\r\n");
joon874 0:55ca2ac95962 306 }
joon874 0:55ca2ac95962 307 }
joon874 0:55ca2ac95962 308 wait(0.5);
joon874 0:55ca2ac95962 309 }
joon874 0:55ca2ac95962 310 else if(user_score == 10){
joon874 0:55ca2ac95962 311 if(score_up == 1){
joon874 0:55ca2ac95962 312 Yellow = 0; wait(0.2);
joon874 0:55ca2ac95962 313 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 314 Yellow = 0; wait(0.2);
joon874 0:55ca2ac95962 315 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 316 Yellow = 0; wait(0.2);
joon874 0:55ca2ac95962 317 Yellow = 1;
joon874 0:55ca2ac95962 318 user_score = user_score + 10;
joon874 0:55ca2ac95962 319 printf("score : %d\r\n",user_score);
joon874 0:55ca2ac95962 320 if(life == 3){
joon874 0:55ca2ac95962 321 OLED_DrawBMP(0,0,128,8,(unsigned char *)level0_full);
joon874 0:55ca2ac95962 322 LED_P23x32Str(offset1,3,buf_2);
joon874 0:55ca2ac95962 323 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 324 }else if(life == 2){
joon874 0:55ca2ac95962 325 OLED_DrawBMP(0,0,128,8,(unsigned char *)level0_two);
joon874 0:55ca2ac95962 326 LED_P23x32Str(offset1,3,buf_2);
joon874 0:55ca2ac95962 327 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 328 }else if(life == 1){
joon874 0:55ca2ac95962 329 OLED_DrawBMP(0,0,128,8,(unsigned char *)level0_one);
joon874 0:55ca2ac95962 330 LED_P23x32Str(offset1,3,buf_2);
joon874 0:55ca2ac95962 331 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 332 }else{
joon874 0:55ca2ac95962 333 printf("level menu error\r\n");
joon874 0:55ca2ac95962 334 }
joon874 0:55ca2ac95962 335 }else{
joon874 0:55ca2ac95962 336 user_score = user_score;
joon874 0:55ca2ac95962 337 printf("score : %d\r\n",user_score);
joon874 0:55ca2ac95962 338 if(life == 3){
joon874 0:55ca2ac95962 339 Yellow = 0; wait(0.7);
joon874 0:55ca2ac95962 340 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 341 OLED_DrawBMP(0,0,128,8,(unsigned char *)level0_full);
joon874 0:55ca2ac95962 342 LED_P23x32Str(offset1,3,buf_1);
joon874 0:55ca2ac95962 343 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 344 }else if(life == 2){
joon874 0:55ca2ac95962 345 Yellow = 0; wait(0.7);
joon874 0:55ca2ac95962 346 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 347 OLED_DrawBMP(0,0,128,8,(unsigned char *)level0_two);
joon874 0:55ca2ac95962 348 LED_P23x32Str(offset1,3,buf_1);
joon874 0:55ca2ac95962 349 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 350 }else if(life == 1){
joon874 0:55ca2ac95962 351 Yellow = 0; wait(0.7);
joon874 0:55ca2ac95962 352 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 353 OLED_DrawBMP(0,0,128,8,(unsigned char *)level0_one);
joon874 0:55ca2ac95962 354 LED_P23x32Str(offset1,3,buf_1);
joon874 0:55ca2ac95962 355 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 356 }else{
joon874 0:55ca2ac95962 357 printf("level menu error\r\n");
joon874 0:55ca2ac95962 358 }
joon874 0:55ca2ac95962 359 }
joon874 0:55ca2ac95962 360 wait(0.5);
joon874 0:55ca2ac95962 361 }
joon874 0:55ca2ac95962 362 else if(user_score == 20){
joon874 0:55ca2ac95962 363 if(score_up == 1){
joon874 0:55ca2ac95962 364 Yellow = 0; wait(0.2);
joon874 0:55ca2ac95962 365 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 366 Yellow = 0; wait(0.2);
joon874 0:55ca2ac95962 367 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 368 Yellow = 0; wait(0.2);
joon874 0:55ca2ac95962 369 Yellow = 1;
joon874 0:55ca2ac95962 370 user_score = user_score + 10;
joon874 0:55ca2ac95962 371 printf("score : %d\r\n",user_score);
joon874 0:55ca2ac95962 372 if(life == 3){
joon874 0:55ca2ac95962 373 OLED_DrawBMP(0,0,128,8,(unsigned char *)level0_full);
joon874 0:55ca2ac95962 374 LED_P23x32Str(offset1,3,buf_3);
joon874 0:55ca2ac95962 375 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 376 }else if(life == 2){
joon874 0:55ca2ac95962 377 OLED_DrawBMP(0,0,128,8,(unsigned char *)level0_two);
joon874 0:55ca2ac95962 378 LED_P23x32Str(offset1,3,buf_3);
joon874 0:55ca2ac95962 379 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 380 }else if(life == 1){
joon874 0:55ca2ac95962 381 OLED_DrawBMP(0,0,128,8,(unsigned char *)level0_one);
joon874 0:55ca2ac95962 382 LED_P23x32Str(offset1,3,buf_3);
joon874 0:55ca2ac95962 383 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 384 }else{
joon874 0:55ca2ac95962 385 printf("level menu error\r\n");
joon874 0:55ca2ac95962 386 }
joon874 0:55ca2ac95962 387 wait(0.5);
joon874 0:55ca2ac95962 388 cls();
joon874 0:55ca2ac95962 389 OLED_DrawBMP(0,0,128,8,(unsigned char *)levelup);
joon874 0:55ca2ac95962 390 user_score = 0;
joon874 0:55ca2ac95962 391 level = 1;
joon874 0:55ca2ac95962 392 wait(0.5);
joon874 0:55ca2ac95962 393 LED_BLINK();
joon874 0:55ca2ac95962 394 cls();
joon874 0:55ca2ac95962 395 OLED_DrawBMP(0,0,128,8,(unsigned char *)level1_full);
joon874 0:55ca2ac95962 396 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 397 }else{
joon874 0:55ca2ac95962 398 user_score = user_score;
joon874 0:55ca2ac95962 399 printf("score : %d\r\n",user_score);
joon874 0:55ca2ac95962 400 if(life == 3){
joon874 0:55ca2ac95962 401 Yellow = 0; wait(0.7);
joon874 0:55ca2ac95962 402 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 403 OLED_DrawBMP(0,0,128,8,(unsigned char *)level0_full);
joon874 0:55ca2ac95962 404 LED_P23x32Str(offset1,3,buf_2);
joon874 0:55ca2ac95962 405 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 406 }else if(life == 2){
joon874 0:55ca2ac95962 407 Yellow = 0; wait(0.7);
joon874 0:55ca2ac95962 408 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 409 OLED_DrawBMP(0,0,128,8,(unsigned char *)level0_two);
joon874 0:55ca2ac95962 410 LED_P23x32Str(offset1,3,buf_2);
joon874 0:55ca2ac95962 411 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 412 }else if(life == 1){
joon874 0:55ca2ac95962 413 Yellow = 0; wait(0.7);
joon874 0:55ca2ac95962 414 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 415 OLED_DrawBMP(0,0,128,8,(unsigned char *)level0_one);
joon874 0:55ca2ac95962 416 LED_P23x32Str(offset1,3,buf_2);
joon874 0:55ca2ac95962 417 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 418 }else{
joon874 0:55ca2ac95962 419 printf("level menu error\r\n");
joon874 0:55ca2ac95962 420 }
joon874 0:55ca2ac95962 421 }
joon874 0:55ca2ac95962 422 wait(0.5);
joon874 0:55ca2ac95962 423 }else {
joon874 0:55ca2ac95962 424 user_score = user_score;
joon874 0:55ca2ac95962 425 printf("score error\r\n");
joon874 0:55ca2ac95962 426
joon874 0:55ca2ac95962 427 wait(0.5);
joon874 0:55ca2ac95962 428 }
joon874 0:55ca2ac95962 429
joon874 0:55ca2ac95962 430 }else if(level == 1){
joon874 0:55ca2ac95962 431 if(user_score == 0){
joon874 0:55ca2ac95962 432 if(score_up == 1){
joon874 0:55ca2ac95962 433 Yellow = 0; wait(0.2);
joon874 0:55ca2ac95962 434 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 435 Yellow = 0; wait(0.2);
joon874 0:55ca2ac95962 436 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 437 Yellow = 0; wait(0.2);
joon874 0:55ca2ac95962 438 Yellow = 1;
joon874 0:55ca2ac95962 439 user_score = user_score + 10;
joon874 0:55ca2ac95962 440 printf("score : %d\r\n",user_score);
joon874 0:55ca2ac95962 441 if(life == 3){
joon874 0:55ca2ac95962 442 OLED_DrawBMP(0,0,128,8,(unsigned char *)level1_full);
joon874 0:55ca2ac95962 443 LED_P23x32Str(offset1,3,buf_1);
joon874 0:55ca2ac95962 444 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 445 }else if(life == 2){
joon874 0:55ca2ac95962 446 OLED_DrawBMP(0,0,128,8,(unsigned char *)level1_two);
joon874 0:55ca2ac95962 447 LED_P23x32Str(offset1,3,buf_1);
joon874 0:55ca2ac95962 448 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 449 }else if(life == 1){
joon874 0:55ca2ac95962 450 OLED_DrawBMP(0,0,128,8,(unsigned char *)level1_one);
joon874 0:55ca2ac95962 451 LED_P23x32Str(offset1,3,buf_1);
joon874 0:55ca2ac95962 452 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 453 }else{
joon874 0:55ca2ac95962 454 printf("level menu error\r\n");
joon874 0:55ca2ac95962 455 }
joon874 0:55ca2ac95962 456
joon874 0:55ca2ac95962 457 }else{
joon874 0:55ca2ac95962 458 user_score = user_score;
joon874 0:55ca2ac95962 459 printf("score : %d\r\n",user_score);
joon874 0:55ca2ac95962 460 if(life == 3){
joon874 0:55ca2ac95962 461 Yellow = 0; wait(0.7);
joon874 0:55ca2ac95962 462 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 463 OLED_DrawBMP(0,0,128,8,(unsigned char *)level1_full);
joon874 0:55ca2ac95962 464 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 465 }else if(life == 2){
joon874 0:55ca2ac95962 466 Yellow = 0; wait(0.7);
joon874 0:55ca2ac95962 467 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 468 OLED_DrawBMP(0,0,128,8,(unsigned char *)level1_two);
joon874 0:55ca2ac95962 469 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 470 }else if(life == 1){
joon874 0:55ca2ac95962 471 Yellow = 0; wait(0.7);
joon874 0:55ca2ac95962 472 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 473 OLED_DrawBMP(0,0,128,8,(unsigned char *)level1_one);
joon874 0:55ca2ac95962 474 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 475 }else{
joon874 0:55ca2ac95962 476 printf("level menu error\r\n");
joon874 0:55ca2ac95962 477 }
joon874 0:55ca2ac95962 478 }
joon874 0:55ca2ac95962 479 wait(0.5);
joon874 0:55ca2ac95962 480 }
joon874 0:55ca2ac95962 481 else if(user_score == 10){
joon874 0:55ca2ac95962 482 if(score_up == 1){
joon874 0:55ca2ac95962 483 Yellow = 0; wait(0.2);
joon874 0:55ca2ac95962 484 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 485 Yellow = 0; wait(0.2);
joon874 0:55ca2ac95962 486 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 487 Yellow = 0; wait(0.2);
joon874 0:55ca2ac95962 488 Yellow = 1;
joon874 0:55ca2ac95962 489 user_score = user_score + 10;
joon874 0:55ca2ac95962 490 printf("score : %d\r\n",user_score);
joon874 0:55ca2ac95962 491 if(life == 3){
joon874 0:55ca2ac95962 492 OLED_DrawBMP(0,0,128,8,(unsigned char *)level1_full);
joon874 0:55ca2ac95962 493 LED_P23x32Str(offset1,3,buf_2);
joon874 0:55ca2ac95962 494 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 495 }else if(life == 2){
joon874 0:55ca2ac95962 496 OLED_DrawBMP(0,0,128,8,(unsigned char *)level1_two);
joon874 0:55ca2ac95962 497 LED_P23x32Str(offset1,3,buf_2);
joon874 0:55ca2ac95962 498 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 499 }else if(life == 1){
joon874 0:55ca2ac95962 500 OLED_DrawBMP(0,0,128,8,(unsigned char *)level1_one);
joon874 0:55ca2ac95962 501 LED_P23x32Str(offset1,3,buf_2);
joon874 0:55ca2ac95962 502 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 503 }else{
joon874 0:55ca2ac95962 504 printf("level menu error\r\n");
joon874 0:55ca2ac95962 505 }
joon874 0:55ca2ac95962 506 }else{
joon874 0:55ca2ac95962 507 user_score = user_score;
joon874 0:55ca2ac95962 508 printf("score : %d\r\n",user_score);
joon874 0:55ca2ac95962 509 if(life == 3){
joon874 0:55ca2ac95962 510 Yellow = 0; wait(0.7);
joon874 0:55ca2ac95962 511 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 512 OLED_DrawBMP(0,0,128,8,(unsigned char *)level1_full);
joon874 0:55ca2ac95962 513 LED_P23x32Str(offset1,3,buf_1);
joon874 0:55ca2ac95962 514 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 515 }else if(life == 2){
joon874 0:55ca2ac95962 516 Yellow = 0; wait(0.7);
joon874 0:55ca2ac95962 517 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 518 OLED_DrawBMP(0,0,128,8,(unsigned char *)level1_two);
joon874 0:55ca2ac95962 519 LED_P23x32Str(offset1,3,buf_1);
joon874 0:55ca2ac95962 520 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 521 }else if(life == 1){
joon874 0:55ca2ac95962 522 Yellow = 0; wait(0.7);
joon874 0:55ca2ac95962 523 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 524 OLED_DrawBMP(0,0,128,8,(unsigned char *)level1_one);
joon874 0:55ca2ac95962 525 LED_P23x32Str(offset1,3,buf_1);
joon874 0:55ca2ac95962 526 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 527 }else{
joon874 0:55ca2ac95962 528 printf("level menu error\r\n");
joon874 0:55ca2ac95962 529 }
joon874 0:55ca2ac95962 530 }
joon874 0:55ca2ac95962 531 wait(0.5);
joon874 0:55ca2ac95962 532 }
joon874 0:55ca2ac95962 533 else if(user_score == 20){
joon874 0:55ca2ac95962 534 if(score_up == 1){
joon874 0:55ca2ac95962 535 Yellow = 0; wait(0.2);
joon874 0:55ca2ac95962 536 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 537 Yellow = 0; wait(0.2);
joon874 0:55ca2ac95962 538 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 539 Yellow = 0; wait(0.2);
joon874 0:55ca2ac95962 540 Yellow = 1;
joon874 0:55ca2ac95962 541 user_score = user_score + 10;
joon874 0:55ca2ac95962 542 printf("score : %d\r\n",user_score);
joon874 0:55ca2ac95962 543 if(life == 3){
joon874 0:55ca2ac95962 544 OLED_DrawBMP(0,0,128,8,(unsigned char *)level1_full);
joon874 0:55ca2ac95962 545 LED_P23x32Str(offset1,3,buf_3);
joon874 0:55ca2ac95962 546 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 547 }else if(life == 2){
joon874 0:55ca2ac95962 548 OLED_DrawBMP(0,0,128,8,(unsigned char *)level1_two);
joon874 0:55ca2ac95962 549 LED_P23x32Str(offset1,3,buf_3);
joon874 0:55ca2ac95962 550 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 551 }else if(life == 1){
joon874 0:55ca2ac95962 552 OLED_DrawBMP(0,0,128,8,(unsigned char *)level1_one);
joon874 0:55ca2ac95962 553 LED_P23x32Str(offset1,3,buf_3);
joon874 0:55ca2ac95962 554 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 555 }else{
joon874 0:55ca2ac95962 556 printf("level menu error\r\n");
joon874 0:55ca2ac95962 557 }
joon874 0:55ca2ac95962 558 wait(1.0);
joon874 0:55ca2ac95962 559
joon874 0:55ca2ac95962 560 }else{
joon874 0:55ca2ac95962 561 user_score = user_score;
joon874 0:55ca2ac95962 562 printf("score : %d\r\n",user_score);
joon874 0:55ca2ac95962 563 if(life == 3){
joon874 0:55ca2ac95962 564 Yellow = 0; wait(0.7);
joon874 0:55ca2ac95962 565 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 566 OLED_DrawBMP(0,0,128,8,(unsigned char *)level1_full);
joon874 0:55ca2ac95962 567 LED_P23x32Str(offset1,3,buf_2);
joon874 0:55ca2ac95962 568 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 569 }else if(life == 2){
joon874 0:55ca2ac95962 570 Yellow = 0; wait(0.7);
joon874 0:55ca2ac95962 571 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 572 OLED_DrawBMP(0,0,128,8,(unsigned char *)level1_two);
joon874 0:55ca2ac95962 573 LED_P23x32Str(offset1,3,buf_2);
joon874 0:55ca2ac95962 574 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 575 }else if(life == 1){
joon874 0:55ca2ac95962 576 Yellow = 0; wait(0.7);
joon874 0:55ca2ac95962 577 Yellow = 1; wait(0.2);
joon874 0:55ca2ac95962 578 OLED_DrawBMP(0,0,128,8,(unsigned char *)level1_one);
joon874 0:55ca2ac95962 579 LED_P23x32Str(offset1,3,buf_2);
joon874 0:55ca2ac95962 580 LED_P23x32Str(offset2,3,buf_0);
joon874 0:55ca2ac95962 581 }else{
joon874 0:55ca2ac95962 582 printf("level menu error\r\n");
joon874 0:55ca2ac95962 583 }
joon874 0:55ca2ac95962 584 }
joon874 0:55ca2ac95962 585 wait(0.5);
joon874 0:55ca2ac95962 586 }else {
joon874 0:55ca2ac95962 587 user_score = user_score;
joon874 0:55ca2ac95962 588 printf("score error\r\n");
joon874 0:55ca2ac95962 589
joon874 0:55ca2ac95962 590 wait(0.5);
joon874 0:55ca2ac95962 591 }
joon874 0:55ca2ac95962 592 }
joon874 0:55ca2ac95962 593 }
joon874 0:55ca2ac95962 594
joon874 0:55ca2ac95962 595 void CLOSE( void ) {
joon874 0:55ca2ac95962 596 OLED_DrawBMP(0,0,128,8,(unsigned char *)end);
joon874 0:55ca2ac95962 597 }
joon874 0:55ca2ac95962 598
joon874 0:55ca2ac95962 599