I'm trying to understand what you are referring too. That is the entire processing code. Ill give it again with the brackets:
void setup() {
println(Serial.list());
}
void draw(){
if (key == 'a'){
port.write(1);
}
if (key == 'w'){
port.write(2);
}
if (key == 'd'){
port.write(3);
}
if (key == 's'){
port.write(4);
}
}
Here is the adruino code as well...
int duration2[] = {100, 200, 100, 200, 100, 400, 100, 100, 100, 100, 200, 100, 500};
int duration[] = {100, 100, 100, 300, 100, 300};
boolean ledpin[] = {9, 10, 11, 12}; // LED pins
int turn = 0; // turn counter
int randomArray[100]; //Intentionally long to store up to 100 inputs (doubtful anyone will get this far)
int inputArray[100];
int incomingByte;
int keystate = 0;
void setup()
{
Serial.begin(9600);
for(int x=0; x<4; x++) // LED pins are outputs
{
pinMode(ledpin[x], OUTPUT);
}
randomSeed(analogRead(0)); //Added to generate "more randomness" with the randomArray for the output function
}
void loop()
{
if (Serial.available() > 0) {
incomingByte = Serial.read();
}
for (int y=0; y<=99; y++)
{
//function for generating the array to be matched by the player
digitalWrite(ledpin[0], HIGH);
digitalWrite(ledpin[1], HIGH);
digitalWrite(ledpin[2], HIGH);
digitalWrite(ledpin[3], HIGH);
delay(25);
}
digitalWrite(ledpin[0], LOW);
digitalWrite(ledpin[1], LOW);
digitalWrite(ledpin[2], LOW);
digitalWrite(ledpin[3], LOW);
delay(1000);
for (int y=turn; y <= turn; y++)
{ //Limited by the turn variable
//Serial.println(""); //Some serial output to follow along
//Serial.print("Turn: ");
//Serial.print(y);
//Serial.println("");
randomArray[y] = random(1, 5); //Assigning a random number (1-4) to the randomArray[y], y being the turn count
for (int x=0; x <= turn; x++)
{
Serial.print(randomArray[x]);
for(int y=0; y<4; y++)
{
if (randomArray[x] == 1 && ledpin[y] == 9)
{ //if statements to display the stored values in the array
digitalWrite(ledpin[y], HIGH);
delay(400);
digitalWrite(ledpin[y], LOW);
delay(100);
}
if (randomArray[x] == 2 && ledpin[y] == 10)
{
digitalWrite(ledpin[y], HIGH);
delay(400);
digitalWrite(ledpin[y], LOW);
delay(100);
}
if (randomArray[x] == 3 && ledpin[y] == 11)
{
digitalWrite(ledpin[y], HIGH);
delay(400);
digitalWrite(ledpin[y], LOW);
delay(100);
}
if (randomArray[x] == 4 && ledpin[y] == 12)
{
digitalWrite(ledpin[y], HIGH);
delay(400);
digitalWrite(ledpin[y], LOW);
delay(100);
}
}
}
}
input();
}
void input() { //Function for allowing user input and checking input against the generated array
for (int x=0; x <= turn;)
{ //Statement controlled by turn count
for(int y=0; y<4; y++)
{
if (Serial.available() > 0) {
// keystate = 1 - keystate;
}
if (keystate == LOW && incomingByte == 1)
{ //Checking for button push
digitalWrite(ledpin[0], HIGH);
delay(200);
digitalWrite(ledpin[0], LOW);
inputArray[x] = 1;
delay(250);
//Serial.print(" ");
//Serial.print(1);
if (inputArray[x] != randomArray[x]) { //Checks value input by user and checks it against
fail(); //the value in the same spot on the generated array
} //The fail function is called if it does not match
x++;
}
if (keystate == LOW && incomingByte == 2)
{
digitalWrite(ledpin[1], HIGH);
delay(200);
digitalWrite(ledpin[1], LOW);
inputArray[x] = 2;
delay(250);
//Serial.print(" ");
//Serial.print(2);
if (inputArray[x] != randomArray[x]) {
fail();
}
x++;
}
if (keystate == LOW && incomingByte == 3)
{
digitalWrite(ledpin[2], HIGH);
delay(200);
digitalWrite(ledpin[2], LOW);
inputArray[x] = 3;
delay(250);
//Serial.print(" ");
//Serial.print(3);
if (inputArray[x] != randomArray[x]) {
fail();
}
x++;
}
if (keystate == LOW && incomingByte == 4)
{
digitalWrite(ledpin[3], HIGH);
delay(200);
digitalWrite(ledpin[3], LOW);
inputArray[x] = 4;
delay(250);
//Serial.print(" ");
//Serial.print(4);
if (inputArray[x] != randomArray[x])
{
fail();
}
x++;
}
}
}
delay(500);
turn++; //Increments the turn count, also the last action before starting the output function over again
}
void fail() { //Function used if the player fails to match the sequence
for (int y=0; y<=2; y++)
{ //Flashes lights for failure
digitalWrite(ledpin[0], HIGH);
digitalWrite(ledpin[1], HIGH);
digitalWrite(ledpin[2], HIGH);
digitalWrite(ledpin[3], HIGH);
delay(200);
digitalWrite(ledpin[0], LOW);
digitalWrite(ledpin[1], LOW);
digitalWrite(ledpin[2], LOW);
digitalWrite(ledpin[3], LOW);
delay(200);
}
delay(500);
turn = -1; //Resets turn value so the game starts over without need for a reset button
}
This is the first time I am posting anything so please forgive me for any misunderstanding.
Let me know if I am missing anything else. Thank you.