Zeyu Feng 201377605
Dependencies: mbed
On Minerva
Interface/Interface.cpp
- Committer:
- el19zf
- Date:
- 2020-05-15
- Revision:
- 14:42b8a91e463c
- Parent:
- 13:eb60628db8bf
- Child:
- 16:cf2bfada3adf
File content as of revision 14:42b8a91e463c:
#include "Interface.h" State fsm[3] = { {0,{2,1}}, {1,{0,2}}, {2,{1,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()); 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); } pad.play_melody(5,sound_data_menu,sound_dur_menu,180,0); } 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,2); lcd.printString(" Start(Hell)",0,3); lcd.printString(" Exit",0,4); _d = pad.get_direction(); if(_d == N||_d ==NE||_d==NW){ option_flag = fsm[option_flag].next_state[0]; } else if(_d == S||_d==SE||_d==SW){ option_flag = fsm[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"); } //count down, each duration 0.5s and 60 beats per minute(1s) pad.play_melody(3,sound_data_begin,sound_dur_begin,60,0); return option_flag; } void Interface::game_over(N5110 &lcd,Gamepad &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) { if(pad.start_pressed()) paused_flag = 1; //printf("start press\n"); while(paused_flag == 1){ _timer.stop(); lcd.printString("Paused",23,2); 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) { 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; } 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; }