ssd

Dependents:   Starwars

sdasdsad

Files at this revision

API Documentation at this revision

Comitter:
mrkang
Date:
Mon Apr 27 14:04:10 2020 +0000
Commit message:
Star

Changed in this revision

Menu.cpp Show annotated file Show diff for this revision Revisions of this file
Menu.h Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Menu.cpp	Mon Apr 27 14:04:10 2020 +0000
@@ -0,0 +1,206 @@
+#include "Menu.h"
+Menu::Menu(){
+    mode = 0;
+}
+Menu::~Menu(){
+
+}
+void Menu::welcome(N5110 &lcd,BusOut &output,Sound &sound)
+{
+    lcd.printString(" Star War ",0,1);
+    lcd.refresh();
+    drawEverything(lcd);
+    lcd.refresh();
+    output=0b000000;
+    sound.welcome();
+    output=0b111111;
+    lcd.clear();
+}
+void Menu::over(N5110 &lcd,BusOut &output)
+{
+    lcd.printString("Game Over!",0,1);
+    lcd.printString("Press Start",0,4);
+    lcd.refresh();
+    wait(1.0f);
+    output=0b000000;
+    wait(1.0f);
+    output=0b111111;
+    lcd.clear();
+}
+void Menu::menu(N5110 &lcd,InterruptIn &buttonA,InterruptIn &buttonY,InterruptIn &buttonX,InterruptIn &buttonB,InterruptIn &start,int *score,int n)
+{
+    lcd.refresh();
+    while(1){
+        lcd.printString("Start Start",0,0);
+        lcd.printString("A Ranking",0,2);
+        lcd.printString("X Select Mode",0,3);
+        lcd.printString("B Rules",0,4);
+        lcd.printString("Y Store",0,5);
+        lcd.refresh();
+        
+        if(buttonA){
+            wait(0.5f);
+            lcd.clear();
+            ranking(lcd,score,n,buttonA);
+            }else if(start){
+                lcd.clear();
+                break;
+            }else if(buttonX){
+                wait(0.5f);
+                lcd.clear();
+                setMode(lcd,buttonA,buttonY,buttonX);
+            }else if(buttonB){
+                wait(0.5f);
+                lcd.clear();
+                rules(lcd,buttonB);
+            }else if(buttonY){
+                wait(0.5f);
+                lcd.clear();
+                store(lcd,buttonY);
+            }
+        }
+    }
+void Menu::setMode(N5110 &lcd,InterruptIn &buttonA,InterruptIn &buttonY,InterruptIn &buttonX){
+                lcd.refresh();
+                while(1){
+                    lcd.printString("Y Easy",0,1);
+                    lcd.printString("A Normal",0,2);
+                    lcd.printString("X Hard",0,3);
+                    lcd.refresh();
+                    
+                if(buttonA){
+                    mode = 1;
+                    wait(0.5f);
+                    lcd.clear();
+                    break;
+                }
+            }
+        }
+int Menu::getMode(){
+        return mode;
+    }
+void Menu::ranking(N5110 &lcd,int *score,int n,InterruptIn &buttonA){
+        while(1){
+            for(int i = 0;i<n;i++){
+                char buffer[10];
+                sprintf(buffer,"%d.%d",i+1,score[i]);
+                lcd.printString(buffer,0,i+1);
+            }
+            lcd.printString("Press A to return",0,5);
+            lcd.refresh();
+            if(buttonA) {
+                lcd.clear();
+                wait(0.5f);
+                return;
+            }
+        }
+    }
+void Menu::displayCurScore(N5110 &lcd,int score) {
+        char buffer[4];
+        sprintf(buffer,"%d",score);
+        lcd.printString(buffer,0,0);
+    }
+void Menu::drawEverything(N5110 &lcd){
+        int enemy[60] = {
+            0,0,1,1,1,1,1,1,1,1,0,0,
+            0,1,1,1,1,1,1,1,1,1,1,0,
+            1,1,1,1,0,1,1,0,1,1,1,1,
+            0,1,1,1,1,1,1,1,1,1,1,0,
+            0,0,1,1,1,1,1,1,1,1,0,0 };
+        Bitmap sprite(enemy,5,12);
+        sprite.render(lcd,64,30);
+        
+        int bullet[15] = {
+            0,0,0,1,0,
+            1,1,1,1,1,
+            0,0,0,1,0 };
+        Bitmap spritel(bullet,3,5);
+        spritel.render(lcd,40,32);
+        
+        int _Plane[] = {
+            0,0,0,1,0,0,0,0,0,0,
+            0,0,0,1,1,1,0,0,0,0,
+            0,0,0,1,1,1,0,0,0,0,
+            1,1,1,1,1,1,1,1,1,0,
+            0,0,1,1,1,1,1,0,1,1,
+            1,1,1,1,1,1,1,1,1,0,
+            0,0,0,0,0,0,0,0,0,0,
+            0,0,0,0,0,0,0,0,0,0,
+            0,0,0,0,0,0,0,0,0,0,
+            0,0,0,0,0,0,0,0,0,0 };
+            
+            Bitmap sprite2(_Plane,10,10);
+            sprite2.render(lcd,9,28);
+        }
+void Menu::rules(N5110 &lcd,InterruptIn &buttonB) {
+    while(1){
+        lcd.clear();
+        lcd.printString("X fire bullet",0,0);
+        lcd.printString("Joystick move",0,1);
+        lcd.printString("Mission",0,2);
+        lcd.printString("Destroy enemy",0,3);
+        lcd.printString("Press B return",0,5);
+        lcd.refresh();
+        if(buttonB){
+            lcd.clear();
+            wait(0.5f);
+            return;
+        }
+    }
+}
+int Menu::again(N5110 &lcd,int score,InterruptIn &buttonX, InterruptIn &buttonY){
+    
+    lcd.clear();
+    while(1){
+        if(score>10){
+            lcd.printString("Play Again?",0,0);
+            lcd.printString("Price :10",0,2);
+            lcd.printString("X Yes",0,3);
+            lcd.printString("Y Not",0,4); 
+            lcd.refresh();
+            if(buttonX){
+                wait(0.5f);
+                lcd.clear();
+                return -10;
+            }else if(buttonY){
+                wait(0.5f);
+                lcd.clear();
+                return 0;
+            }
+        }else{
+            lcd.printString("Fail!",0,1);
+            lcd.printString("Press Y return",0,2);
+            lcd.refresh();
+            if(buttonY){
+                wait(0.5f);
+                lcd.clear();
+                return 0;
+                }
+            }
+        }
+}
+
+void Menu::store(N5110 &lcd,InterruptIn &buttonY) {
+    while(1) {
+        lcd.clear();
+        int _heart[] = {
+            0,1,0,0,0,1,0,
+            1,1,1,0,1,1,1,
+            1,1,1,1,1,1,1,
+            1,1,1,1,1,1,1,
+            0,1,1,1,1,1,0,
+            0,0,1,1,1,0,0,
+            0,0,0,1,0,0,0 };
+            Bitmap sprite3(_heart,7,7);
+            sprite3.render(lcd,38,5);
+            lcd.refresh();
+            lcd.printString("In development",0,2);
+            lcd.printString("Press Y return",0,5);
+            lcd.refresh();
+            if(buttonY) {
+                lcd.clear();
+                wait(0.5f);
+                return;
+            }
+        }
+    }
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Menu.h	Mon Apr 27 14:04:10 2020 +0000
@@ -0,0 +1,29 @@
+#ifndef Menu_H
+#define Menu_H
+#include "mbed.h"
+#include "N5110.h"
+#include "Joystick.h"
+#include "Bitmap.h"
+#include "Sound.h"
+
+class Menu{
+public:
+    Menu();
+    ~Menu();
+    void welcome(N5110 &lcd,BusOut &output,Sound &sound);
+    void over(N5110 &lcd,BusOut &output);
+    void menu(N5110 &lcd,InterruptIn &buttonA,InterruptIn &buttonY,InterruptIn &buttonX,InterruptIn &buttonB,InterruptIn &start,int *score,int n);
+    void ranking(N5110 &lcd,int *scroe,int n,InterruptIn &buttonA);
+    void displayCurScore(N5110 &lcd,int scroe);
+    void drawEverything(N5110 &lcd);
+    void setMode(N5110 &lcd,InterruptIn &buttonA,InterruptIn &buttonY,InterruptIn &buttonX);
+    void rules(N5110 &lcd,InterruptIn &buttonB);
+    void store(N5110 &lcd,InterruptIn &buttonY);
+    int getMode();
+    int again(N5110 &lcd,int scroe,InterruptIn &buttonX,InterruptIn &buttonY);
+private:
+    int mode;
+};
+#endif
+
+ 
\ No newline at end of file