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!


Anmelden zum Antworten