Показать сообщение отдельно
Старый 21.08.2009, 23:04   #1
aureli0
ПроЭктировщик
 
Регистрация: 19.03.2007
Сообщений: 134
Написано 10 полезных сообщений
(для 20 пользователей)
кажется проблема с указателями:(

Здраствуйте, помогите пожалуйста разобраться
вот есть такая процедура для контроля анимации в игре:
int frame_count[99999];
void ControlAnimate(int index,//индекс каждого объекта
                    int *frame,//номер текущего кадра
                    int frame_delta,//шаг между кадрами
                    int frame_start,//стартовый кадр
                    int frame_finish,//финальный кадр
                    int delay,
                    bool frame_cikl)//задержка между кадрами
   {
     if ((now-frame_count[index])>delay or now<frame_count[index])
       {
     frame_count[index]=SDL_GetTicks();
     *frame=*frame+frame_delta;
    }
  if (*frame>=frame_finish or*frame<frame_start)
       {
         if (frame_cikl==true) {*frame=frame_start;}//возвращаемся на старый кадр
      }
}
хотелось бы ее применять для разных
массивов
например для массива объектов[obj_max] j-го элемента:
ControlAnimate(j,
&obj_frame[j],
1,
1,7,
50,
true);

и для игрока:
ControlAnimate(obj_max+1,//1-ый номер забит за игроком
&p_frame,//номер текущего кадра
1,//шаг между кадрами
p_frame_start,//стартовый кадр
p_frame_start+3,//финальный кадр-разница между началом и концом анимации 3 кадра
100,
true);

меня смущает то что для обсчета задержки между кадрами надо использовать счетчик каждого элемента, т.е .сколько элементов в массиве столько и должно быть счетчиков?

правильно делать для объектов j (1..obj_max)
a для игрока obj_max+1?

может быть можно использовать какиенибудь указатели на безразмерный массив?
как переделать процедуру так чтобы не надо было загонять индекс для счетчика (1-ый аргумент)?
(Offline)
 
Ответить с цитированием