Runde Reichweite um Turm
-
Hallo!
Ich bin gerade dabei, ein kleines Spiel zu programmieren, und da gibt es Türme, deren Reichweite berechnet werden muss.
Ich habe dazu diese Variablen:bool Feld[Max_x][Max_y]; int Tower_x=5, Towe_y=5, Tower_Range;
Die Felder, die in der Reichweite liegen, sollen auf "true" gesetzt werden.
Ich habe da diese for-Schleife gemacht:for (int x=Tower_x-Tower_Range; x<Tower_x+Tower_Range; x++) for (int y=Tower_y-Tower_Range; y<Tower_y+Tower_Range; y++) Feld[x][y] = true;
Das funktioniert auch, aber jetzt möchte ich statt der 4-eckigen eine runde Reichweite haben, damit der Turm nicht schräg weiter schießt als gerade.
Ich hab da schon stundenlang rumprobiert, bisher ohne Erfolg.Kann mir irgendwer weiterhelfen?
Vielen Dank für alle Antworten...
-
Kein BCB-spezifisches Problem, verschóben nach "Rund um".
-
So geht es:
for(int x = Tower_x - Tower_Range; x <= Tower_x + Tower_Range; x++) for(int y = Tower_y - Tower_Range; y <= Tower_y + Tower_Range; y++) Feld[x][y] = ((x - Tower_x) * (x - Tower_x) + (y - Tower_y) * (y - Tower_y)) <= TowerRange * TowerRange;
Satz des Pythagoras!