Hello, in school I have an IT class and am pretty new to programming, I can pretty much only do the basics. In any case, I’m making a Space Invaders-esque game and have a pretty annoying problem. Here is the (I think) relevant code (I apologize as the variables are in German but I hope one can understand it):
for(int a=0; a<=399; a++){
if(sq(x1-AstX[a]) + sq(y1-AstY[a])<100 || sq(x2-AstX[a]) + sq(y2-AstY[a])<100 || sq(x3-AstX[a]) + sq(y3-AstY[a])<100){
getroffen=true;
}
for(int t=0; t<=5; t++){
if(sq(SchussX[t]-AstX[a]) + sq(SchussY[t]-AstY[a])<100 && schussanzahl<6){
asteroid[a]=false;
Schuss[t]=false;
AstX[a]=0;
AstY[a]=0;
SchussX[t]=0;
SchussY[t]=0;
schussanzahl--;
println(schussanzahl);
}
}
}
So the first part of the intertwined loop just says that if an asteroid hits the ship, the game is over. There isn’t a problem here. But in the second part there is a problem. It programs that once a shot hits an asteroid, the asteroid gets destroyed and all the variables get reset. The variable -schussanzahl- measures how many shots have been fired, there is a maximum of five; unless -schussanzahl<6-, one cannot shoot another projectile. So it would only make sense, I thought, that once a shot hits an asteroid, that -schussanzahl- gets reduced since one shot less is being drawn. The problem is that -schussanzahl- gets reduced indefinitely, going into negative infinity. This I don’t understand, since it should only happen if an asteroid is hit by a shot.
The only way around the error that I found is changing the code so the shot travels through the asteroids, however I don’t really want to code the game this way, it would make it too easy in my opinion. Help would be greatly appreciated, and if anyone requires more information, I will gladly comply!