Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Плавное движение объектов.

12K
22 июля 2005 года
Gangster
9 / / 22.07.2005
Подскажите как сделать в C++Builder
плавное движение объектов(без моргания).
Please!!!
2.0K
25 июля 2005 года
WidowMaker
212 / / 05.04.2005
Цитата:
Originally posted by Gangster
Подскажите как сделать в C++Builder
плавное движение объектов(без моргания).
Please!!!


Подмигиванием ;)
Напиши подробней...Это ты про WM_PAINT и Refresh?
Если да, то Builder тут не причем.

З.Ы.: Не игру ли часом делаешь:P

12K
25 июля 2005 года
Gangster
9 / / 22.07.2005
Цитата:
Originally posted by WidowMaker
Подмигиванием ;)
Напиши подробней...Это ты про WM_PAINT и Refresh?
Если да, то Builder тут не причем.

З.Ы.: Не игру ли часом делаешь:P




Кажется ты меня не так понял. Не подмигиванием, а без него. Вроде бы это называется двойнай буферизация.

З.Ы.: Её самую, аркаду-леталку.

2.0K
26 июля 2005 года
WidowMaker
212 / / 05.04.2005
А что ты юзаешь в качестве полотна? TImage?
Если да, то во первых просто убери с формы
все меняющиеся элементы (там счетчики и т.д.).
Потом рисуй не на канве твоей главной картинки,
а на другой - не видимой. Потом копируй CopyRect'ом. Да, еще одно, не накладывай один визальный TImage на другой и не растягивай картинку (Stretch=false).

З.Ы.:А чем вообще думал, когда сел писать игру на
Builder? Для этого есть вещи помощней :) и попроще
12K
26 июля 2005 года
Gangster
9 / / 22.07.2005
[QUOTE]Originally posted by WidowMaker
А что ты юзаешь в качестве полотна? TImage?
Если да, то во первых просто убери с формы
все меняющиеся элементы (там счетчики и т.д.).
Потом рисуй не на канве твоей главной картинки,
а на другой - не видимой. Потом копируй CopyRect'ом.

Это чё с Image копировать в PaintBox? Если делать так то нельзя поставить Transparent=true. :-?
12K
26 июля 2005 года
Gangster
9 / / 22.07.2005
Цитата:
Originally posted by WidowMaker
Да, еще одно, не накладывай один визальный TImage на другой и не растягивай картинку(Stretch=false).

З.Ы.:А чем вообще думал, когда сел писать игру на
Builder? Для этого есть вещи помощней :) и попроще




А каким образом тогда можно сделать фон?(CopyRect'ом?)

З.Ы.: Ну например?(Может быть Visual C++, а?)

2.0K
26 июля 2005 года
WidowMaker
212 / / 05.04.2005
Цитата:
Originally posted by Gangster
А каким образом тогда можно сделать фон?(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);
}

2.0K
26 июля 2005 года
WidowMaker
212 / / 05.04.2005
Мда... ну и каша...8)
12K
28 июля 2005 года
Gangster
9 / / 22.07.2005
Цитата:
Originally posted by WidowMaker
Пойми Builder не среда разработки игр.
Но игрушку свою я на нем таки когда-то писал.
Клон - фаллаута. (См. скрин из редактора к ней)
Если интересно, то могу рассказать как,
но мой тебе совет - брось или Билдер, или игру.
Если первое, то учи DirectX или OpenGL.
Если второе, то подучи среду разработки(привыкни),
и может напишешь что-то с нуля на DirectX или OpenGL и под Builder'ом.

Думаю разберешься что куда...
А transparent все равно не работает при копировании (выше я показал, как с ним быть)

}



На чём лучше делать игры на DirectX или OpenGL?
Кстати может знаешь какую-нибудь литературу на эту тему или какие-нибудь статьи в Net'е.

А насчёт Transparent'а я не понял где именно(выше).

Скачанный архив со Screen'ом не распаковывается может подкинешь сам файл.







:-? :-? :!!!:

12K
28 июля 2005 года
Gangster
9 / / 22.07.2005
Цитата:
Originally posted by WidowMaker
Но игрушку свою я на нем таки когда-то писал.
Клон - фаллаута. (См. скрин из редактора к ней)
Если интересно, то могу рассказать как,
но мой тебе совет - брось или Билдер, или игру.



Да было бы интересно послушать!:???:
Кстати большой ли у тебя опыт в этом деле?:???:


З.Ы.:Извиняюсь если сильно загружаю вопросами.:)

12K
28 июля 2005 года
Gangster
9 / / 22.07.2005
Цитата:
Originally posted by WidowMaker
Мда... ну и каша...8)




Мда...ты прав...8)

2.0K
28 июля 2005 года
WidowMaker
212 / / 05.04.2005
Цитата:
Originally posted by Gangster
На чём лучше делать игры на DirectX или OpenGL?
Кстати может знаешь какую-нибудь литературу на эту тему или какие-нибудь статьи в Net'е.

А насчёт Transparent'а я не понял где именно(выше).

Скачанный архив со Screen'ом не распаковывается может подкинешь сам файл.


:-? :-? :!!!:



Упс...сорри
Дубль 2

2.0K
28 июля 2005 года
WidowMaker
212 / / 05.04.2005
Цитата:
Originally posted by Gangster
Да было бы интересно послушать!:???:
Кстати большой ли у тебя опыт в этом деле?:???:


З.Ы.:Извиняюсь если сильно загружаю вопросами.:)


Опыт был...:)
Сейчас вот пытаюсь написать что-то более менее
серьозное, но дела...
Как я уже говорил Builder и всякие там ЛКИ
не лучшее средство для написания игр.

Если хочешь нормально во всем разобраться, то
посещай сайты любителей разработки игр
вроде http://www.gamedev.ru
или http://www.gameschool.ru

З.Ы.:Начинать можешь с чего угодно,
но по DirectX лит-ры больше:D

Линки пофиксил...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог