Timer problem

Thanks!
Problem solved like this:

#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()
{

  hit = 0;
  timeToCheck = millis();
  toc = analogRead(piezo);
  if (toc > minToc)
  {
    while (millis() - timeToCheck < 1000)
    {
      if (digitalRead(buttonServo) == HIGH)
      {
        goal();
      } 
    }
    if (hit == 0)
    {
      fail();
    }
  }
}

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

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