Globales Array re-initialisieren
-
Ich habe in meinem kleinen Spiel eine Klasse, die das Spielfeld verwaltet. Im Kopf wird dabei ein globaler Array angelegt mit 1650 Elementen. Das kann ich anscheinend nur hier machen, sonst hätte ich eine Methode geschrieben, die dem Array diese Werte übergibt (ansonsten kommt die Fehlermeldung, dass das "{" bei "arr[]={0,0,0,0,0,...}" zuviel sei...).
Jetzt will ich für die zweite Spielrunde den kompletten Array reinitialisieren, aber wie kann ich das machen, wenn der Array global im Kopf ist und keine Methode da ist?
-
JPSelter schrieb:
wenn der Array global im Kopf ist und keine Methode da ist?

Meinst du sowas ?for ( int i = 0; i < 1650; i++ ) arr[i]=0;Kurt
-
was haellt dich denn davon ab dafuer eine methode zu schreiben? man kann "arr[]={0,0,0,0,0,...}" auch nur einmal schreiben: und zwar bei der initialisierung - ansonsten wuerd ich es wohl auch so wie Zuk machen:
for (int i=1;i<1650-1;i++) arr[i]=0;-was meinst du eigentlich mit 'kopf'?
-
Nein, in dem Array sind keine Nullen drin, sondern das ganze Spielfeld, das aus 0,1,2,3,4,8,9 codiert ist. Das initialisiere ich einmal ganz oben in der cpp-Datei als globalen Array. Das Problem ist, dass ich den Array im Laufe des Spiels verändere und ich am Ende wieder den Ausgangsarray haben möchte, um das Spiel neu starten zu können.
Ich habe bereits probiert eine Methode zu schreibe, alsovoid setArray() { arrFields[]= { 9,9,9,9,9,9,9,... 9,0,0,0,0,1,2,... 9,0... ... } }Ich brauche den Array global in der ganzen Klasse, und wenn ich den im Header als int arrFields[1650]; deklariere, meckert er in setArray() rum, dass er das "{" nicht akzeptiere. Daher die Deklaration ausserhalb einer Methode im Kopf der cpp.
-
Dann machs so:
const int startFields[]= { 9,9,9,9,9,9,9,... 9,0,0,0,0,1,2,... 9,0... ... } void setArray() { for ( int i=0; i < 1650; i++ ) arrFields[i]= startFields[i]; }Kurt
-
-
ZuK schrieb:
Dann machs so:
const int startFields[]= { 9,9,9,9,9,9,9,... 9,0,0,0,0,1,2,... 9,0... ... } void setArray() { for ( int i=0; i < 1650; i++ ) arrFields[i]= startFields[i]; }Kurt
Danke, das klingt sehr logisch! Könnte klappen!

-
JPSelter schrieb:
const int startFields[]= { 9,9,9,9,9,9,9,... 9,0,0,0,0,1,2,... 9,0... ... }Hast du da eigentlich 1650 Zahlen per Hand reingeschrieben?
-
Och solche globalen Geschichten wird dir jeder zerfetzen...
-
Ja, es sind 55 Zahlen in 30 Reihen. Sind symetrisch angeordnet, also kann man viel mit Copy & Paste arbeiten

Die obige Idee hat tatsachlich funktioniert und mein Programm ist nun endlich fertig. Jetzt mach ich erstmal einige Monate C++ Pause und widme mich wieder Delphi zu ;-))
