pp
Dependencies: mbed
Diff: main.cpp
- Revision:
- 4:a61cdd4e7afa
- Parent:
- 3:dc88b52d526c
- Child:
- 5:60262753a05f
--- a/main.cpp Sat Dec 05 16:43:40 2015 +0000 +++ b/main.cpp Sat Dec 05 19:01:26 2015 +0000 @@ -1,13 +1,17 @@ #include "mbed.h" #include "DS1307.h" #include "DigitDisplay.h" +#include "Game.h" DS1307 myrtc(I2C_SDA,I2C_SCL); DigitDisplay display(D7,D8); +Game game; DigitalOut buzzer(D6); BusIn b(D9,D10,D11); BusOut led(D2,D3,D4,D5); AnalogIn analog_value(A2); +const bool bcd[16][4] = {{0,0,0,0},{0,0,0,1},{0,0,1,0},{0,0,1,1},{0,1,0,0},{0,1,0,1},{0,1,1,0},{0,1,1,1}, + {1,0,0,0},{1,0,0,1},{1,0,1,0},{1,0,1,1},{1,1,0,0},{1,1,0,1},{1,1,1,0},{1,1,1,1}}; void DisplayTime(); @@ -18,62 +22,129 @@ int sec=45,min=59,hour=6,day=7,date=5,month=12,year=15; int n=0,opt=1,p=0,ten_hour,nu_hour,ten_min,nu_min,hour_a=7,min_a=0; float mea; + int state=0; + int hexnum[4]; + int currenthex=0, checkbcd=0, gameround=0, changehex=1; myrtc.settime(sec,min,hour,day,date,month,year); //DisplayTime(); //display.Displayset((hour-(hour%10))/10,hour%10,(min-(min%10))/10,min%10); while(1) - { - mea=analog_value.read(); - if(b==0b011){n=1;} - else if(b==0b101){n=2;} - else if(b==0b110){n=3;} - else n=0; - display.getButtonState(n); - if(display.checkButton1()==1){led=0b100;mode=1;} - else if(display.checkButton2()==1){led=0b010;mode=2;} - else if(display.checkButton3()==1){led=0b001;mode=3;} + { + mea=analog_value.read(); + /*if(state==0) + { + mea=analog_value.read(); + if(b==0b011){n=1;} + else if(b==0b101){n=2;} + else if(b==0b110){n=3;} + else n=0; + display.getButtonState(n); + + wait_ms(100); + + //printf("%d\n",mode); + + wait_ms(100); + + if(display.checkButton3()==1) + { + p++; + if(p==10){p=0;} + printf("%d\n",p); + if(p%2==0){opt=1;} + if(p%2==1){opt=2;} + } + + myrtc.gettime(&sec,&min,&hour,&day,&date,&month,&year); + + if(opt==1) + { + display.setColon(1); + display.Displayset((hour-(hour%10))/10,hour%10,(min-(min%10))/10,min%10); + } + if(opt==2) + { + ten_hour=(hour_a-(hour_a%10))/10; + nu_hour=hour_a%10; + ten_min=(min_a-(min_a%10))/10; + nu_min=min_a%10; + display.Displayset(ten_hour,nu_hour,ten_min,nu_min); - wait_ms(100); - - //printf("%d\n",mode); - - wait_ms(100); - - if(display.checkButton3()==1) + if(display.checkButton1()==1){hour_a++;} + if(display.checkButton2()==1){min_a++;} + + if(hour_a==24){hour_a=0;} + if(min_a==60){min_a=0;} + + } + + } + if(hour==hour_a&&min==min_a) + else*/ if(mode==0) { - p++; - if(p==10){p=0;} - printf("%d\n",p); - if(p%2==0){opt=1;} - if(p%2==1){opt=2;} + //buzzer=1; + state = 1; + int gamelevel=game.getlevel(); + if(changehex==1) + { + for(int i=0;i<gamelevel;i++) + { + hexnum[i] = game.randomHex(mea); + } + if(gamelevel==1) display.Displayset(0xFF,0xFF,hexnum[0],0xFF); + else if(gamelevel==2) display.Displayset(0xFF,hexnum[0],hexnum[1],0xFF); + else if(gamelevel==3) display.Displayset(0xFF,hexnum[0],hexnum[1],hexnum[2]); + else if(gamelevel==4) display.Displayset(hexnum[0],hexnum[1],hexnum[2],hexnum[3]); + changehex = 0; + } + if(b==0b011){n=1;} + else if(b==0b101){n=2;} + else if(b==0b110){n=3;} + else n=0; + display.getButtonState(n); + if((bcd[hexnum[currenthex]][checkbcd]==0 && display.checkButton1()==1)||(bcd[hexnum[currenthex]][checkbcd]==1 && display.checkButton2()==1)) + { + if(checkbcd<4) checkbcd++; + else + { + checkbcd=0; + currenthex++; + if(currenthex==gamelevel) + { + gameround++; + currenthex = 0; + changehex = 1; + display.A(); + } + } + } + else if((bcd[hexnum[currenthex]][checkbcd]==1 && display.checkButton1()==1)||(bcd[hexnum[currenthex]][checkbcd]==0 && display.checkButton2()==1)) + { + checkbcd=0; + game.pluslevel(); + changehex = 1; + display.F(); + } + else if(display.checkButton3()==3) + { + checkbcd=0; + currenthex==0; + } + + if(gameround==4) + { + mode=1; + state=0; + buzzer=0; + game.resetlevel(); + checkbcd=0; + currenthex==0; + gameround=0; + changehex=1; + } } - myrtc.gettime(&sec,&min,&hour,&day,&date,&month,&year); - - if(opt==1) - { - display.setColon(1); - display.Displayset((hour-(hour%10))/10,hour%10,(min-(min%10))/10,min%10); - } - if(opt==2) - { - ten_hour=(hour_a-(hour_a%10))/10; - nu_hour=hour_a%10; - ten_min=(min_a-(min_a%10))/10; - nu_min=min_a%10; - display.Displayset(ten_hour,nu_hour,ten_min,nu_min); - - if(display.checkButton1()==1){hour_a++;} - if(display.checkButton2()==1){min_a++;} - - if(hour_a==24){hour_a=0;} - if(min_a==60){min_a=0;} - - } - if(hour==hour_a&&min==min_a){buzzer=1;} - else{buzzer=0;} - printf("%f\n",mea); if(mea>=0.65){min_a=min_a+1;}