У меня возникла небольшая проблема, и я повсюду смотрел, но я верю, что смотрю в неправильном направлении. Я создал учетную запись здесь в надежде решить небольшую проблему, которую у меня есть. Я нахожусь в середине программирования RPG, и когда я пытаюсь отобразить «магические заклинания» одного персонажа, я могу отображать только [3]. [0] [1] [2] разбивает мою игру. Игра находится на C++.Отображение элемента из указателя struct
Пример моего кода ниже:
Создать мой-структуру:
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];
Инициализация и назначение элементов с этими параметрами для членов 4 партии:
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
}
Здесь я рисовать/печать " Magic "на экран:
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
Как вы можете видеть, он будет работать, но только если я покажу плеер [3]. Я уверен, что забываю что-то сделать или что-то неправильно инициализировать. Любая помощь будет принята с благодарностью.
ли первые 3 игрока типа Knight? – Alex
Нет, например, плеер [0] также может быть установлен на ниндзя, и при попытке отобразить «Магию» он сработает. – malachi
'const char * Magic [];' не разрешен в C++; если ваш компилятор не жалуется, посмотрите, какие флажки компиляции вы используете. –