Zeyu Feng 201377605
Dependencies: mbed
On Minerva
Diff: Interface/Interface.cpp
- Revision:
- 17:ba4d9cd1e347
- Parent:
- 16:cf2bfada3adf
- Child:
- 18:93d050e7705d
--- a/Interface/Interface.cpp Mon May 18 08:56:17 2020 +0000 +++ b/Interface/Interface.cpp Mon May 18 15:30:54 2020 +0000 @@ -1,10 +1,18 @@ #include "Interface.h" -State fsm[3] = { +State fsm_4[4] = { {0,{2,1}}, {1,{0,2}}, - {2,{1,0}}, + {2,{1,3}}, + {3,{2,0}} +}; +State fsm_5[5] = { + {0,{2,1}}, + {1,{0,2}}, + {2,{1,3}}, + {3,{2,4}}, + {4,{3,0}} }; const int pointer[3][2] = { {1,0}, @@ -38,7 +46,7 @@ lcd.printString(" Welcome! ",0,1); lcd.printString(" Game by ",0,2); lcd.printString(" Z. FENG ",0,3); - lcd.setContrast( pad.read_pot1()); + lcd.setContrast( pad.read_pot1());// control the contrast of screen lcd.drawRect(0,44,int(pad.read_pot1()*WIDTH),2,FILL_BLACK); //printf("WIDTH of contrast = %d, contrast = %f\n",(int)pad.read_pot1()*WIDTH,pad.read_pot1()); lcd.refresh(); @@ -58,23 +66,81 @@ lcd.printString(" MENU",0,0); lcd.printString(" Start",0,2); lcd.printString(" Start(Hell)",0,3); - lcd.printString(" Exit",0,4); + lcd.printString(" user-defined",0,4); + lcd.printString(" Exit",0,5); _d = pad.get_direction(); if(_d == N||_d ==NE||_d==NW){ - option_flag = fsm[option_flag].next_state[0]; + option_flag = fsm_4[option_flag].next_state[0]; } else if(_d == S||_d==SE||_d==SW){ - option_flag = fsm[option_flag].next_state[1]; + option_flag = fsm_4[option_flag].next_state[1]; } - lcd.drawSprite(0,8*option_flag+18,3,2,(int*)pointer); - lcd.refresh(); - pad.leds_on(); - wait(0.3); - //printf("A_pressed\n"); + lcd.drawSprite(0,8*option_flag+18,3,2,(int*)pointer); + lcd.refresh(); + pad.leds_on(); + wait(0.25); + //printf("A_pressed\n"); } _sound.begin_sound(pad); return option_flag; } +int Interface::undefined_rate(N5110 &lcd,Gamepad &pad,int option_flag) +{ + pad.tone(10,0.05); + pad.set_bpm(0); + pad.reset_buttons(); + while (!pad.A_pressed()) + { + lcd.clear(); + lcd.printString(" shots/frames",0,0); + lcd.printString(" 0.3",0,1); + lcd.printString(" 0.4",0,2); + lcd.printString(" 0.5",0,3); + lcd.printString(" 0.6",0,4); + lcd.printString(" 0.7",0,5); + _d = pad.get_direction(); + if(_d == N||_d ==NE||_d==NW){ + option_flag = fsm_5[option_flag].next_state[0]; + } else if(_d == S||_d==SE||_d==SW){ + option_flag = fsm_5[option_flag].next_state[1]; + } + lcd.drawSprite(10,8*option_flag+10,3,2,(int*)pointer); + lcd.refresh(); + pad.leds_on(); + wait(0.2); + } + return option_flag; +} + + +int Interface::undefined_max(N5110 &lcd,Gamepad &pad,int option_flag) +{ + pad.reset_buttons(); + while (!pad.A_pressed()) + { + lcd.clear(); + lcd.printString(" shots/frames",0,0); + lcd.printString(" 15",0,1); + lcd.printString(" 20",0,2); + lcd.printString(" 25",0,3); + lcd.printString(" 30",0,4); + lcd.printString(" 35",0,5); + _d = pad.get_direction(); + if(_d == N||_d ==NE||_d==NW){ + option_flag = fsm_5[option_flag].next_state[0]; + } else if(_d == S||_d==SE||_d==SW){ + option_flag = fsm_5[option_flag].next_state[1]; + } + lcd.drawSprite(10,8*option_flag+10,3,2,(int*)pointer); + lcd.refresh(); + pad.leds_on(); + wait(0.2); + } + _sound.begin_sound(pad); + return option_flag; +} + + void Interface::game_over(N5110 &lcd,Gamepad &pad) { _sound.over_sound(pad);