- Home /
Loop Through Entire Array - Simon Game
I'm trying to make a Simon Says type game and I'm storing all of Simons random color choices and integers in an array. I have it working so that Simon makes a choice, pushes that choice into an array and then I loop through the entire array. The problem I'm having is that even though the values I'm storing in the array are correct (I'm printing them to be sure), when I itterate through the array it plays the same square back. Here's what I have. I'm sure it's problem with for (var storedSquare in simonArray)
.
#pragma strict
var greenSquare : GameObject;
var redSquare : GameObject;
var blueSquare : GameObject;
var orangeSquare : GameObject;
var chosenSquare : GameObject;
static var simonStoredColor : String;
var beforeGameWait : float = .75;
var betweenSimonChoiceWait : float = .75;
var afterSimonsTurnWait : float = .75;
var simonArray = Array ();
function Start ()
{
ClickHandler.waitingForPlayer = false;
simonArray.length = 0;
pickRandomSquare();
}
function Update()
{
}
function pickRandomSquare ()
{
yield WaitForSeconds(beforeGameWait);
var randomSquare : int = Random.Range(1, 5);
simonArray.Push(randomSquare);
for (var storedSquare in simonArray)
{
yield WaitForSeconds(betweenSimonChoiceWait);
if (randomSquare == 1)
{
chosenSquare = greenSquare;
chosenSquare.renderer.enabled = true;
simonStoredColor = "Green";
chosenSquare.audio.Play();
}
if (randomSquare == 2)
{
chosenSquare = redSquare;
chosenSquare.renderer.enabled = true;
simonStoredColor = "Red";
chosenSquare.audio.Play();
}
if (randomSquare == 3)
{
chosenSquare = blueSquare;
chosenSquare.renderer.enabled = true;
simonStoredColor = "Blue";
chosenSquare.audio.Play();
}
if (randomSquare == 4)
{
chosenSquare = orangeSquare;
chosenSquare.renderer.enabled = true;
simonStoredColor = "Orange";
chosenSquare.audio.Play();
}
print(simonArray);
yield WaitForSeconds(afterSimonsTurnWait);
chosenSquare.renderer.enabled = false;
}
ClickHandler.waitingForPlayer =true;
}
Answer by imnickb · Apr 10, 2013 at 02:06 PM
I got it... I was iterating through the array and calling each value pulled out of the array storedSquare. But then I doing my if check against the variable randomSquare, which is the random value that simon just came up with with, which is going to be the same value because simon just generated it and nothings changed it since then. I anybody stumbles upon this question and is having the same trouble I was, here's my new script:
#pragma strict
var greenSquare : GameObject;
var redSquare : GameObject;
var blueSquare : GameObject;
var orangeSquare : GameObject;
var chosenSquare : GameObject;
var beforeGameWait : float = .75;
var betweenSimonChoiceWait : float = .75;
var afterSimonsTurnWait : float = .75;
var simonArray = Array ();
function Start ()
{
ClickHandler.waitingForPlayer = false;
simonArray.length = 0;
pickRandomSquare();
}
function Update()
{
}
function pickRandomSquare ()
{
yield WaitForSeconds(beforeGameWait);
var randomSquare : int = Random.Range(1, 5);
simonArray.Push(randomSquare);
for (var storedSquare in simonArray)
{
yield WaitForSeconds(betweenSimonChoiceWait);
if (storedSquare == 1)
{
chosenSquare = greenSquare;
}
if (storedSquare == 2)
{
chosenSquare = redSquare;
}
if (storedSquare == 3)
{
chosenSquare = blueSquare;
}
if (storedSquare == 4)
{
chosenSquare = orangeSquare;
}
chosenSquare.renderer.enabled = true;
chosenSquare.audio.Play();
print(simonArray);
yield WaitForSeconds(afterSimonsTurnWait);
chosenSquare.renderer.enabled = false;
}
ClickHandler.waitingForPlayer =true;
}