Учитывая, что вы в настоящее время жестко кодируете имя фреймов, я предполагаю, что вы знаете / имеете контроль над схемой именования файлов. Я также предполагаю, что вы хотите их последовательно, так как это кажется кадрами в анимации. Наконец, я предполагаю, что вы знаете, сколько существует кадров, так как у вас, кажется, есть массив, достаточно большой, чтобы вместить их всех, готовых и ожидающих.
Учитывая имена файлов, представленных в вопросе, вы не можете просто выполнить FindFirst / FindNext, потому что как только вы пройдете 10 кадров, они почти наверняка выйдут из строя (учитывая представленную схему именования) .
Так что я думаю, что вы правы, что лучший способ сделать это в цикле, но неправильно, что это больше усилий, чем делать это вручную.
char* fname = new char[50]; // buffer big enough to hold filenames
int numFrames = 8; // or however many, you seem to know what this value should be
for(int i = 0; i < numFrames; ++i)
{
sprint(fname, "Animations/foo%d.png",(i+1));
foo_ani[i] = LoadImage(fname);
}
delete[] fname;
Это примерно 6 строк кода. Так что для анимации из более чем 6 кадров я бы сказал, что это проще.