Dependencies:   mbed

On Minerva

Revision:
11:494cc44777fe
Child:
12:009895f6b6e4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Interface/Interface.cpp	Mon May 11 09:09:31 2020 +0000
@@ -0,0 +1,129 @@
+#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()
+{
+    
+}
+
+
+void Interface::Welcome(N5110 &lcd,Gamepad &pad)
+{
+    lcd.printString("   Welcome!   ",0,1);
+    lcd.printString("   Game by    ",0,2);
+    lcd.printString("   Z. FENG    ",0,3);
+    lcd.refresh();
+    while (!pad.start_pressed()) 
+    {
+        pad.leds_on();
+        wait(0.1);
+        pad.leds_off();
+        wait(0.1);
+    }
+}
+
+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){
+            option_flag = fsm[option_flag].next_state[0];
+        } else if(_d == S){
+            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");
+    }  
+    return option_flag;          
+}
+
+void Interface::game_over(N5110 &lcd,Gamepad &pad)
+{
+    lcd.clear();
+    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");
+    }
+}
+
+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();
+    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();
+    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);
+    }
+}
\ No newline at end of file