My Simon Code

I added a 5th button to reset the game.


//SIMON-SAY-STYLE GAME Step 2, YURY G. OCT 2012
//This code adds the feature of Simon Saying Something, With Time/Speed Game Mechanic, LEDs, and Sound.
//PINS ARE NOW DECLARED

//Check in real time each time user presses buttons against array = maybe easier?

//Button Pins
const int redButt = 11; // declare pins for buttons
const int yellButt = 10;
const int blueButt = 9;
const int greenButt = 8;
const int restartButt = 12;

//LED Pins
const int redLED = 7; // declare pins for LED's
const int yellLED = 6;
const int blueLED = 5;
const int greenLED = 4;

// Color Code we Use for R,Y,B,G and 1,2,3,4 repectfully
const int redValue = 1; // declare values for colors for buttons
const int yellValue = 2;
const int blueValue = 3;
const int greenValue = 4;

const int speakerPin = 2 ; //declare your speaker pin

boolean simonDone;
boolean gameOver = false;

#include "pitches.h"

int simonSays[99] ={
};

int numOfSteps = 0;
int userStep = 0;

int simonSpeed = 300;

int melody2[] = {
NOTE_F1, NOTE_C5,NOTE_C6};

int melody1[] = {
NOTE_F6, NOTE_C6,NOTE_C7};

void setup()
{

pinMode(redLED, OUTPUT); //Set Pin Mode
pinMode(yellLED, OUTPUT);
pinMode(blueLED, OUTPUT);
pinMode(greenLED, OUTPUT);
pinMode(speakerPin, OUTPUT); // set speaker to output

pinMode(redButt, INPUT_PULLUP);
pinMode(yellButt, INPUT_PULLUP);
pinMode(blueButt, INPUT_PULLUP);
pinMode(greenButt, INPUT_PULLUP);
pinMode(restartButt, INPUT_PULLUP);

Serial.begin(9600);
randomSeed(analogRead(0));

startUP2();
}

void loop () {
if (gameOver == false) {
if (simonDone == false)
{
simonSays[numOfSteps] = random(1,5) ;

Serial.print("numOfSteps: " );
Serial.println(numOfSteps);

Serial.print("simonSpeed: " ); // Show how the new time feature works
Serial.println(simonSpeed); // Show how the new time feature works

Serial.print("simonSays: ");

for (int i =0; i numOfSteps) {
simonDone = false;
numOfSteps++;
userStep = 0;
}
}
else if (_userColor != simonSays[userStep]) {
digitalWrite(redLED, HIGH);
digitalWrite(yellLED, HIGH);
digitalWrite(blueLED, HIGH);
digitalWrite(greenLED, HIGH);
delay(500);
digitalWrite(redLED, LOW);
digitalWrite(yellLED, LOW);
digitalWrite(blueLED, LOW);
digitalWrite(greenLED, LOW);

for (int i = 0; i < 3; i++) {
tone(speakerPin, melody2[i]);
delay(100);
}
noTone(speakerPin);

delay(1000);
//Serial.print("you lose!");
}

else if (userStep < numOfSteps) {
numOfSteps = 0;
userStep = 0;
simonDone = false;
}

}

void startUP2() {
digitalWrite(redLED, HIGH);
delay(50);
digitalWrite(redLED, LOW);
delay(50);
digitalWrite(yellLED, HIGH);
delay(50);
digitalWrite(yellLED, LOW);
delay(50);
digitalWrite(blueLED, HIGH);
delay(50);
digitalWrite(blueLED, LOW);
delay(50);
digitalWrite(greenLED, HIGH);
delay(50);
digitalWrite(greenLED, LOW);

for (int i = 0; i < 3; i++) {
tone(speakerPin, melody1[i]);
delay(100);
}
noTone(speakerPin);
delay(500);

simonDone = false;
numOfSteps = 0;
//userStep = 0;
}