contains my game for the embedded systems project 2645

Dependencies:   mbed FXOS8700CQQQ

GameMenus/Menus.cpp

Committer:
OmarAlebiary
Date:
2019-04-29
Revision:
32:e5d997d2ed79
Parent:
31:4d4a9d78cae5
Child:
33:24ef796ff2c8

File content as of revision 32:e5d997d2ed79:

#include "Menus.h"



Menus::Menus(){
}
Menus::~Menus(){
}
void Menus::welcomeMenu(Gamepad &pad,N5110 &lcd) {
    
    lcd.printString(" Rocket Racer   ",0,0);  
    
    lcd.drawSprite(25,8,11,9,(int *)enemyMainMenu);
    lcd.drawSprite(45,15,11,9,(int *)enemyMainMenu);
    lcd.drawSprite(35,31,11,9,(int *)rocketMainMenu);
    lcd.drawLine(20, 10, 20,45,1);
    lcd.drawLine(22, 10, 22,45,2);
    lcd.drawLine(57, 10, 57,45,1);
    lcd.drawLine(55, 10, 55,45,2);
    
    pad.leds_on();//turns all leds on
    lcd.refresh();
    tone.Play_Welcome_Melody(pad);
    wait(1); 
 
}


void Menus::drawMenu(N5110 &lcd,Gamepad &pad) {
  
  lcd.clear();
  lcd.printString("MAIN MENU", 15, 0);
  lcd.drawLine(1, 10,80 ,10,1);
  lcd.printString("Play       -A", 2, 2);
  lcd.printString("Play /acc  -Y", 2, 3);
  lcd.printString("Instructions-B", 1, 4);
  lcd.printString("Credits    - X", 1, 5);
  pad.leds_off();
  wait(0.1);
  pad.leds_on(); 
  wait(0.1);
  lcd.refresh();
  
  check_button_pressed(pad,lcd);
          
}


void Menus::check_button_pressed(Gamepad &pad,N5110 &lcd){  
    if (pad.check_event(Gamepad::A_PRESSED) == true){
      pad.leds_off();
      while(1){
        Rocket_Race.Game_Loop(lcd,pad);
        }
    }else if (pad.check_event(Gamepad::B_PRESSED) == true){
      InstructionsMenu(pad,lcd);
      if (pad.check_event(Gamepad::BACK_PRESSED) == true){
      drawMenu(lcd,pad);
        }
    }else if (pad.check_event(Gamepad::Y_PRESSED) == true){
      pad.leds_off();
      while(1){
        Rocket_Race.Game_Loop_accelerometer(lcd,pad);
        }
    }else if (pad.check_event(Gamepad::X_PRESSED) == true){
      credits(lcd,pad);
      if (pad.check_event(Gamepad::BACK_PRESSED) == true){
      drawMenu(lcd,pad);
        }
      }    
    }


void Menus::credits(N5110 &lcd,Gamepad &pad) {
  
  lcd.clear();
  
  lcd.printString("Game By:", 8, 1);
  lcd.printString("Omar Alebiary", 7, 2);
  lcd.printString("ID: 201172644", 7, 3);
  
  lcd.printString("< press BACK ", 12, 5);
   
  lcd.refresh();
  wait(0.5);
  while ( pad.check_event(Gamepad::BACK_PRESSED) == false){//keep looping since back not pressed
        pad.leds_on();//turn all leds on
        wait(0.1);
        pad.leds_off();//turn all leds off
        wait(0.1);        
    }
  
}


void Menus::loading_menu(N5110 &lcd) {
  lcd.clear();
  lcd.printString("loading...", 2, 1);
  
  lcd.drawLine(7, 20,12 ,20,1);
  lcd.refresh();
  wait(0.6); 
  lcd.drawLine(7, 20,24 ,20,1);
  lcd.refresh();
  wait(0.5);
  lcd.drawLine(7, 20,34 ,20,1);
  lcd.refresh();
  wait(0.6); 
  lcd.drawLine(7, 20,44,20,1);
  lcd.refresh();
  wait(0.2);
  lcd.drawLine(7, 20,65 ,20,1);
  lcd.refresh();
  wait(0.2);
}

void Menus::SecondInstructionsMenu(N5110 &lcd){
    lcd.clear();
    lcd.printString("U can also use",0,0); 
    lcd.printString("accelormeter",0,1);
    lcd.printString("to control ",0,2);
    lcd.printString("the rocket ",0,3);
    
    lcd.printString("< press BACK ", 12, 5);
    lcd.refresh();
}
      
void Menus::InstructionsMenu(Gamepad &pad,N5110 &lcd){
    
    lcd.clear();
    lcd.printString("How to play:",0,0); 
    lcd.printString("Use joystick",0,1);
    lcd.printString("or L & R",0,2);
    lcd.printString("to escape ",0,3);
    lcd.printString("enemies.",0,4);
    lcd.refresh();
    wait(3);
    SecondInstructionsMenu(lcd);
    
    lcd.refresh();
    wait(1);
    while ( pad.check_event(Gamepad::BACK_PRESSED) == false){//keep looping since back not pressed
        pad.leds_on();//turn all leds on
        wait(0.1);
        pad.leds_off();//turn all leds off
        wait(0.1);
        
    }      
}