The following code causes the bool function "IsHit(pos,clickTime)" to retain a true value (and thus increase the molesHit variable) about 100 times before the statement is false.
The m object is a mouse class that checks to see if the mouse has been clicked. If it has, the current position is set. It works correctly.
How can I change this code so that the statement will only be true once?
while (GetTimeInSecs() < EndTime)
{
gotoxy(0,2);
SetC(YELLOW);
cout << "Time Remaining: " << fixed << setprecision(1) << EndTime-GetTimeInSecs();
if (m.clicked())
{
pos = m.position(); // Current X/Y cordinates saved
clickTime = GetTimeInSecs();
}
if ((s.IsHit(pos,clickTime)) ||
(GetTimeInSecs() >= s.StartTime()+s.Duration()))
{
if (s.IsHit(pos,clickTime)) {
molesHit++;
gotoxy(60,2);
cout << "Mole(s) Hit: " << fixed << setprecision(1) << molesHit;
pos.X = 0; // Must reset position
pos.Y = 0; // Must reset position
}
s.Erase();
moleX = rand() % 60;
moleY = rand() % 18;
if (moleY <= 4) { moleY += 4; } // Prevent covering heading
s.Set(moleX,moleY,moleX+strength,moleY+strength);
s.SetColor(Color(rand() % 10));
if (s.Duration() > 0.5) { s.SetDuration(s.Duration()-0.5); } // Limit mole duration
s.Draw();
}
}