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;
}
Reply