Increase difficulty based on score
Be careful with your inequalities.  You've listed 500 twice: once as if (Score &lt;= 500) and again as else if (Score &gt;= 500).  That's confusing, as the first condition takes precedence.

I think that you would be better off with one state variable representing the current difficulty level.  The code would also be simpler if you determine NewDifficulty using a level-triggered rather than edge-triggered mechanism.

int Difficulty;

void IncreaseScore()
{
    int NewDifficulty = (Score &lt;   100) ? 0
                      : (Score &lt;=  500) ? 1
                      : (Score &lt;= 1500) ? 2
                                        : 3;
    // One-way ratchet: difficulty can only increase, even if the
    // score subsequently drops.
    if (NewDifficulty &lt; Difficulty)
    {
        Difficulty = NewDifficulty;
    }
}


If the score can never decrease in this game, then you can simplify it further:

void IncreaseScore()
{
    Difficulty = (Score &lt;   100) ? 0
               : (Score &lt;=  500) ? 1
               : (Score &lt;= 1500) ? 2
                                 : 3;
}