Dependencies:   mbed

On Minerva

Committer:
el19zf
Date:
Mon May 11 09:09:31 2020 +0000
Revision:
11:494cc44777fe
Child:
12:009895f6b6e4
add Interface class and build the interaction with gamer

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el19zf 11:494cc44777fe 1 #include "Interface.h"
el19zf 11:494cc44777fe 2
el19zf 11:494cc44777fe 3 State fsm[3] = {
el19zf 11:494cc44777fe 4 {0,{2,1}},
el19zf 11:494cc44777fe 5 {1,{0,2}},
el19zf 11:494cc44777fe 6 {2,{1,0}},
el19zf 11:494cc44777fe 7 };
el19zf 11:494cc44777fe 8 const int pointer[3][2] = {
el19zf 11:494cc44777fe 9 {1,0},
el19zf 11:494cc44777fe 10 {1,1},
el19zf 11:494cc44777fe 11 {1,0}
el19zf 11:494cc44777fe 12 };
el19zf 11:494cc44777fe 13
el19zf 11:494cc44777fe 14 Interface::Interface()
el19zf 11:494cc44777fe 15 {
el19zf 11:494cc44777fe 16
el19zf 11:494cc44777fe 17 }
el19zf 11:494cc44777fe 18
el19zf 11:494cc44777fe 19 Interface::~Interface()
el19zf 11:494cc44777fe 20 {
el19zf 11:494cc44777fe 21
el19zf 11:494cc44777fe 22 }
el19zf 11:494cc44777fe 23
el19zf 11:494cc44777fe 24 void Interface::init()
el19zf 11:494cc44777fe 25 {
el19zf 11:494cc44777fe 26
el19zf 11:494cc44777fe 27 }
el19zf 11:494cc44777fe 28
el19zf 11:494cc44777fe 29
el19zf 11:494cc44777fe 30 void Interface::Welcome(N5110 &lcd,Gamepad &pad)
el19zf 11:494cc44777fe 31 {
el19zf 11:494cc44777fe 32 lcd.printString(" Welcome! ",0,1);
el19zf 11:494cc44777fe 33 lcd.printString(" Game by ",0,2);
el19zf 11:494cc44777fe 34 lcd.printString(" Z. FENG ",0,3);
el19zf 11:494cc44777fe 35 lcd.refresh();
el19zf 11:494cc44777fe 36 while (!pad.start_pressed())
el19zf 11:494cc44777fe 37 {
el19zf 11:494cc44777fe 38 pad.leds_on();
el19zf 11:494cc44777fe 39 wait(0.1);
el19zf 11:494cc44777fe 40 pad.leds_off();
el19zf 11:494cc44777fe 41 wait(0.1);
el19zf 11:494cc44777fe 42 }
el19zf 11:494cc44777fe 43 }
el19zf 11:494cc44777fe 44
el19zf 11:494cc44777fe 45 int Interface::menu(N5110 &lcd,Gamepad &pad,int option_flag)
el19zf 11:494cc44777fe 46 {
el19zf 11:494cc44777fe 47 while (!pad.A_pressed())
el19zf 11:494cc44777fe 48 {
el19zf 11:494cc44777fe 49 lcd.clear();
el19zf 11:494cc44777fe 50 lcd.printString(" MENU",0,0);
el19zf 11:494cc44777fe 51 lcd.printString(" Start",0,2);
el19zf 11:494cc44777fe 52 lcd.printString(" Start(Hell)",0,3);
el19zf 11:494cc44777fe 53 lcd.printString(" Exit",0,4);
el19zf 11:494cc44777fe 54 _d = pad.get_direction();
el19zf 11:494cc44777fe 55 if(_d == N){
el19zf 11:494cc44777fe 56 option_flag = fsm[option_flag].next_state[0];
el19zf 11:494cc44777fe 57 } else if(_d == S){
el19zf 11:494cc44777fe 58 option_flag = fsm[option_flag].next_state[1];
el19zf 11:494cc44777fe 59 }
el19zf 11:494cc44777fe 60 lcd.drawSprite(0,8*option_flag+18,3,2,(int*)pointer);
el19zf 11:494cc44777fe 61 lcd.refresh();
el19zf 11:494cc44777fe 62 pad.leds_on();
el19zf 11:494cc44777fe 63 wait(0.3);
el19zf 11:494cc44777fe 64 //printf("A_pressed\n");
el19zf 11:494cc44777fe 65 }
el19zf 11:494cc44777fe 66 return option_flag;
el19zf 11:494cc44777fe 67 }
el19zf 11:494cc44777fe 68
el19zf 11:494cc44777fe 69 void Interface::game_over(N5110 &lcd,Gamepad &pad)
el19zf 11:494cc44777fe 70 {
el19zf 11:494cc44777fe 71 lcd.clear();
el19zf 11:494cc44777fe 72 while(!pad.B_pressed()){
el19zf 11:494cc44777fe 73 lcd.printString(" Game over ",0,1);
el19zf 11:494cc44777fe 74 lcd.printString(" Press B to ",0,2);
el19zf 11:494cc44777fe 75 lcd.printString(" try again? ",0,3);
el19zf 11:494cc44777fe 76 lcd.refresh();
el19zf 11:494cc44777fe 77 wait(0.1);
el19zf 11:494cc44777fe 78 //printf("Not press B\n");
el19zf 11:494cc44777fe 79 }
el19zf 11:494cc44777fe 80 }
el19zf 11:494cc44777fe 81
el19zf 11:494cc44777fe 82 int Interface::check_pause(N5110 &lcd,Gamepad &pad,int paused_flag)
el19zf 11:494cc44777fe 83 {
el19zf 11:494cc44777fe 84 if(pad.start_pressed())
el19zf 11:494cc44777fe 85 paused_flag = 1;
el19zf 11:494cc44777fe 86 //printf("start press\n");
el19zf 11:494cc44777fe 87 while(paused_flag == 1){
el19zf 11:494cc44777fe 88 _timer.stop();
el19zf 11:494cc44777fe 89 lcd.printString("Paused",23,2);
el19zf 11:494cc44777fe 90 lcd.refresh();
el19zf 11:494cc44777fe 91 if(pad.start_pressed())
el19zf 11:494cc44777fe 92 paused_flag = 0;
el19zf 11:494cc44777fe 93 }
el19zf 11:494cc44777fe 94 _timer.start();
el19zf 11:494cc44777fe 95 return paused_flag;
el19zf 11:494cc44777fe 96 }
el19zf 11:494cc44777fe 97
el19zf 11:494cc44777fe 98 int Interface::count_down(N5110 &lcd,int count_flag)
el19zf 11:494cc44777fe 99 {
el19zf 11:494cc44777fe 100 char buffer[6];
el19zf 11:494cc44777fe 101 sprintf(buffer,"%d",(int)count_flag/6);
el19zf 11:494cc44777fe 102 lcd.printString(buffer,40,2);
el19zf 11:494cc44777fe 103 //printf("count: %d\n",count_flag);
el19zf 11:494cc44777fe 104 count_flag--;
el19zf 11:494cc44777fe 105 return count_flag;
el19zf 11:494cc44777fe 106 }
el19zf 11:494cc44777fe 107
el19zf 11:494cc44777fe 108 void Interface::exit(N5110 &lcd,Gamepad &pad)
el19zf 11:494cc44777fe 109 {
el19zf 11:494cc44777fe 110 lcd.clear();
el19zf 11:494cc44777fe 111 while(!pad.B_pressed()){
el19zf 11:494cc44777fe 112 lcd.printString(" Press B back ",0,2);
el19zf 11:494cc44777fe 113 lcd.printString(" to menu ",0,3);
el19zf 11:494cc44777fe 114 lcd.refresh();
el19zf 11:494cc44777fe 115 wait(0.1);
el19zf 11:494cc44777fe 116 }
el19zf 11:494cc44777fe 117 }
el19zf 11:494cc44777fe 118
el19zf 11:494cc44777fe 119 void Interface::victory(N5110 &lcd,Gamepad &pad)
el19zf 11:494cc44777fe 120 {
el19zf 11:494cc44777fe 121 lcd.clear();
el19zf 11:494cc44777fe 122 while(!pad.B_pressed()){
el19zf 11:494cc44777fe 123 lcd.printString(" Victory! ",0,1);
el19zf 11:494cc44777fe 124 lcd.printString(" Press B back ",0,2);
el19zf 11:494cc44777fe 125 lcd.printString(" to menu ",0,3);
el19zf 11:494cc44777fe 126 lcd.refresh();
el19zf 11:494cc44777fe 127 wait(0.1);
el19zf 11:494cc44777fe 128 }
el19zf 11:494cc44777fe 129 }