В настоящее время я работаю над тем, как загрузить из файла несколько разных NPC и загрузить их в свою игру. У меня все работает правильно с массивами, но я хотел бы изменить его на использование вектора, так как я могу изменить размер в случае, если мне нужно больше NPC, чем места, доступного в массиве, и поэтому у меня не будет в основном пустого массива, если Мне не нужно много NPC в настоящее время. Обратите внимание, что следующий код взят из программы тестирования, а не из моего реального программирования. Я сделал это, чтобы случайно не связываться с полным проектом.
int main()
{
char input;
bool Running = true;
NPC Creatures[MAX_NPCS];
//InitCreatures loads the X, Y and Type from the file. I know with vectors I have to
//resize it as I go along, Which would be included in the function.
if(Creatures[MAX_NPCS].InitCreatures(Creatures) == false)
{
Creatures[MAX_NPCS].CleanUp(Creatures);
return 0;
}
while(Running == true)
{
cout << "(C)heck an NPC, (A)ttack and NPC or (E)xit the program\n";
cin >> input;
switch(input)
{
case 'C': Creatures[MAX_NPCS].Check(Creatures); break;
case 'c': Creatures[MAX_NPCS].Check(Creatures); break;
//The Check function just shows the X, Y and Type of the NPC
case 'A': Creatures[MAX_NPCS].Attack(Creatures); break;
case 'a': Creatures[MAX_NPCS].Attack(Creatures); break;
//Attack shows X, Y and type and then removes that NPC from the array.
case 'E': Running = false; break;
case 'e': Running = false; break;
default: cout << "That was not a valid input\n"; break;
}
}
Creatures[MAX_NPCS].CleanUp(Creatures);
cout << "Exiting\n";
system("PAUSE");
return 0;
}
На самом деле единственная проблема, с которой я сталкиваюсь, это заставить Main запускать функции класса NPC из вектора вместо использования массива, как у меня сейчас. Я могу легко изменить другие функции в функциях, которые я вызываю, чтобы принять вектор и правильно его обработать.
Когда я пытался использовать вектор для запуска функций, я мог вызывать их только тогда, когда у меня было что-то вроде этого:
Creatures[1].Attack(Creatures);
Конечно, когда я их так называю, значения не возвращаются правильно, и я обычно получаю сообщение об ошибке. Кроме того, я не знаю, сколько NPC будет загружено для текущей карты, если есть.
Любая помощь с этим будет оценена. Я понимаю, что я новичок в программировании, особенно когда дело касается Векторов. Если мой код функции необходим, я с удовольствием выложу его.