(27.04.2012 22:53)gamecreator Wrote: он крайне корректный и крайне медленный. для ускорения можно сразу создавать новый массив нового размера, копировать, удалять старый и переприсваивать. но так теряется корректность и могут быть проблемы с освобождением памяти. вот в чем С лучше С++ - так это в выделении памяти. обрати внимание на функции calloc, realloc, free.
и на файл memory.h
Потеря корректности? Проблемы с освобождением?
Если массив часто надо увеличивать, то надо выделять больше памяти. Например, при нехватке памяти увеличивать размер выделенной памяти в 2 раза и, пока не заполнится, расширять без перевыделений.
(28.04.2012 15:06)packa Wrote:
Code:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
ammo = new Graphics::TBitmap;
ammo->LoadFromFile("ammo.bmp");
Form1->Canvas->Brush->Color=(TColor)RGB(0,0,0);
Form1->Canvas->Rectangle(0,0,ClientWidth,ClientWidth);
/*Много кода и отрисовок*/
delete ammo;
}
Надо 1 раз загружать из файла, а не в таймере.
(28.04.2012 17:41)gamecreator Wrote: не рисуй ничего в таймере, забудь что ты вообще такое можешь. вот правильно сделали в windows forms в c#, что скрыли возможность рисования где попало.
Почему же? Спокойно можно рисовать в таймере и в OnPaint. Еще можно вызывать Repaint - он отрисовывает сразу, а не когда дойдет до сообщения.
(28.04.2012 18:28)Efrit Wrote: Мда. А работать с прозрачными спрайтами не судьба? Поставил transparent у TImage в true и радуйся жизни...
Для анимации TImage неприменим из-за мерцания. Хотя DoubleBuffered может и поможет...
(03.05.2012 17:49)packa Wrote: [принадлежность к башне][номер патрона в потоке (очереди)][корды патрона, а также его тип]
Где 3-е измерение? Даже в таком варианте "корды патрона, а также его тип" - это не 3-е измерение. А по сути тут одномерный массив патронов, точнее связный список. Если классы по-началу пугают, сделай патроны структурами, там всё просто, ни на какую мудрёную теорию не наткнёшься.