Simon Says

Here is my Simon Says game!!

 

 

 

<p><a

AND THE CODE:::

//buttons
const int greenSwitch = 10; //green
const int blueSwitch = 8;//blue
const int redSwitch = 4;//red
const int yellowSwitch = 6;//yellow

//leds
const int greenLED = 9;
const int blueLED = 7;
const int redLED = 3;
const int yellowLED = 5;

//values
//const int greenValue=1; // declare values for colors for buttons
//const int blueValue=2;
//const int redValue=3;
//const int yellowValue=4;

const int redValue = 1; // declare values for colors for buttons
const int yellowValue = 2;
const int blueValue = 3;
const int greenValue = 4;

const int speakerPin = 2;

int playerSays=0;//value to hold user imput
int playerStep=0;//user step counter;

boolean simonDone;
int simonSays[99]={
};// array that holds simon’s sequence, allows for 99 steps
int nextStep = 0; //var that counts how many steps in simon’s current sequence, used to move up in steps
int simonSpeed = 500;

void setup () {
Serial.begin(9600);
//Serial.println(“Try to Guest the Contents of simonArray, try a number between 1-4!”);

pinMode(greenLED, OUTPUT);
pinMode(blueLED, OUTPUT);
pinMode(redLED, OUTPUT);
pinMode(yellowLED, OUTPUT);
pinMode(speakerPin, OUTPUT);

pinMode(greenSwitch, INPUT_PULLUP); //set pull-up resistors on Buttons, So closing the switch will bring Pin to Ground.
pinMode(blueSwitch, INPUT_PULLUP);
pinMode(redSwitch, INPUT_PULLUP);
pinMode(yellowSwitch, INPUT_PULLUP);

randomSeed(analogRead(0)); //seed makes more random

}

void loop () {

if (simonDone ==false) { //did simon play sequence yet? bool is false by default

simonSays[nextStep] = random (1,5);

// Serial.println(“simonDone ==false”);
Serial.print(“nextStep: “); ///just to see whats happening
Serial.println(nextStep);
Serial.print(“simonSays: “);

// 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 <=nextStep; i++) {
Serial.print(simonSays[i]); //to see count
Serial.print(",");
delay(simonSpeed);//controls speed that simonSays something

ToneAndLight(simonSays[i]);
}

//simonSpeed=(simonSpeed-(nextStep*5)); //THis speeds up simon on each turn by formula (500-(nextStep*5)
//Change the multiplier (5 here) to make game faster or slower
//multiplier=MAJOR factor in how hard game is

simonSpeed=max(simonSpeed, 200);//max() assigns simonTime to the larger of simonTime or 200 in this case
//Sets Simon's top speed. Also important in making game interesting yet winable

simonDone=true; //ok, simon done, set to true
//Serial.println(" ");
nextStep++; //add another to simon's sequence
playerStep=0; //make user step from first step
}

if (simonDone==true) {

if (playerStep =nextStep) {

simonDone=false; //user completeed successfully, give simon next turn
// nextStep++; //add another step to simons sequence
}

}
}

if(color == 1) // 1 = Red
{
digitalWrite( redLED,HIGH);
tone(speakerPin,1000);
delay(simonSpeed);
digitalWrite( redLED,LOW);
noTone(speakerPin);
}

if(color == 2)
{
digitalWrite( yellowLED,HIGH);
tone(speakerPin,2000);
delay(simonSpeed);
digitalWrite( yellowLED,LOW);
noTone(speakerPin);
}

if(color == 3)
{
digitalWrite( blueLED,HIGH);
tone(speakerPin,3000);
delay(simonSpeed);
digitalWrite( blueLED,LOW);
noTone(speakerPin);
}

if(color == 4)
{
digitalWrite( greenLED,HIGH);
tone(speakerPin,4000);
delay(simonSpeed);
digitalWrite( greenLED,LOW);
noTone(speakerPin);
}
}
void youLose() {
//LOSE SOUND #4*****

// tone(speakerPin,200);
// delay(400);
// tone(speakerPin,100);
// delay(600);
// tone(speakerPin,50);
// delay(1500); ///play with dealy “ratio”
// noTone(speakerPin);

for (int y=200; y>80; y-=50){

tone(speakerPin, y);
delay(150); ///play with dealy “ratio”
tone(speakerPin , (y-30));
delay(100);
noTone(speakerPin);
delay(50);

}

nextStep = 0;
playerStep = 0;
simonSpeed = 400;
simonDone = false;

delay(1500);
restartSeq();

delay(1500);

}

///DONT USE YET

void restartSeq(){

tone(speakerPin,600);//800
delay(100);
digitalWrite(redLED,HIGH);
digitalWrite(yellowLED,HIGH);
digitalWrite(blueLED,HIGH);
digitalWrite(greenLED,HIGH);
tone(speakerPin,700);//850
delay(100);

digitalWrite(redLED,LOW);
tone(speakerPin,900);
delay(400);

digitalWrite(yellowLED,LOW);
tone(speakerPin,1000);
delay(300);

digitalWrite(blueLED,LOW);
tone(speakerPin,2000);
delay(250);

digitalWrite(greenLED,LOW);
tone(speakerPin,3000);
delay(200);

noTone(speakerPin);

}