
Zeyu Feng 201377605
Dependencies: mbed
On Minerva
Diff: Interface/Interface.cpp
- Revision:
- 19:5083339b55e8
- Parent:
- 18:93d050e7705d
- Child:
- 20:a36ab1560e73
--- a/Interface/Interface.cpp Thu May 21 15:20:33 2020 +0000 +++ b/Interface/Interface.cpp Thu May 21 17:07:46 2020 +0000 @@ -1,12 +1,5 @@ #include "Interface.h" - -State fsm_4[4] = { - {0,{2,1}}, - {1,{0,2}}, - {2,{1,3}}, - {3,{2,0}} -}; State fsm_5[5] = { {0,{2,1}}, {1,{0,2}}, @@ -14,6 +7,7 @@ {3,{2,4}}, {4,{3,0}} }; +// point to option const int pointer[3][2] = { {1,0}, {1,1}, @@ -32,14 +26,19 @@ void Interface::init() { + _menu_flag = 0; + _defined_rate_flag = 0; + _defined_max_flag = 0; _gameover_flag = 0; - _sim_flag = 0; + _count_down = 18; _victory_flag = 0; + _sim_flag = 0;//simple game flag } void Interface::Welcome(N5110 &lcd,Gamepad &pad) { + // start game after pressing the start botton while (!pad.start_pressed()) { lcd.clear(); @@ -47,7 +46,7 @@ lcd.printString(" Game by ",0,2); lcd.printString(" Z. FENG ",0,3); lcd.setContrast( pad.read_pot1());// control the contrast of screen - lcd.drawRect(0,44,int(pad.read_pot1()*WIDTH),2,FILL_BLACK); + lcd.drawRect(0,44,int(pad.read_pot1()*WIDTH),2,FILL_BLACK);// shows the contrast of gamepad by a black rectangle //printf("WIDTH of contrast = %d, contrast = %f\n",(int)pad.read_pot1()*WIDTH,pad.read_pot1()); lcd.refresh(); pad.leds_on(); @@ -58,7 +57,7 @@ _sound.menu_sound(pad); } -int Interface::menu(N5110 &lcd,Gamepad &pad,int option_flag) +void Interface::menu(N5110 &lcd,Gamepad &pad) { while (!pad.A_pressed()) { @@ -70,22 +69,22 @@ lcd.printString(" Instruction",0,4); lcd.printString(" Exit",0,5); _d = pad.get_direction(); + // in order to easily control Joystick, pointer move upward in a large angle if(_d == N||_d ==NE||_d==NW){ - option_flag = fsm_5[option_flag].next_state[0]; + _menu_flag = fsm_5[_menu_flag].next_state[0]; } else if(_d == S||_d==SE||_d==SW){ - option_flag = fsm_5[option_flag].next_state[1]; + _menu_flag = fsm_5[_menu_flag].next_state[1]; } - lcd.drawSprite(0,8*option_flag+10,3,2,(int*)pointer); + lcd.drawSprite(0,8*_menu_flag+10,3,2,(int*)pointer); lcd.refresh(); pad.leds_on(); - wait(0.25); + wait(0.3); //printf("A_pressed\n"); } - _sound.begin_sound(pad); - return option_flag; + _sound.begin_sound(pad); } -int Interface::undefined_rate(N5110 &lcd,Gamepad &pad,int option_flag) +void Interface::undefined_rate(N5110 &lcd,Gamepad &pad) { pad.tone(10,0.05); pad.set_bpm(0); @@ -101,20 +100,19 @@ 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]; + _defined_rate_flag = fsm_5[_defined_rate_flag].next_state[0]; } else if(_d == S||_d==SE||_d==SW){ - option_flag = fsm_5[option_flag].next_state[1]; + _defined_rate_flag = fsm_5[_defined_rate_flag].next_state[1]; } - lcd.drawSprite(20,8*option_flag+10,3,2,(int*)pointer); + lcd.drawSprite(20,8*_defined_rate_flag+10,3,2,(int*)pointer); lcd.refresh(); pad.leds_on(); - wait(0.25); + wait(0.3); } - return option_flag; } -int Interface::undefined_max(N5110 &lcd,Gamepad &pad,int option_flag) +void Interface::undefined_max(N5110 &lcd,Gamepad &pad) { pad.reset_buttons(); while (!pad.A_pressed()) @@ -128,17 +126,16 @@ 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]; + _defined_max_flag = fsm_5[_defined_max_flag].next_state[0]; } else if(_d == S||_d==SE||_d==SW){ - option_flag = fsm_5[option_flag].next_state[1]; + _defined_max_flag = fsm_5[_defined_max_flag].next_state[1]; } - lcd.drawSprite(20,8*option_flag+10,3,2,(int*)pointer); + lcd.drawSprite(20,8*_defined_max_flag+10,3,2,(int*)pointer); lcd.refresh(); pad.leds_on(); - wait(0.25); + wait(0.3); } _sound.begin_sound(pad); - return option_flag; } @@ -158,7 +155,7 @@ _gameover_flag = 1; } -int Interface::check_pause(N5110 &lcd,Gamepad &pad,int paused_flag,float increment, int max) +int Interface::check_pause(N5110 &lcd,Gamepad &pad,int paused_flag, float increment, int max) { if(pad.start_pressed()){ paused_flag = 1; @@ -180,14 +177,13 @@ return paused_flag; } -int Interface::count_down(N5110 &lcd,int count_flag) +void Interface::count_down(N5110 &lcd) { char buffer[6]; - sprintf(buffer,"%d",int(count_flag/6)); + sprintf(buffer,"%d",int(_count_down/6)); lcd.printString(buffer,40,2); - //printf("count: %d\n",count_flag); - count_flag--; - return count_flag; + //printf("count: %d\n",_count_flag); + _count_down--; } void Interface::exit(N5110 &lcd,Gamepad &pad) @@ -235,6 +231,26 @@ _sound.count_sound(pad); } +void Interface::set_count_down(int count_down) +{ + _count_down = count_down; +} + +int Interface::get_menu_flag() +{ + return _menu_flag; +} + +int Interface::get_rate_flag() +{ + return _defined_rate_flag; +} + +int Interface::get_max_flag() +{ + return _defined_max_flag; +} + int Interface::get_sim_flag() { //printf("Get simple_flag %d\n",_sim_flag); @@ -249,4 +265,4 @@ int Interface::get_victory_flag() { return _victory_flag; -} \ No newline at end of file +}