int last_debounce_time[8] = { 0, 0, 0, 0, 0, 0, 0, 0 };
int? Time is ALWAYS stored in an unsigned long.
int buttons_state[8];
int buttons_last_state[8] = { LOW, LOW, LOW, LOW, LOW, LOW, LOW, LOW };
int? To hold HIGH or LOW?
You really need to spend some time learning what appropriate types to use.
for(int i = 0;i<num_buttons;i++)
{
Serial.print(buttons_state[i]);
}
Serial.println("");
delay(1);
By the time this gets done, your switches will be done bouncing. Why you think you need more code to deal with bouncing is a mystery that we (i.e. you) need to solve first.