if score.value == 100:
Asteroid.speed += 1
For every frame that the score is 100
, you are going to add 1 to the speed of the asteroids. This means that if you're game is running at 60 fps, after 1 second your asteroids will have added 60 to their speed. Am I correct in assuming that this is when things begin to 'glitch?'
All you should have to do to correct this is add speed only once the player's score reaches 100, and ensure it happens in a reactive manner:
if self.bottom > games.screen.height:
self.destroy()
score.value += 10
# Check if the score has reached 100, and increase speeds as necessary
if score.value == 100:
Asteroid.speed += 1
It's unclear from your code whether Asteroid.speed
will set the speed for all asteroids. If not, you'll have to work out a way of broadcasting the fact that speed must increase to all other active asteroids.