for(x=0; x<9; x++){
if(oldstate[x] != state[x]){ //If these new states are different then the old ones
if(state[x] == HIGH)
{
attempt[x] = buttons[x]; //Set attempt (Just first index for now) to buttons pressed
attempt does not have 9 elements...
for(x=0; x<2; x++){
if(attempt[0] == pass[0]){
Correct();
}
}
You are checking that the first element in each array matches twice. Not exactly what you want to do, is it?
if ((millis() - time) > 5000){
for(x=0;x<1;x++){
attempt[x] = 0;
}
}
How many times is that loop going to execute?