Zeyu Feng 201377605

Dependencies:   mbed

On Minerva

Committer:
el19zf
Date:
Mon May 18 08:56:17 2020 +0000
Revision:
16:cf2bfada3adf
Parent:
14:42b8a91e463c
Child:
17:ba4d9cd1e347
update the paused interface

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el19zf 11:494cc44777fe 1 #include "Interface.h"
el19zf 11:494cc44777fe 2
el19zf 14:42b8a91e463c 3
el19zf 11:494cc44777fe 4 State fsm[3] = {
el19zf 11:494cc44777fe 5 {0,{2,1}},
el19zf 11:494cc44777fe 6 {1,{0,2}},
el19zf 11:494cc44777fe 7 {2,{1,0}},
el19zf 11:494cc44777fe 8 };
el19zf 11:494cc44777fe 9 const int pointer[3][2] = {
el19zf 11:494cc44777fe 10 {1,0},
el19zf 11:494cc44777fe 11 {1,1},
el19zf 11:494cc44777fe 12 {1,0}
el19zf 11:494cc44777fe 13 };
el19zf 11:494cc44777fe 14
el19zf 11:494cc44777fe 15 Interface::Interface()
el19zf 11:494cc44777fe 16 {
el19zf 11:494cc44777fe 17
el19zf 11:494cc44777fe 18 }
el19zf 11:494cc44777fe 19
el19zf 11:494cc44777fe 20 Interface::~Interface()
el19zf 11:494cc44777fe 21 {
el19zf 11:494cc44777fe 22
el19zf 11:494cc44777fe 23 }
el19zf 11:494cc44777fe 24
el19zf 11:494cc44777fe 25 void Interface::init()
el19zf 11:494cc44777fe 26 {
el19zf 12:009895f6b6e4 27 _gameover_flag = 0;
el19zf 12:009895f6b6e4 28 _sim_flag = 0;
el19zf 12:009895f6b6e4 29 _victory_flag = 0;
el19zf 11:494cc44777fe 30 }
el19zf 11:494cc44777fe 31
el19zf 11:494cc44777fe 32
el19zf 11:494cc44777fe 33 void Interface::Welcome(N5110 &lcd,Gamepad &pad)
el19zf 11:494cc44777fe 34 {
el19zf 11:494cc44777fe 35 while (!pad.start_pressed())
el19zf 11:494cc44777fe 36 {
el19zf 13:eb60628db8bf 37 lcd.clear();
el19zf 13:eb60628db8bf 38 lcd.printString(" Welcome! ",0,1);
el19zf 13:eb60628db8bf 39 lcd.printString(" Game by ",0,2);
el19zf 13:eb60628db8bf 40 lcd.printString(" Z. FENG ",0,3);
el19zf 13:eb60628db8bf 41 lcd.setContrast( pad.read_pot1());
el19zf 13:eb60628db8bf 42 lcd.drawRect(0,44,int(pad.read_pot1()*WIDTH),2,FILL_BLACK);
el19zf 13:eb60628db8bf 43 //printf("WIDTH of contrast = %d, contrast = %f\n",(int)pad.read_pot1()*WIDTH,pad.read_pot1());
el19zf 13:eb60628db8bf 44 lcd.refresh();
el19zf 11:494cc44777fe 45 pad.leds_on();
el19zf 11:494cc44777fe 46 wait(0.1);
el19zf 11:494cc44777fe 47 pad.leds_off();
el19zf 11:494cc44777fe 48 wait(0.1);
el19zf 11:494cc44777fe 49 }
el19zf 16:cf2bfada3adf 50 _sound.menu_sound(pad);
el19zf 11:494cc44777fe 51 }
el19zf 11:494cc44777fe 52
el19zf 11:494cc44777fe 53 int Interface::menu(N5110 &lcd,Gamepad &pad,int option_flag)
el19zf 11:494cc44777fe 54 {
el19zf 11:494cc44777fe 55 while (!pad.A_pressed())
el19zf 11:494cc44777fe 56 {
el19zf 11:494cc44777fe 57 lcd.clear();
el19zf 16:cf2bfada3adf 58 lcd.printString(" MENU",0,0);
el19zf 11:494cc44777fe 59 lcd.printString(" Start",0,2);
el19zf 11:494cc44777fe 60 lcd.printString(" Start(Hell)",0,3);
el19zf 11:494cc44777fe 61 lcd.printString(" Exit",0,4);
el19zf 11:494cc44777fe 62 _d = pad.get_direction();
el19zf 12:009895f6b6e4 63 if(_d == N||_d ==NE||_d==NW){
el19zf 11:494cc44777fe 64 option_flag = fsm[option_flag].next_state[0];
el19zf 12:009895f6b6e4 65 } else if(_d == S||_d==SE||_d==SW){
el19zf 11:494cc44777fe 66 option_flag = fsm[option_flag].next_state[1];
el19zf 11:494cc44777fe 67 }
el19zf 11:494cc44777fe 68 lcd.drawSprite(0,8*option_flag+18,3,2,(int*)pointer);
el19zf 11:494cc44777fe 69 lcd.refresh();
el19zf 11:494cc44777fe 70 pad.leds_on();
el19zf 11:494cc44777fe 71 wait(0.3);
el19zf 11:494cc44777fe 72 //printf("A_pressed\n");
el19zf 14:42b8a91e463c 73 }
el19zf 16:cf2bfada3adf 74 _sound.begin_sound(pad);
el19zf 14:42b8a91e463c 75 return option_flag;
el19zf 11:494cc44777fe 76 }
el19zf 11:494cc44777fe 77
el19zf 11:494cc44777fe 78 void Interface::game_over(N5110 &lcd,Gamepad &pad)
el19zf 11:494cc44777fe 79 {
el19zf 16:cf2bfada3adf 80 _sound.over_sound(pad);
el19zf 11:494cc44777fe 81 lcd.clear();
el19zf 13:eb60628db8bf 82 pad.init();
el19zf 11:494cc44777fe 83 while(!pad.B_pressed()){
el19zf 11:494cc44777fe 84 lcd.printString(" Game over ",0,1);
el19zf 11:494cc44777fe 85 lcd.printString(" Press B to ",0,2);
el19zf 11:494cc44777fe 86 lcd.printString(" try again? ",0,3);
el19zf 11:494cc44777fe 87 lcd.refresh();
el19zf 11:494cc44777fe 88 wait(0.1);
el19zf 11:494cc44777fe 89 //printf("Not press B\n");
el19zf 11:494cc44777fe 90 }
el19zf 12:009895f6b6e4 91 _gameover_flag = 1;
el19zf 11:494cc44777fe 92 }
el19zf 11:494cc44777fe 93
el19zf 16:cf2bfada3adf 94 int Interface::check_pause(N5110 &lcd,Gamepad &pad,int paused_flag,float increment, int max)
el19zf 11:494cc44777fe 95 {
el19zf 16:cf2bfada3adf 96 if(pad.start_pressed()){
el19zf 11:494cc44777fe 97 paused_flag = 1;
el19zf 16:cf2bfada3adf 98 sprintf(_buffer1," %.1f shots/s",increment*6);
el19zf 16:cf2bfada3adf 99 sprintf(_buffer2," with Max.%d ",max);
el19zf 16:cf2bfada3adf 100 }
el19zf 11:494cc44777fe 101 //printf("start press\n");
el19zf 11:494cc44777fe 102 while(paused_flag == 1){
el19zf 16:cf2bfada3adf 103 lcd.clear();
el19zf 11:494cc44777fe 104 _timer.stop();
el19zf 16:cf2bfada3adf 105 lcd.printString("Paused",23,0);
el19zf 16:cf2bfada3adf 106 lcd.printString(_buffer1,0,2);
el19zf 16:cf2bfada3adf 107 lcd.printString(_buffer2,0,3);
el19zf 11:494cc44777fe 108 lcd.refresh();
el19zf 11:494cc44777fe 109 if(pad.start_pressed())
el19zf 11:494cc44777fe 110 paused_flag = 0;
el19zf 11:494cc44777fe 111 }
el19zf 11:494cc44777fe 112 _timer.start();
el19zf 11:494cc44777fe 113 return paused_flag;
el19zf 11:494cc44777fe 114 }
el19zf 11:494cc44777fe 115
el19zf 11:494cc44777fe 116 int Interface::count_down(N5110 &lcd,int count_flag)
el19zf 11:494cc44777fe 117 {
el19zf 11:494cc44777fe 118 char buffer[6];
el19zf 13:eb60628db8bf 119 sprintf(buffer,"%d",int(count_flag/6));
el19zf 11:494cc44777fe 120 lcd.printString(buffer,40,2);
el19zf 11:494cc44777fe 121 //printf("count: %d\n",count_flag);
el19zf 11:494cc44777fe 122 count_flag--;
el19zf 11:494cc44777fe 123 return count_flag;
el19zf 11:494cc44777fe 124 }
el19zf 11:494cc44777fe 125
el19zf 11:494cc44777fe 126 void Interface::exit(N5110 &lcd,Gamepad &pad)
el19zf 11:494cc44777fe 127 {
el19zf 11:494cc44777fe 128 lcd.clear();
el19zf 13:eb60628db8bf 129 pad.init();
el19zf 14:42b8a91e463c 130 pad.tone(10,0.05);
el19zf 14:42b8a91e463c 131 pad.set_bpm(0);
el19zf 11:494cc44777fe 132 while(!pad.B_pressed()){
el19zf 11:494cc44777fe 133 lcd.printString(" Press B back ",0,2);
el19zf 11:494cc44777fe 134 lcd.printString(" to menu ",0,3);
el19zf 11:494cc44777fe 135 lcd.refresh();
el19zf 11:494cc44777fe 136 wait(0.1);
el19zf 11:494cc44777fe 137 }
el19zf 11:494cc44777fe 138 }
el19zf 11:494cc44777fe 139
el19zf 11:494cc44777fe 140 void Interface::victory(N5110 &lcd,Gamepad &pad)
el19zf 11:494cc44777fe 141 {
el19zf 16:cf2bfada3adf 142 _sound.vict_sound(pad);
el19zf 11:494cc44777fe 143 lcd.clear();
el19zf 13:eb60628db8bf 144 pad.init();
el19zf 11:494cc44777fe 145 while(!pad.B_pressed()){
el19zf 11:494cc44777fe 146 lcd.printString(" Victory! ",0,1);
el19zf 11:494cc44777fe 147 lcd.printString(" Press B back ",0,2);
el19zf 11:494cc44777fe 148 lcd.printString(" to menu ",0,3);
el19zf 11:494cc44777fe 149 lcd.refresh();
el19zf 11:494cc44777fe 150 wait(0.1);
el19zf 11:494cc44777fe 151 }
el19zf 12:009895f6b6e4 152 _victory_flag = 1;
el19zf 12:009895f6b6e4 153 }
el19zf 12:009895f6b6e4 154
el19zf 12:009895f6b6e4 155 void Interface::simple_game(N5110 &lcd,Gamepad &pad)
el19zf 12:009895f6b6e4 156 {
el19zf 12:009895f6b6e4 157 lcd.clear();
el19zf 12:009895f6b6e4 158 pad.init();
el19zf 12:009895f6b6e4 159 while(!pad.A_pressed()){
el19zf 12:009895f6b6e4 160 lcd.printString(" DO YOU WANT ",0,1);
el19zf 12:009895f6b6e4 161 lcd.printString(" MAKE IT EASY? ",0,2);
el19zf 12:009895f6b6e4 162 lcd.printString(" PRESS A to",0,3);
el19zf 12:009895f6b6e4 163 lcd.printString(" try again! ",0,4);
el19zf 12:009895f6b6e4 164 lcd.refresh();
el19zf 12:009895f6b6e4 165 wait(0.1);
el19zf 12:009895f6b6e4 166 }
el19zf 12:009895f6b6e4 167 _sim_flag = 1;
el19zf 16:cf2bfada3adf 168 _sound.count_sound(pad);
el19zf 12:009895f6b6e4 169 }
el19zf 12:009895f6b6e4 170
el19zf 12:009895f6b6e4 171 int Interface::get_sim_flag()
el19zf 12:009895f6b6e4 172 {
el19zf 12:009895f6b6e4 173 //printf("Get simple_flag %d\n",_sim_flag);
el19zf 12:009895f6b6e4 174 return _sim_flag;
el19zf 12:009895f6b6e4 175 }
el19zf 12:009895f6b6e4 176
el19zf 12:009895f6b6e4 177 int Interface::get_gameover_flag()
el19zf 12:009895f6b6e4 178 {
el19zf 12:009895f6b6e4 179 return _gameover_flag;
el19zf 12:009895f6b6e4 180 }
el19zf 12:009895f6b6e4 181
el19zf 12:009895f6b6e4 182 int Interface::get_victory_flag()
el19zf 12:009895f6b6e4 183 {
el19zf 12:009895f6b6e4 184 return _victory_flag;
el19zf 11:494cc44777fe 185 }