Timer problem

#include <Servo.h>
Servo servo;
const unsigned int piezo = A0;
const unsigned int buttonServo = 7;
const unsigned int greenLed = 8;
const unsigned int redLed = 10;
const unsigned int angleDown = 95;
const unsigned int angleTop = 0;
unsigned long timeToCheck;
unsigned int minToc = 100;
unsigned int toc;
boolean hit = 0;

void setup()
{
  servo.attach(9);
  pinMode(buttonServo, INPUT);
  pinMode(redLed, OUTPUT);
  pinMode(greenLed, OUTPUT);
  Serial.begin(9600); //debug
}

void loop()
{
  timeToCheck = millis();
  toc = analogRead(piezo);
  if (toc > minToc)
    {
    check();
    while (millis() - timeToCheck < 1000);
    
    if (hit == 0)
    {
      fail();
    }
  }

  
}

void check()
{
 if (digitalRead(buttonServo) == HIGH)
 {
   but();
  } 
}


void but()
{
  hit = 1;
  digitalWrite(greenLed, HIGH);
  Serial.println("BING!");
  servo.write(angleTop);
  delay(200);
  servo.write(angleDown);
  delay(1500); //random?
  digitalWrite(greenLed, LOW);
  hit = 0;
}

void fail()
{
  Serial.println("FAIL :(");
  digitalWrite(redLed, HIGH);
  delay(1700);
  digitalWrite(redLed, LOW);  
}