
Zeyu Feng 201377605
Dependencies: mbed
On Minerva
Interface/Interface.cpp
- Committer:
- el19zf
- Date:
- 2020-05-21
- Revision:
- 18:93d050e7705d
- Parent:
- 17:ba4d9cd1e347
- Child:
- 19:5083339b55e8
File content as of revision 18:93d050e7705d:
#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}}, {2,{1,3}}, {3,{2,4}}, {4,{3,0}} }; const int pointer[3][2] = { {1,0}, {1,1}, {1,0} }; Interface::Interface() { } Interface::~Interface() { } void Interface::init() { _gameover_flag = 0; _sim_flag = 0; _victory_flag = 0; } void Interface::Welcome(N5110 &lcd,Gamepad &pad) { while (!pad.start_pressed()) { lcd.clear(); lcd.printString(" Welcome! ",0,1); 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); //printf("WIDTH of contrast = %d, contrast = %f\n",(int)pad.read_pot1()*WIDTH,pad.read_pot1()); lcd.refresh(); pad.leds_on(); wait(0.1); pad.leds_off(); wait(0.1); } _sound.menu_sound(pad); } int Interface::menu(N5110 &lcd,Gamepad &pad,int option_flag) { while (!pad.A_pressed()) { lcd.clear(); lcd.printString(" MENU",0,0); lcd.printString(" Start",0,1); lcd.printString(" Start(Hell)",0,2); lcd.printString(" user-defined",0,3); lcd.printString(" Instruction",0,4); lcd.printString(" Exit",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(0,8*option_flag+10,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(20,8*option_flag+10,3,2,(int*)pointer); lcd.refresh(); pad.leds_on(); wait(0.25); } 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(" Max.shots",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(20,8*option_flag+10,3,2,(int*)pointer); lcd.refresh(); pad.leds_on(); wait(0.25); } _sound.begin_sound(pad); return option_flag; } void Interface::game_over(N5110 &lcd,Gamepad &pad) { _sound.over_sound(pad); lcd.clear(); pad.init(); while(!pad.B_pressed()){ lcd.printString(" Game over ",0,1); lcd.printString(" Press B to ",0,2); lcd.printString(" try again? ",0,3); lcd.refresh(); wait(0.1); //printf("Not press B\n"); } _gameover_flag = 1; } int Interface::check_pause(N5110 &lcd,Gamepad &pad,int paused_flag,float increment, int max) { if(pad.start_pressed()){ paused_flag = 1; sprintf(_buffer1," %.1f shots/s",increment*6); sprintf(_buffer2," with Max.%d ",max); } //printf("start press\n"); while(paused_flag == 1){ lcd.clear(); _timer.stop(); lcd.printString("Paused",23,0); lcd.printString(_buffer1,0,2); lcd.printString(_buffer2,0,3); lcd.refresh(); if(pad.start_pressed()) paused_flag = 0; } _timer.start(); return paused_flag; } int Interface::count_down(N5110 &lcd,int count_flag) { char buffer[6]; sprintf(buffer,"%d",int(count_flag/6)); lcd.printString(buffer,40,2); //printf("count: %d\n",count_flag); count_flag--; return count_flag; } void Interface::exit(N5110 &lcd,Gamepad &pad) { lcd.clear(); pad.init(); pad.tone(10,0.05); pad.set_bpm(0); while(!pad.B_pressed()){ lcd.printString(" Press B back ",0,2); lcd.printString(" to menu ",0,3); lcd.refresh(); wait(0.1); } } void Interface::victory(N5110 &lcd,Gamepad &pad) { _sound.vict_sound(pad); lcd.clear(); pad.init(); while(!pad.B_pressed()){ lcd.printString(" Victory! ",0,1); lcd.printString(" Press B back ",0,2); lcd.printString(" to menu ",0,3); lcd.refresh(); wait(0.1); } _victory_flag = 1; } void Interface::simple_game(N5110 &lcd,Gamepad &pad) { lcd.clear(); pad.init(); while(!pad.A_pressed()){ lcd.printString(" DO YOU WANT ",0,1); lcd.printString(" MAKE IT EASY? ",0,2); lcd.printString(" PRESS A to",0,3); lcd.printString(" try again! ",0,4); lcd.refresh(); wait(0.1); } _sim_flag = 1; _sound.count_sound(pad); } int Interface::get_sim_flag() { //printf("Get simple_flag %d\n",_sim_flag); return _sim_flag; } int Interface::get_gameover_flag() { return _gameover_flag; } int Interface::get_victory_flag() { return _victory_flag; }