Плавное движение объектов.
плавное движение объектов(без моргания).
Please!!!
Подскажите как сделать в C++Builder
плавное движение объектов(без моргания).
Please!!!
Подмигиванием ;)
Напиши подробней...Это ты про WM_PAINT и Refresh?
Если да, то Builder тут не причем.
З.Ы.: Не игру ли часом делаешь:P
Подмигиванием ;)
Напиши подробней...Это ты про WM_PAINT и Refresh?
Если да, то Builder тут не причем.
З.Ы.: Не игру ли часом делаешь:P
Кажется ты меня не так понял. Не подмигиванием, а без него. Вроде бы это называется двойнай буферизация.
З.Ы.: Её самую, аркаду-леталку.
Если да, то во первых просто убери с формы
все меняющиеся элементы (там счетчики и т.д.).
Потом рисуй не на канве твоей главной картинки,
а на другой - не видимой. Потом копируй CopyRect'ом. Да, еще одно, не накладывай один визальный TImage на другой и не растягивай картинку (Stretch=false).
З.Ы.:А чем вообще думал, когда сел писать игру на
Builder? Для этого есть вещи помощней :) и попроще
А что ты юзаешь в качестве полотна? TImage?
Если да, то во первых просто убери с формы
все меняющиеся элементы (там счетчики и т.д.).
Потом рисуй не на канве твоей главной картинки,
а на другой - не видимой. Потом копируй CopyRect'ом.
Это чё с Image копировать в PaintBox? Если делать так то нельзя поставить Transparent=true. :-?
Да, еще одно, не накладывай один визальный TImage на другой и не растягивай картинку(Stretch=false).
З.Ы.:А чем вообще думал, когда сел писать игру на
Builder? Для этого есть вещи помощней :) и попроще
А каким образом тогда можно сделать фон?(CopyRect'ом?)
З.Ы.: Ну например?(Может быть Visual C++, а?)
А каким образом тогда можно сделать фон?(CopyRect'ом?)
З.Ы.: Ну например?
Пойми Builder не среда разработки игр.
Но игрушку свою я на нем таки когда-то писал.
Клон - фаллаута. (См. скрин из редактора к ней)
Если интересно, то могу рассказать как,
но мой тебе совет - брось или Билдер, или игру.
Если первое, то учи DirectX или OpenGL.
Если второе, то подучи среду разработки(привыкни),
и может напишешь что-то с нуля на DirectX или OpenGL и под Builder'ом.
А фон делается тоже CopyRect'ом, но ты видел где-то
режимы копирования с прозрачным фоном? Я тоже нет.
Поэтому нужно морочить себе голову еще и маской
(белой или черной) и потом на нее уже копировать
объект. А если делать это без маски скажем в режиме cmSrcAnd, то картинка, которую ты нарисуешь
поверх фона будет как бы прозрачной. Пара таких
рисунков и у тебя будет черное пятно на месте рисунка. Маску я давным давно делал так:
#include <Graphics.hpp>
//---------------------------------------------------------------------------
#define _FlipImage_XY(target,source,x,y) target->Canvas->CopyMode=cmSrcCopy; target->Canvas->CopyRect(Rect(x,y,x+source->Width,y+source->Height),source->Canvas,Rect(0,0,source->Width,source->Height));
#define _PutImage_XY(target,source,x,y) target->Canvas->CopyMode=cmSrcAnd; target->Canvas->CopyRect(Rect(x,y,x+source->Width,y+source->Height),source->Canvas,Rect(0,0,source->Width,source->Height));
#define _PutImage_XY_B(target,source,x,y) target->Canvas->CopyMode=cmSrcPaint; target->Canvas->CopyRect(Rect(x,y,x+source->Width,y+source->Height),source->Canvas,Rect(0,0,source->Width,source->Height));
#define _InvertImage(target,source) target->Canvas->CopyMode=cmDstInvert; target->Canvas->CopyRect(Rect(0,0,source->Width,source->Height),source->Canvas,Rect(0,0,source->Width,source->Height));
#define _ClsImage(target,source) target->Canvas->CopyMode=cmWhiteness; target->Canvas->CopyRect(Rect(0,0,target->Width,target->Height),source->Canvas,Rect(0,0,target->Width,target->Height));
#define _ClsImage_B(target,source) target->Canvas->CopyMode=cmBlackness; target->Canvas->CopyRect(Rect(0,0,target->Width,target->Height),source->Canvas,Rect(0,0,target->Width,target->Height));
//---------------------------------------------------------------------------
void MakeMask(TCanvas *Canv,int width,int height,TColor FillCl,TColor BorderCl);
//---------------------------------------------------------------------------
void MakeMask(TCanvas *Canv,int width,int height,TColor FillCl,TColor BorderCl)
{
Canv->Brush->Color=FillCl;
if(Canv->Pixels[width/2][height/2]!=BorderCl)
Canv->FloodFill(width/2,height/2,BorderCl,fsBorder);
//Canv->CopyMode=cmPatInvert;
//Canv->CopyRect(Rect(0,0,width,height),Canv,Rect(0,0,width,height));
}
Думаю разберешься что куда...
А transparent все равно не работает при копировании (выше я показал, как с ним быть)
Главная процедура рисования может выглядеть так:
void RefreshDisplay()
{
_ClsImage_B(MainForm->ZImage,MainForm->DisplayImage);
Ball->UpdatePosition();
Ball2->UpdatePosition();
if(CtrlBorder(300,400,Ball->Position,Ball->Speed,Ball->Size)&&MainForm->SoundCheck->Checked) PlaySound("tonk.wav",0,SND_ASYNC);
if(CtrlBorder(300,400,Ball2->Position,Ball2->Speed,Ball2->Size)&&MainForm->SoundCheck->Checked) PlaySound("tonk.wav",0,SND_ASYNC);
_PutImage_XY_B(MainForm->ZImage, Ball->Image,Ball->Position.x,Ball->Position.y);
_PutImage_XY_B(MainForm->ZImage, Ball2->Image,Ball2->Position.x,Ball2->Position.y);
_PutImage_XY_B(MainForm->ZImage, Desk->Image,Desk->Position.x,Desk->Position.y);
_FlipImage_XY(MainForm->DisplayImage,MainForm->ZImage,0,0);
}
Пойми Builder не среда разработки игр.
Но игрушку свою я на нем таки когда-то писал.
Клон - фаллаута. (См. скрин из редактора к ней)
Если интересно, то могу рассказать как,
но мой тебе совет - брось или Билдер, или игру.
Если первое, то учи DirectX или OpenGL.
Если второе, то подучи среду разработки(привыкни),
и может напишешь что-то с нуля на DirectX или OpenGL и под Builder'ом.
Думаю разберешься что куда...
А transparent все равно не работает при копировании (выше я показал, как с ним быть)
}
На чём лучше делать игры на DirectX или OpenGL?
Кстати может знаешь какую-нибудь литературу на эту тему или какие-нибудь статьи в Net'е.
А насчёт Transparent'а я не понял где именно(выше).
Скачанный архив со Screen'ом не распаковывается может подкинешь сам файл.
:-? :-? :!!!:
Но игрушку свою я на нем таки когда-то писал.
Клон - фаллаута. (См. скрин из редактора к ней)
Если интересно, то могу рассказать как,
но мой тебе совет - брось или Билдер, или игру.
Да было бы интересно послушать!:???:
Кстати большой ли у тебя опыт в этом деле?:???:
З.Ы.:Извиняюсь если сильно загружаю вопросами.:)
Мда... ну и каша...8)
Мда...ты прав...8)
На чём лучше делать игры на DirectX или OpenGL?
Кстати может знаешь какую-нибудь литературу на эту тему или какие-нибудь статьи в Net'е.
А насчёт Transparent'а я не понял где именно(выше).
Скачанный архив со Screen'ом не распаковывается может подкинешь сам файл.
:-? :-? :!!!:
Упс...сорри
Дубль 2
Да было бы интересно послушать!:???:
Кстати большой ли у тебя опыт в этом деле?:???:
З.Ы.:Извиняюсь если сильно загружаю вопросами.:)
Опыт был...:)
Сейчас вот пытаюсь написать что-то более менее
серьозное, но дела...
Как я уже говорил Builder и всякие там ЛКИ
не лучшее средство для написания игр.
Если хочешь нормально во всем разобраться, то
посещай сайты любителей разработки игр
вроде http://www.gamedev.ru
или http://www.gameschool.ru
З.Ы.:Начинать можешь с чего угодно,
но по DirectX лит-ры больше:D
Линки пофиксил...