Joah, nicht gerade wunderschön, aber es ist ja auch sehr wichtig, dass man eigene Lösungen finden kann, auch wenn diese nicht so elegant sind, wie Lösungen die man sich von woanders her kopiert hat (und dabei dann nichts lernt). Von daher
Aber ein bisschen was möchte ich schon noch dazu sagen: Du weißt vielen Variablen Werte zu, die du nie benutzt (wenn ein geschriebener Wert niemals gelesen wird, war es sinnlos ihn zu schreiben). Und du deklarierst Variablen zu früh. "xPosition" Beispeilsweise hat außerhalb der innersten Schleife keine sinnvolle Bedeutung. Es verwirrt nur, dass außen mehr Variablen "sichtbar" sind, die man aber nicht benutzen sollte. Stattdessen könnte man schreiben:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
|
// Map updaten und rendern
for (int i=0; i<Array2dHeight; i++)
{
const int yPosition = (i*60);
for (int i2=0; i2<Array2dWidth; i2++)
{
const int xPosition = 10+(i2*60);
int array_wert = array2d[i][i2];
m_pMap->Render(array_wert, xPosition, yPosition);
}
}
|
Wie du siehst sind unnötige Zuweisungen entfernt worden und die Variablen sind erst dort deklariert, wo man sie auch benutzt. Zusätzlich habe ich noch const benutzt. Im Grunde ist xPosition und yPosition ja jeweils nur eine kleine Hilfsvariable; ein hübscher Name für die Berechnung die ihr zugewiesen wird. Es dient durchaus der Lesbarkeit des Codes, Zwischenergebnisse Werte zu geben, dadurch werden Formeln kürzer und man hat eine bessere Intuition, was welcher Teil jetzt bedeuten soll.
Du willst ja im Grunde xPosition nicht ändern. Es soll die Bedeutung (10+(i2*60)) haben, und die ändert sich bis zum nächsten Schleifendurchlauf ja nicht. Die Zuweisung ist nicht irgendein Startwert, sondern du hast im Grunde für jedes Objekt in der Map eine eigene X-Position, die du berechnest.
Was ich damit sagen will: Der Code ist jetzt nicht nur kürzer, sondern auch von der Bedeutung her sinnvoller. Und dazu musste man von der ursprünglichen Idee nur ein paar Kleinigkeiten ändern.