С++,стрельба из танка

С++ ,стрельба из танка
Как сделать правильно проверку , что бы снаряд стрелял по нажатию каждый раз клавиши выстрел, а не так что бы все пять снарядов сразу вылетало.
Есть массив объектов класса Gun . Gun *fire = new Gun[5]; поле, для проверки bool flying = true;
метод Gun::bullet(); где прорисовывается сам снаряд:

void Gun::bullet(){
if(player->fdirection == 'f'){
/*Код прорисовки снаряда*/
}
}

в функции :

void keyboard(unsigned char key, int x,int y){
if(key == shot.fastShot){ // Если key равен символу "f", f - выстрел.
player.fdirection = shot.fastShot;
shot.getPosition(); // Получаем координаты объекта(танка)
}
}
void main() {

}

  • задержку поставьте, пропускайте нажатие данной клавиши н секунд
  • Запоминай состояние клавиши перед тем, как вызвать функцию обработки стрельбы. Если состояние не равняется предыдущему (сейчас клавиша нажата, а была не нажата), тогда стреляем и текущее состояние запоминаем как старое. Иначе не стреляем.
  • Правильнее будет делать 1 выстрел не по нажатию, а по отпусканию клавиши - все проблемы исчезнут сами.
  • Мосье что нибудь слышал про конечные автоматы? Введи понятие состояния системы и сделай реакцию на внешние события зависимой от этого состояния.