Mit For-Schleife mehrere Variablen deklarieren
-
Hallo liebe Programmierfreunde
ich hab da mal eine kleine Frage und zwar möchte ich mittels eines 2-Dimensionalen Arrays Felder abgrenzen.
Nun wollte ich das ungefähr so machenfor(int i = 1; i < 8; i++) { int StartX = 0; int StartY = 0; int EndX = 39; int EndY = 39; int Field"i" [2][2] = {{StartX, EndX,}, {StartY, EndY},}; }
nun zu meiner Frage geht es das wenn die Schleife durchläuft die Variable immer um eins erhöht wird also das immer an den Namen noch das "i" angehängt wird?
-
Nö, wozu sollte das gut sein? Wenn dein Programm läuft, gibts keine Variablen mehr.
-
Das klingt so,als wolltest du ein 3dim array Oo
int Field [8][2][2] for(int i = 1; i < 8; i++) { int StartX = 0; int StartY = 0; int EndX = 39; int EndY = 39; Feld[i][0][0] = StartX; //usw }
-
3D-Arrays heißen, dass man ca. 2 Mal nicht abstrahiert hat.
-
Nein oke ich hab das auch etwas unverständlich erklärt ^^ sorry
Also ich meine das wenn die Schleife durchläuft beim ersten mal:
[cpp] for(int i = 1; i < 8; i++)
{
int StartX = 0;
int StartY = 0;
int EndX = 39;
int EndY = 39;int Field1 [2][2] = {{StartX, EndX,},
{StartY, EndY},};
}
[/cpp]beim zweiten mal
for(int i = 1; i < 8; i++) { int StartX = 0; int StartY = 0; int EndX = 39; int EndY = 39; int Field2 [2][2] = {{StartX, EndX,}, {StartY, EndY},}; }
usw...
Also jedes mal wenn die Schleife durchläuft wird eine neues Array erstellt für ein neues Feld
-
for(int i = 1; i < 8; i++) { int StartX = 0; int StartY = 0; int EndX = 39; int EndY = 39; int Field1 [2][2] = {{StartX, EndX,}, {StartY, EndY},}; }
beim zweiten mal
for(int i = 1; i < 8; i++) { int StartX = 0; int StartY = 0; int EndX = 39; int EndY = 39; int Field2 [2][2] = {{StartX, EndX,}, {StartY, EndY},}; }
So is besser lesbar. Die Fett- bzw. C/C++ Tags verstehen sich nicht gut.
Deine Lösung: ein Array von Matrizen. Also, ein dreidimensionales.
Wie von arrayman gezeigt.
P.S.:willst du nich lieber Vektoren nehmen?
-
Du solltest anfangen mit std::vector zu arbeiten als mit rohen Arrays.
-
Also wenn müsste das ganze so aussehen ?
for(int i = 1; i < 8; i++) { int StartX = 0; int StartY = 0; int EndX = 39; int EndY = 39; int Field [i][2][2] = {{StartX, EndX,}, {StartY, EndY},}; }
-
for(int StartX = 0, StartY = 0, EndX = 39, EndY = 39, i=1; i < 8; i++) { std::vector<std::vector<int>> Field{{StartX, EndX}, {StartY, EndY}}; } }
Achtung, C++11! Compiliert (funktionert)'s bei dir?
Edit: Natürlich ist bestimmt anderes Falsch überlegt. Was genau wird denn das?
-
Also um vielleicht etwas mehr Licht ins Dunkle zu bringen ich versuche mich gerade daran ein Schach-Spiel zu programmieren...was sich mittlerweile als gar nicht so einfach herausgestellt hat. Klar ist es nicht einfach aber ich werde weiter versuchen bis es irgendwann fertig ist und mir gefällt .
So ich wollte die Arrays benutzen um die Felder abzugrenzen mittlerweile ist mir aber eine bessere Idee gekommen...eine Klasse
class CField { public/private: // Ich weiß noch nicht genau wie ich das machen werde char m_cName[2]; // bsp. A1...oder D4 int m_nFirstX; // Erster Pixel des Feldes auf der X Achse int m_nLastX; // Letzter Pixel des Feldes auf der X Achse int m_nFirstY // ... auf der Y Achse int m_nLastY // ihr versteht nehm ich mal an }
soo dann hatte ich geplant die Klasse für die Mover(Figuren) ungefähr so zu gestallten
class CMover { char m_cField[2]; //Auf welchem Feld der Mover steht int m_nX; //X Pos int m_nY; //Y Pos
Die Ideen reifen noch aber so ungefähr hatte ich mir das jetzt überlegt. Ich weiß selbst das, dass nicht perfekt ist aber ich bin auch noch nicht allzu lange dabei und da sollte man ja noch Fehler machen können ^^
und @ meinen Vorposter ich habs jetzt nicht probiert und ich denke mal das es für meinen Zweck dann wohl nichts bringt...trotzdem danke an dich für die Hilfe und auch die anderen.
}
}