Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2011, 13:52   #1
nikitinign
 
Регистрация: 30.08.2011
Сообщений: 8
По умолчанию Оптимизация языка

Здравствуйте. Задача все кадры загрузить в массив а потом их вывести на форму в каком ни будь обработчике событий. Можно сделать так
Код:
int a[10];
Graphics::TBitmap*  nnn = new Graphics::TBitmap;
 Graphics::TBitmap*  bn = new Graphics::TBitmap;
 Graphics::TBitmap* steretn=new Graphics::TBitmap;
int x=255, y=85, t=5, c=85;
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 FILE *f;
 if(f=fopen("D:\\нприменры нпрогн\\3\\nnnnn.txt","r"));
 {
  for(int i=0;i<10;i++)
  {

   char t=fgetc(f);
   switch(t)
   {
    case '1' : {
     bn->LoadFromFile("n1.bmp");
     bn->Transparent=true;
    a[i]=1;

    break;  }
    case '2' : {
    nnn->LoadFromFile("n3.bmp");
    nnn->Transparent=true;
     a[i]=2;

     break;
   }
  }
 }
}  steretn->Width=Width;
   steretn->Height=Height;
   steretn->Canvas->FillRect(Rect(0,0,steretn->Width,steretn->Height));
   }
//---------------------------------------------------------------------------

void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{

 if( Key == VK_LEFT)
  for(int i=0;i<10;i++)

  { Sleep(52);
    switch(a[i])
   {
     case 1 : Form1->Canvas->Draw(x,y,bn);
      steretn->Canvas->FillRect(Rect(0,0,steretn->Width,steretn->Height));
                  steretn->Canvas->Draw(x,y,bn);              //Выводим на форму
                  Canvas->Draw(0,0,steretn); break;
     case 2 : Form1->Canvas->Draw(x,y,nnn);
     steretn->Canvas->FillRect(Rect(0,0,steretn->Width,steretn->Height));
                  steretn->Canvas->Draw(x,y,nnn);
                              //Выводим на форму
                  Canvas->Draw(0,0,steretn);
                  break;
   }
   }
}
Но при таком подходе придется писать имя каждого кадра и для каждого писать глобальную переменную (Graphics::TBitmap* nnn = new Graphics::TBitmap;
Graphics::TBitmap* bn = new Graphics::TBitmap) и если их сотни, то можно сделать на мой взгляд кучу лишней работы.
Подскажите пожалуйста, можно ли сделать то же самое, но только с одной глобальной переменной ( или подконец с несколькими, но не переименовывая каждый кадр движения бойца) - что то наподобие bn->LoadFromFile("n"+String(i/4)+".bmp"); и Canvas->Draw(x,y,bn[n(i)]);, или каждый кадр не избежно придется прописывать ?
nikitinign вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Библиотеки C и языка С++ McLeod Общие вопросы C/C++ 8 31.07.2011 18:10
выбор языка KpecTHbIi Помощь студентам 19 14.07.2011 07:04
Смена языка _-Re@l-_ Общие вопросы Delphi 13 10.06.2011 09:00
смена языка Dimarik Visual C++ 2 28.01.2011 22:26
Выбор языка? MYTO Свободное общение 18 30.03.2010 17:35