This is the Mexican Standoff prototype made by Francisco Martin and Andrew Smith. Please refer to the following link for instructions on hardware hookup: https://developer.mbed.org/users/fomartin/notebook/mexican-standoff-reaction-game/

Dependencies:   SDFileSystem mbed-rtos mbed wave_player 4DGL-uLCD-SE PinDetect

main.cpp

Committer:
fomartin
Date:
2016-03-14
Revision:
2:3c1a5079243d
Parent:
1:4976bbb3376f

File content as of revision 2:3c1a5079243d:

#include "States.h"
#include "mbed.h"

//button setup using PinDetect
//  button is pushed -> false
//  button is not pushed -> true
PinDetect P1_LeftButton(p15, PullUp);
PinDetect P1_RightButton(p16, PullUp);
PinDetect P2_LeftButton(p26, PullUp);
PinDetect P2_RightButton(p29, PullUp);

//LCD setup
uLCD_4DGL uLCD(p28, p27, p21); // serial tx, serial rx, reset pin;

//speaker setup
AnalogOut speaker(p18);
wave_player waver(&speaker);

//states enum
enum StateType{MainMenu, HowTo, SinglePlayerGame, TwoPlayerGame, EndScreen};
StateType state = MainMenu;


SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card

//member variables
int option;
int points;

DigitalOut led1(LED1);

main()
{        
    Music music(waver);
    
    //LCD setup
    uLCD.display_control(PORTRAIT_R);
    uLCD.baudrate(BAUD_3000000);        //jack up baud rate to max for fast display   
    uLCD.background_color(BLACK);
    uLCD.cls();
    
    music.playMainMusic();
    
    while(true)
    {
        switch(state)
        {
            case(MainMenu):
            {   
                // Set-Up Main Menu
                Startup startup(uLCD, P1_LeftButton, P1_RightButton, P2_LeftButton, P2_RightButton);
                //startup.scores(uLCD, sd);
                option = startup.select(uLCD, P1_LeftButton, P1_RightButton, P2_LeftButton, P2_RightButton, music);
                if(option == 0)
                    state =  SinglePlayerGame;
                if(option == 1)
                    state =  TwoPlayerGame;
                if(option == 2)
                    state = HowTo;
                break;
            }
            case(HowTo):
            {
                Rules rules(uLCD, P1_LeftButton, P1_RightButton, P2_LeftButton, P2_RightButton);
                state = MainMenu;
                break;
            }
            case(SinglePlayerGame):
            {
                //after gameplay returns, we can use gameplay.getWinningPlayer() to find out who won.
                //this gets passed to the GameOver to display the correct winner on the screen
                Gameplay gameplay(uLCD, 1, P1_LeftButton, P1_RightButton, P2_LeftButton, P2_RightButton);
                GameOver gameover(uLCD, P1_LeftButton, P1_RightButton, P2_LeftButton, P2_RightButton, gameplay.getWinningPlayer());
                state = MainMenu;
                break;
            }
            case(TwoPlayerGame):
            {
                Gameplay gameplay(uLCD, 2, P1_LeftButton, P1_RightButton, P2_LeftButton, P2_RightButton);
                GameOver gameover(uLCD, P1_LeftButton, P1_RightButton, P2_LeftButton, P2_RightButton, gameplay.getWinningPlayer());
                state = MainMenu;
                break;
            }
        }//end switch
    }//end while    
}//end main