Ich habe auf ein kleines Problem gestoßen und ich habe überall gesucht, aber ich glaube, dass ich in die falsche Richtung schaue. Ich habe hier einen Account erstellt, in der Hoffnung, ein kleines Problem zu lösen, das ich habe. Ich bin gerade dabei, ein RPG zu programmieren und wenn ich versuche, ein Zeichen "Zaubersprüche" anzuzeigen, kann ich nur [3] anzeigen. [0] [1] [2] stürzt mein Spiel ab. Das Spiel ist in C++.Anzeigeelement aus Zeiger struct
Beispiel meines Codes unter:
meine Struktur erstellen:
struct Fighter {
int HP; //max 999
int maxHP;
int MP; //max 999
int maxMP;
int STR; //max 255
int CON; //max 255
int AGL; //max 100
bool dead;
const char* Magic[];
};
Fighter * player = new Fighter[5];
initialisieren und Elemente mit diesen Parametern für 4 Gruppenmitglieder zuweisen:
void InitPlayer(int pClass, int p)
{
if(pClass == 0) //Knight
{
player[p].maxHP = 750;
player[p].HP = player[p].maxHP;
player[p].maxMP = 0;
player[p].MP = player[p].maxMP;
player[p].STR = 200;
player[p].CON = 0;
player[p].AGL = 35;
}
else if(pClass == 1) //Ninja
{
player[p].maxHP = 675;
player[p].HP = player[p].maxHP;
player[p].maxMP = 0;
player[p].MP = player[p].maxMP;
player[p].STR = 175;
player[p].CON = 0;
player[p].AGL = 80;
player[p].Magic[0] = "Cure";
player[p].Magic[1] = "Haste";
player[p].Magic[2] = "Sleep";
}
//... More Character code
}
Hier zeichne ich/print " Magic "auf den Bildschirm:
Printf_xy(123,223,player[0].Magic[0]); //Crash
Printf_xy(123,233,player[1].Magic[0]); //Crash
Printf_xy(123,243,player[2].Magic[0]); //Crash
Printf_xy(123,253,player[3].Magic[0]); //Prints "Cure" does not crash
Wie Sie sehen können, wird es funktionieren, aber nur, wenn ich Player [3] anzeigen. Ich bin sicher, ich vergesse etwas zu tun oder etwas falsch zu initialisieren. Jede Hilfe würde sehr geschätzt werden.
Sind die ersten drei Spieler vom Typ Ritter? – Alex
Nein, zum Beispiel könnte Spieler [0] auch auf Ninja eingestellt sein und wenn er versucht, "Magie" anzuzeigen, stürzt er ab. – malachi
'const char * Magic [];' ist in C++ nicht erlaubt; Wenn dein Compiler sich nicht beschwert, dann schau dir an, welche Kompilierungsflags du verwendest –