Форум Игромании
 
Регистрация
Справка
Пользователи Календарь Сообщения за день

Ответ
 
Опции темы
Старый 14.11.2006, 00:14   #261
Юзер
 
Аватар для STOLEN
 
Регистрация: 13.05.2006
Сообщений: 273
Репутация: 92 [+/-]
Итак, просмотрев очень очень много бесплатных игровых движков (особенно тчательно просматривал те движки, в которых большое пространство дается новичкам) и пришел к выводу, что на РС их не так уж и много! Сам я изучаю Delphi, за С++ пока не берусь ибо пока это слишком сложный для меня язык. С++ конечно предоставляет хоть какой то выбор движков для поклонников языка (а таковых немало!), но на Delphi я нашел в более мение нормальном состоянии лишь один. Разумеется это GLScene. Конечно он не сравнится с другими более продвинутыми двиглами для С++, но для новичко вроде меня впринцепе подойдет. Больше всего меня взбесило наличиие ошибок в уроках для этого движка! И тут ко мне в голову пришла неожидонная мысль а не создать ли мне свой простинький 3D движок. Начать я решил с простенького квестового двигла от первого лица, где переход от локации к локации происходит щелчком мыши. Не подскажете ли вы где можно достать литературу по написанию собственного движка. И посоветуйте, как лучше это сделать. Заранее блогодарен!
STOLEN вне форума  
Отправить сообщение для STOLEN с помощью ICQ Ответить с цитированием
Старый 14.11.2006, 02:43   #262
Юзер
 
Аватар для ROLF
 
Регистрация: 10.06.2005
Адрес: Мир духов
Сообщений: 156
Репутация: 45 [+/-]
Если я неошибаюсь то сделать это так можно
Цитата:
Public
mx, my : Integer;
Цитата:
procedure TForm1.GLSceneViewer1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
mx:=x; my:=y; //Запомнить координаты мыши

end;

procedure TForm1.GLSceneViewer1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
if Shift<>[] then begin //Если нажата клавиша
GLCamera1.MoveAroundTarget(my-y, mx-x); //Перемещаем камеру вокруг целевого объекта

GLLightSource1.Position:=GLCamera1.Position; //Пусть источник освещения будет рядом с камерой
mx:=x; my:=y;
end;
end;
__________________
--=THE ONE'S clan=--
Миром правят оптимисты а пессимисты там только зрители.
---------------------------
Intel core 2 Duo E6300
GeForse 7600 GT на 256 mb
2X1=2Gb ОЗУ
ROLF вне форума  
Отправить сообщение для ROLF с помощью ICQ Ответить с цитированием
Старый 14.11.2006, 10:36   #263
Кандидат наук
 
Аватар для pokibor
 
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,375
Репутация скрыта [+/-]
Цитата:
Сообщение от STOLEN Посмотреть сообщение
Итак, просмотрев очень очень много бесплатных игровых движков (особенно тчательно просматривал те движки, в которых большое пространство дается новичкам) и пришел к выводу, что на РС их не так уж и много! Сам я изучаю Delphi, за С++ пока не берусь ибо пока это слишком сложный для меня язык. С++ конечно предоставляет хоть какой то выбор движков для поклонников языка (а таковых немало!), но на Delphi я нашел в более мение нормальном состоянии лишь один. Разумеется это GLScene. Конечно он не сравнится с другими более продвинутыми двиглами для С++, но для новичко вроде меня впринцепе подойдет. Больше всего меня взбесило наличиие ошибок в уроках для этого движка! И тут ко мне в голову пришла неожидонная мысль а не создать ли мне свой простинький 3D движок. Начать я решил с простенького квестового двигла от первого лица, где переход от локации к локации происходит щелчком мыши. Не подскажете ли вы где можно достать литературу по написанию собственного движка. И посоветуйте, как лучше это сделать. Заранее блогодарен!
Есть книги о программировании на Delphi под OpenGL и DirectX. По крайней мере, должны быть, но их очень мало, так как большинство людей все-таки пишут под эти библиотеки на C++. А вообще, если выяснишь, как данные библиотеки подключить в Delphi, то можешь брать и C++'ные книги (с.м. http://forum.igromania.ru/showthread.php?t=23543), тебе ж нужны только функции и структуры, а они будут и на Delphi очень похожими. Ну а собственно по созданию движка книг не видел, смотри www.gamedev.ru и другие подобные сайты.
__________________
Товарищ, верь: пройдет она -
Эпоха лживых, злых понятий.
Весь мир очнется ото сна,
И на обломках "демократий"
Напишут наши имена!

Мы были волшебницами (оригинальное фентези)
Тень Войны (фанфик по ГП)
pokibor вне форума  
Отправить сообщение для pokibor с помощью ICQ Ответить с цитированием
Старый 14.11.2006, 23:12   #264
Заблокирован
 
Аватар для Fulcrum
 
Регистрация: 16.09.2006
Адрес: Matrix4x4
Сообщений: 56
Репутация: 10 [+/-]

Предупреждения: 400
Цитата:
Итак, просмотрев очень очень много бесплатных игровых движков (особенно тчательно просматривал те движки, в которых большое пространство дается новичкам) и пришел к выводу, что на РС их не так уж и много! Сам я изучаю Delphi, за С++ пока не берусь ибо пока это слишком сложный для меня язык. С++ конечно предоставляет хоть какой то выбор движков для поклонников языка (а таковых немало!), но на Delphi я нашел в более мение нормальном состоянии лишь один. Разумеется это GLScene. Конечно он не сравнится с другими более продвинутыми двиглами для С++, но для новичко вроде меня впринцепе подойдет. Больше всего меня взбесило наличиие ошибок в уроках для этого движка! И тут ко мне в голову пришла неожидонная мысль а не создать ли мне свой простинький 3D движок. Начать я решил с простенького квестового двигла от первого лица, где переход от локации к локации происходит щелчком мыши. Не подскажете ли вы где можно достать литературу по написанию собственного движка. И посоветуйте, как лучше это сделать. Заранее блогодарен!
Оуу муай гад! Тебе, наивная душа, с десяток умных книжек учить надо, а ты сложную программную систему сос сложной программной архитектурой писать собрался. Впрочем, если нужна будет помощь по конкретным вопросам - стучи в асю =)


А теперь к вопросу об OpenGL. Товарищам, нагло посмевшим заявить о превосходстве DirectX 10 могу предложить посмотреть на следующие расширения:

GL_EXT_geometry_shader4

EXT_gpu_shader4

NV_gpu_program4

Последний раз редактировалось Fulcrum; 15.11.2006 в 02:50.
Fulcrum вне форума  
Ответить с цитированием
Старый 15.11.2006, 11:32   #265
Кандидат наук
 
Аватар для pokibor
 
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,375
Репутация скрыта [+/-]
Цитата:
Сообщение от Fulcrum Посмотреть сообщение
А теперь к вопросу об OpenGL. Товарищам, нагло посмевшим заявить о превосходстве DirectX 10...
Это где ж такие товарищи есть? Как можно заявлять о превосходстве того, чего еще в окончательном варианте нет? А Майкрософту верить - высшая степень наивности .
__________________
Товарищ, верь: пройдет она -
Эпоха лживых, злых понятий.
Весь мир очнется ото сна,
И на обломках "демократий"
Напишут наши имена!

Мы были волшебницами (оригинальное фентези)
Тень Войны (фанфик по ГП)
pokibor вне форума  
Отправить сообщение для pokibor с помощью ICQ Ответить с цитированием
Старый 15.11.2006, 21:07   #266
Юзер
 
Аватар для Xar
 
Регистрация: 21.01.2006
Сообщений: 114
Репутация: 66 [+/-]
Всем доброго времени суток!
Я собирался освоить возможности DirectX 8 для вывода 2D графики. И сразу же столкнулся с проблемой - существуют два способа вывода 2D: через D3DXSprite и через создание квадратных полигонов и текстурирования их - какой из этих способов выбрать? D3DXSprite кажется заметно проще, но, как я подозреваю, у второго способа больше возможностей, в плане вывода графики. Буду очень признателен за любые советы.
P.S: Кроме советов из серии 'зачем осваивать DirectX, если есть хорошие бесплатные 2D движки?'
__________________
"I've done the math enough to know the dangers of a second guessing
Doomed to crumble unless we grow and strenghten our communication." MJK
Xar вне форума  
Ответить с цитированием
Старый 19.11.2006, 03:21   #267
Юзер
 
Аватар для STOLEN
 
Регистрация: 13.05.2006
Сообщений: 273
Репутация: 92 [+/-]
Блин, как я уже писал ранее хочу создать собственный игровой движок. По этой теме прочитал очень много литературы. Но практически во всех статьях и книгах описываются общие принцепы создания, а не сам процесс. Люди, кто нть из вас пробовал написать свой движок? Если кто нть может мне чем то помочь напишите плизз. А то сожусь каждый раз за Delphi и даже незнаю с чего мне начать...Заранее спасибо!
______________________________
Дополняю. Напишу поподробней о моей идее. Короче, хочу написать движок для начала для создания простенького квеста. Главное, чтобы можно было загружать игровые 3D модели и передвигаться. Ни каких мощьных эфектов пока ненадо!

Последний раз редактировалось STOLEN; 19.11.2006 в 03:27.
STOLEN вне форума  
Отправить сообщение для STOLEN с помощью ICQ Ответить с цитированием
Старый 19.11.2006, 04:41   #268
Заблокирован
 
Аватар для Fulcrum
 
Регистрация: 16.09.2006
Адрес: Matrix4x4
Сообщений: 56
Репутация: 10 [+/-]

Предупреждения: 400
Цитата:
Люди, кто нть из вас пробовал написать свой движок? Если кто нть может мне чем то помочь напишите плизз. А то сожусь каждый раз за Delphi и даже незнаю с чего мне начать...Заранее спасибо!
Давайте сделаем так. Вы рассказываете мне о математическом устройстве вселенной, я же расскажу о Software enginering aka проектировании, организации графического конвейара и рендЭре. Идёт? Начинай, рассказывай.

Цитата:
По этой теме прочитал очень много литературы.
Пожалуйста приведи список ( потом я дам свой, и гарантию, что после внимательного изучения моих книг и небольшой практики - вы станете вполне нормальным программером ) . Если скажешь, что много приводить - я тебе скажу - это невозможно. Понимаешь, друг, надо читать не "Borland DelФи для полных дебилов", где в каждой книге обсуждается главный вопрос человечества: гигиеничное построение кнопочек на формачГах, и животрепещущая дисскусссия ( хз сколько "с" %)) вокруг события OnClick. Эти делфийские аффтары друг друга копируют, причём абсолютной забив член на читающих. И ещё - не читайте господа рузких афтароф, они можут быть прекрассными программистами и столь же беспонтовыми преподавателями.

P. S: Чо то я тожа хочу поотвечать на вопросы в разделе "языги программирования". %)) Лавры Покибора мешают мне спать %)
Fulcrum вне форума  
Ответить с цитированием
Старый 19.11.2006, 11:18   #269
Кандидат наук
 
Аватар для pokibor
 
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,375
Репутация скрыта [+/-]
Цитата:
Сообщение от STOLEN Посмотреть сообщение
Но практически во всех статьях и книгах описываются общие принцепы создания, а не сам процесс.
А ты хочешь, чтобы тебе в книги прямо код движка приводили? Нет уж, изволь по изложенным тебе общим принципам создания сам построить интерфейс движка (перед чем было бы нелишним диздок написать), потом понять, какие функции каких библиотек тебе нужны, найти их и разобраться, с какими данными они работают, и только потом начинай кодить. Ни в одной книге тебе пример создания движка не приведут, код того же Irrlicht на пару тысяч страниц точно потянет (это как минимум).
Цитата:
Сообщение от STOLEN Посмотреть сообщение
Люди, кто нть из вас пробовал написать свой движок? Если кто нть может мне чем то помочь напишите плизз. А то сожусь каждый раз за Delphi и даже незнаю с чего мне начать...Заранее спасибо!
Дополняю. Напишу поподробней о моей идее. Короче, хочу написать движок для начала для создания простенького квеста. Главное, чтобы можно было загружать игровые 3D модели и передвигаться. Ни каких мощьных эфектов пока ненадо!
Как ни странно, я создавал нечто подобное на C# (мой первый и последний опыт создания крупного проекта в .NET, заодно я на примере убедился, что для игр эта штука не подходит в принципе ), и могу сказать: сперва досконально изучи возможности OpenGL или Direct3D (на основе чего ты там его создавать решил) - пойми, какие функции уже реализованы, а какие придется писать ручками. И не "содись каждый раз за Делфи" - тебе до начала кодирования еще много предстоит изучить и написать на русском языке . Программирование - это не только набивание кода!
Цитата:
Сообщение от Fulcrum Посмотреть сообщение
потом я дам свой, и гарантию, что после внимательного изучения моих книг и небольшой практики - вы станете вполне нормальным программером
Давай! Мне интересно будет почитать то, что я еще не читал из него.
__________________
Товарищ, верь: пройдет она -
Эпоха лживых, злых понятий.
Весь мир очнется ото сна,
И на обломках "демократий"
Напишут наши имена!

Мы были волшебницами (оригинальное фентези)
Тень Войны (фанфик по ГП)
pokibor вне форума  
Отправить сообщение для pokibor с помощью ICQ Ответить с цитированием
Старый 19.11.2006, 14:37   #270
Юзер
 
Регистрация: 07.06.2006
Адрес: this
Сообщений: 162
Репутация: 112 [+/-]
pokibor
Вот возникли у меня вопросы к тебе по Irrlicht Engine. Так как я в Irrlicht'e ламер вопросы для тебя должны быть простыми.
Первый: необходимо реализовать такую ситуацию: загрузил я из файла 1.bmp(10,70, 70,70) рисунок, как мне сделать так, чтобы при кликании мышкой по этому рисунку он менялся на рисунок этого же файла с координатами(80, 140, 140, 140) Координаты я написал примерно.

Второй: почти как первый. Как сделать так, чтобы при наведении курсором мыши на рисунок он менялся. (использовать координаты и файл из первого вопроса).

Третий: как в Irrlicht'e обрабатывать команды с клавиатуры, т.е. мне надо сделать так: чтобы при нажатии клавиши 'W' или стрелки ВВЕРХ этот рисунок передвигался вверх, при нажатии клавиши 'S' или стрелки ВНИЗ рисунок двигался вниз, и соответственно с клавишами 'A' и 'D' или стрелками ВЛЕВО и ВПРАВО.
Подскажи, пожалуйста!
__________________
www.rodionovstepan.ru
razor21 вне форума  
Отправить сообщение для razor21 с помощью ICQ Ответить с цитированием
Старый 19.11.2006, 15:20   #271
Заблокирован
 
Аватар для Fulcrum
 
Регистрация: 16.09.2006
Адрес: Matrix4x4
Сообщений: 56
Репутация: 10 [+/-]

Предупреждения: 400
Цитата:
Программирование - это не только набивание кода!
Золотые слова. Набивание кода - чуть ли не последний процесс, если включать в этот процесс отладку. Правда потом следует тестирование системы...

Stolen ответьте себе на следующие вопросы:

1 - Могу ли я адекватно выработать требования системы, компоненты.

2 - Что такое грамотная постановка задачи.

3 - Что такое псевдокод? ( одно из самых важных на мой взгляд условий, после того как я открыл для себя данную технику, процесс программирования стал истинным удовольствием ) То есть, по сути программирование превращается в "чёткую формулировку действия или проблемы на родном языке".


СРАЗУ ПРЕДУПРЕЖДАЮ, ЕСЛИ ПРИВИДЁННЫЙ НИЖЕ ПРИМЕР ПОКАЖЕТСЯ ЛОХОВСКИМ И ДЛЯ ДЕТЕЙ, А ТАКЖЕ НАДУМАННЫМ. ДАЙТЕ МНЕ ЗАДАЧУ ЛЮБОГО УРОВНЯ СЛОЖНОСТИ И Я СМОДЕЛИРУЮ ЕЁ АБСОЛЮТНО ТЕМИ ЖЕ МЕТОДАМИ. НА СЛИШКОМ СПЕЦИФИЧЕСКИЕ ЗАДАЧИ МОГУ НЕ ОТВЕТИТЬ - ВПАДЛУ РАЗБИРАТЬСЯ. ТО ЕСТЬ МОГУ ПРОВЕСТИ ПРОЦЕСС ПСЕВДОКОДА ДЛЯ ВАШИХ ЗАДАЧ.


ПРОЧУВСТВУЙТЕ САМОЕ ГЛАВНОЕ - НИТЬ РАССУЖДЕНИЙ. ЗАМЕТЬТЕ, Я РАССУЖДАЮ КАТЕГОРИЯМИ РЕАЛЬНОГО МИРА А НЕ С++ ИЛИ ДЕЛФИ СИМУЛЫ ИЛИ АДА, ИЛИ ДАЖЕ С#. ТАКЖЕ ЗАМЕТЬТЕ, ЧТО ДАННЫЙ ПРИМЕР ПОХ НА ЧОМ РЕАЛИЗОВЫВАТЬ - ОН ОПИСАН В ТЕРМИНАХ ПРЕДМЕТНОЙ ОБЛАСТИ. ПРИМЕР СЛИШКОМ УПРОЩОН ПО СРАВНЕНИИ С ПСЕВДОКОДОМ РЕАЛЬНОЙ СИСТЕМЫ И МЕТОДОВ, ОПУЩЕНЫ ВСЕ "ИСКЛЮЧЕНИЯ" ( THROW - CATCH - TRY ), И МНОГИЕ ВЕЩИ ТАКЖЕ ОПУЩЕНЫ. ХОТЯ ОН И СИЛЬНО УПРОЩОН, НА МОЙ ВЗГЛЯД ОТРАЖАЕТ РЕАЛЬНУЮ КАРТИНУ. ЕСЛИ Я НАПИСАЛ НЕВРАЗУМИТЕЛЬНЫЙ ПРИМЕР ИЛИ УВАЖАЕМЫЕ ЗДЕШНИЕ ПРОГРАММИСТЫ СЧИТАЮТ ЕГО ЛАМЕРСКИМ - МНЕ ВСЁ РАВНО. Я ХОЧУ ПОКАЗАТЬ СМЫСЛ ПСЕВДОКОДА И МОДЕЛИРОВАНИЯ В ТЕРМИНАХ ПРЕДМЕТНОЙ ОБЛАСТИ А НЕ ЯЗЫКА И СИНТАКСИЧЕСКИХ ПРИПИЗДОНОФФ.


EXAMPLE ПСЕВДОКОД ( САМ ПСЕВДОКОД В МЕТОДЕ ):


Например, твоя задача: релизовать "модель автопилота пассажирского самолёта". Можно конечно выделить автопилот в класс, но я считаю это "действием" самолёта и вполне относится к абстракции реального мира, т. е. действию над абстракцией. Ведь у настоящих самолётов есть режим автопилота, правда? В РЕАЛЬНОЙ СИСТЕМЕ Я ЗДЕЛАЛ БЫ ДРУГОЙ МЕТАД ПРИНИМАЮЩИЙ ПЕРЕЧИСЛЯЕМОЕ ЗНАЧЕНИЕ ТЕКУЩЕГО РЕЖИМА ТОЕСТЬ averangeCurrentRegimeFlight(AUTO_PILOT); Но здесь - тестовый пример.

То есть какую абстракцию реального мира можно выделить в класс? Правильно, самолёт. Я думаю хоть мы и пишем систему автоматизации управления пассажирским самолётом, но необходима иерархия. Ведь самолёты могут быть ( не знаю я эту облать, пример придумал на ходу )
"...." и "....". Создавать буду именно абстрактный класс, пренебрегая тем, что у других самолётов может не быть автопилота, т.е. подразумевая что он есть у всех классов самолётов и что совсем ужасно одинаково работает. В реальной, комерческой системе, которыми я занимаюсь я сделал бы метод автопилота абстрактным, то есть объявил его как


virtual Тип Имя(параметры) = 0;


и переобределил для соответствующих дочерних классов.


абстракция пассажирского самолёта:



class Aeroplane;



/* Небольшой отступ, предположим абстракция "пилота", то есть класс "пилот" захочет установить режим "автопилота" на пилотируемом самолёте ( вполне логично, не находишь?), что ему надо сделать в реальном мире? Правильно, "включить автопилот" - именно поэтому метод "автопилот" самолёта приемлем и однозначен. Это абстракция реального мира - это не конструкция С++. Это - действие, а не сухой синтаксис. */

Остановимся на самом методе автопилота. Обматерим падлу так, что смысл действия можно будет понять ВОБЩЕ НЕ СМОТРЯ РЕАЛИЗАЦИЮ, т. е. ***.СРР файл.

ActiveAutopilot(типы параметров).

/* Заметьте, что если метод ActiveAutopilot принадлежал не классу, данное название было бы грубой ошибкой программиста. Его следовало бы назвать так, чтобы полностью документировать суть и "действие". Например AeroPlane_Autopilot(); */

ПРИСТУПИМ К САМОМУ ПСЕВДОКОДУ:

/* параметры должны уже быть фактическими, но для наглядности оставим формальные, тем более я их не определял, заметьте, что по их названию можно безошибочно определить действие не заглядывая в исходный кот. Если, дружог, в твоём коде определены переменные аля "k", "i", "j" - ты хромосом. Даже в цикле данные нуна объявлять например так:

for(int aeroplaneIndex = MIN_AEROPLANE; aeroplaneIndex != MAX_AEROPLANE; aeroplaneIndex++) Понятный код? Тото же.

Или так:

typedef List<Aeroplane> :: iterator aeroplaneIterator;

for(employeeIterator = employeeList.begin(); employeeIterator != employeeList.end(); employeeIterator++)

/*Если кто либо начнёт визжать о скорости выполнения - пусть выпьет кофе и зарубит чугунным паяльником надпись на члене: данные действия происходят во время компиляции, а не во время выполнения! Это вам не агрессивное использование template, где тип определяется во время выполнения. Также всегда ставте {} даже если выражение одно - опять же вы не потеряете ни одного такта вашего драгоценного працессара.*/


// И так, я уже говорил - параметры используем формальные - нарочно!
// да и вспомогательные классы типа Time тоже легко
//реализуются. Запомните, парни: всё что можете скрыть - скрывайте!

void Aeroplane :: ActiveAutopilot(Time TimeAutonomyflight)
{

// Вот сам псевдокод.

Пока не закончилось заданное время автономного полёта или недостигнута конечная точка маршрута, и управление небыло передано основному пилоту - движемся по основному маршруту, летим в следующую точку основного маршрута. Повторяем данные действия. После чего передаём управление пилоту и завершаем работу в режиме "автопилот".

void Aeroplane :: ActiveAutopilot(Time TimeAutonomyflight)
{
while(!EndTime(TimeAutonomyflight)) || !currentRoute.EndPoint() ||

!mainPilot.ActiveFlight())

{

// движемся к точке, возвращённой текущей точкой маршрута

MoveTo(currentRoute.CurrentPoint());

// делаем активной следующую точку маршрута.

currentRoute.ActiveNextPoint();

}

mainPilot.ActiveManagerFlight(); // передаём управление
}


Вот собственно был пример псевдокода - СИЛЬНО УПРОЩЁННЫЙ. В РЕАЛЬНОЙ СИСТЕМЕ МЕТОД БЫЛ БЫ В НЕСКОЛЬКО РАЗ ДЛИННЕЕ И ОБРАБАТЫВАЛ ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ. Но суть я думаю понятна - пытайтесь смоделировать ситуацию в терминах предметной области - то есть здесь: в терминах самолёта, автопилота и пилота а не конструкций С++.

Ещё раз посмотрите пример псевдокода, в нём хоть что нибудь говорится о языке программирования и деталях реализации???

/* Пока не закончилось заданное время автономного полёта или недостигнута конечная точка маршрута, и управление небыло передано основному пилоту - движемся по основному маршруту, летим в следующую точку основного маршрута. Повторяем данные действия. После чего передаём управление пилоту и завершаем работу в режиме "автопилот".
*/

Естественно методы MoveTo() ActiveManagerFlight() а также некоторы классы необходимо реализовать предварительно, но! Посмотрите - какая читабельность!

////////////////////////////////////////////////////////////////////////
Продолжаются вопросы к столену:

4 - Чего я вобще хочу? Не хочется ли мне чего то абстрактного а не определённого конкретного?


4 - Какие методы отладки приложений я знаю?

5 - Что представляет собой высокоуровневая архитектура и чем собственно эта дура отличается от проектирования?

6 - Возьми любой header любой своей программы и выложи интерфейс любого класса включая объявление методов здесь. Если я смогу по имени класса и именам параметрофф панять "что это и что оно собой прдеставляет" то ты убийца Кармака иначе - утчи матчасть %))


Цитата:
Как ни странно, я создавал нечто подобное на C# (мой первый и последний опыт создания крупного проекта в .NET, заодно я на примере убедился, что для игр эта штука не подходит в принципе ),
Вполне подходит. С# подходит для производства, весь вопрос в скорости и недостаточности библитек кода. Также АПИ managed DX 9 был реализован сравнительно недавно, в сравнении с анологичными средствами С++. Если интересно могу дать ссылку на запись форума программистов ( в живую ) на КРИ 2006. Блин они 1 час обсуждали подходит ли этот язык. Формат OGG/
Fulcrum вне форума  
Ответить с цитированием
Старый 19.11.2006, 15:27   #272
Заблокирован
 
Аватар для Fulcrum
 
Регистрация: 16.09.2006
Адрес: Matrix4x4
Сообщений: 56
Репутация: 10 [+/-]

Предупреждения: 400
Мля тупо метод назвал... уберите Active... просто Aeroplane.Autopilot();
И вобще я жестоко ступил... такого метода не должго быть... должен быть метод принимающий текущее состояние полёта:


enum regimeFlight {MAIN_PILOT_MANAGER, AUTO_PILOT, ETC.}

averangeCurrentRegimeFlight(AUTO_PILOT);

то есть должен быть метод устанавливающий режим полёта а не отдельно автопилота...

Цитата:
Давай! Мне интересно будет почитать то, что я еще не читал из него.
*щас... скоро напишу чиать устанешь*

НО ОСНОВНУЮ ИДЕЮ: ПСЕВДОКОД Я ПОКАЗАЛ.
Fulcrum вне форума  
Ответить с цитированием
Старый 19.11.2006, 18:28   #273
Кандидат наук
 
Аватар для pokibor
 
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,375
Репутация скрыта [+/-]
Fulcrum
Грандиозно! Надо бы кинуть на твой пост ссылку как на статью.
Цитата:
Сообщение от razor21 Посмотреть сообщение
Первый: необходимо реализовать такую ситуацию: загрузил я из файла 1.bmp(10,70, 70,70) рисунок, как мне сделать так, чтобы при кликании мышкой по этому рисунку он менялся на рисунок этого же файла с координатами(80, 140, 140, 140) Координаты я написал примерно.
Тебе нужно, во-первых, написать обработчик событий мыши, клавиатуры и прочего, унаследовав его от интерфейса IEventReceiver и переопределить для него метод bool OnEvent(SEvent event). Этот метод будет вызываться при каждом событии от мыши, клавиатуры, GUI и прочего. Таким образом ты сможешь отлавливать события мыши (такие как клики). Ну и при каждом клике проверяешь, не находится ли курсор сейчас на том месте, где у тебя рисунок рисуется (информация об X и Y курсора в момент клика также передается).
Теперь о рисовании рисунка. В твоем случае его нужно рисовать методом
void IVideoDriver::draw2DImage ( video::ITexture * texture, //Рисунок
const core::position2d< s32 > & destPos, //Область, куда он рисуется
const core::rect< s32 > & sourceRect, //Область, которая рисуется
const core::rect< s32 > * clipRect = 0, //Это у тебя будет 0
SColor color = SColor(255, 255, 255, 255), //Это будет SColor(255,255,255,255)
bool useAlphaChannelOfTexture = false //Используется ли Alpha-канал
)
Ну и меняя передаваемую в цикле рендера в sourceRect облать после клика мышью ты добьешься рисования того, что нужно. А вообще см. пример 06.2DGraphics из комплекта примеров, идущего с Irrlicht.
Цитата:
Сообщение от razor21 Посмотреть сообщение
Второй: почти как первый. Как сделать так, чтобы при наведении курсором мыши на рисунок он менялся. (использовать координаты и файл из первого вопроса).
Тут просто можно отслеживать в цикле рендера координаты курсора. Вот пример из кода моей игры:
Код:
if (buttonRect.isPointInside(device->getCursorControl()->getPosition()))
	driver->draw2DImage(buttonTexture, buttonRect.UpperLeftCorner, 
					onRect,0,SColor(255,255,255,255),true);
else
	driver->draw2DImage(buttonTexture, buttonRect.UpperLeftCorner, 
					offRect,0,SColor(255,255,255,255),true);
Здесь device->getCursorControl()->getPosition() - текущие координаты курсора, buttonRect - переменная типа rect<s32>, в которой хранится положение рисунка на экране, isPointInside - метод класса rect, проверяющий нахождение переданной точки в области, ну а про draw2DImage читай выше.

Цитата:
Сообщение от razor21 Посмотреть сообщение
Третий: как в Irrlicht'e обрабатывать команды с клавиатуры, т.е. мне надо сделать так: чтобы при нажатии клавиши 'W' или стрелки ВВЕРХ этот рисунок передвигался вверх, при нажатии клавиши 'S' или стрелки ВНИЗ рисунок двигался вниз, и соответственно с клавишами 'A' и 'D' или стрелками ВЛЕВО и ВПРАВО.
Абсолютно также при помощи наследования от IEventReceiver и переопределения метода bool OnEvent(SEvent event).
Пример см. в 05.UserInterface. Там, правда, он используется для обработки событий от интерфейса, но абсолюто также его можно использовать для обработки сообытий от кнопок и мыши. Вот пример:
Код:
bool BattleEventReceiver::OnEvent(SEvent event)
{
	if (event.EventType == irr::EET_KEY_INPUT_EVENT)
	{
		if (event.EventType == EET_KEY_INPUT_EVENT)
		switch (event.KeyInput.Key)
		{
		case irr::KEY_SPACE:
			if (!event.KeyInput.PressedDown) {
				//Нажата клавиша пробела
				//Константы остальных см. в хелпе
			}
			return true;
	} else if (event.EventType == EET_MOUSE_INPUT_EVENT) {
		switch (event.MouseInput.Event) {
			case irr::EMIE_LMOUSE_PRESSED_DOWN:
				//Нажата левая кнопка мыши
				//в event.MouseInput позиция указателя
				//Константы остальных см. в хелпе
			return true;
		}
	}
	return false;
}
__________________
Товарищ, верь: пройдет она -
Эпоха лживых, злых понятий.
Весь мир очнется ото сна,
И на обломках "демократий"
Напишут наши имена!

Мы были волшебницами (оригинальное фентези)
Тень Войны (фанфик по ГП)
pokibor вне форума  
Отправить сообщение для pokibor с помощью ICQ Ответить с цитированием
Старый 19.11.2006, 20:27   #274
Юзер
 
Регистрация: 07.06.2006
Адрес: this
Сообщений: 162
Репутация: 112 [+/-]
Цитата:
Сообщение от pokibor Посмотреть сообщение
А вообще см. пример 06.2DGraphics из комплекта примеров, идущего с Irrlicht.
Спасибо!
Цитата:
Сообщение от pokibor Посмотреть сообщение
А вообще см. пример 06.2DGraphics из комплекта примеров, идущего с Irrlicht.
Смотрел. Дык там ведь нет про события мыши! Из того примера я научился рисунки рисовать, но про события с клавы и мыши там нет.
pokibor, пожалуйста можно чуток подробнее про первое и, если можно, по понятнее.
__________________
www.rodionovstepan.ru
razor21 вне форума  
Отправить сообщение для razor21 с помощью ICQ Ответить с цитированием
Старый 19.11.2006, 20:41   #275
Юзер
 
Регистрация: 07.06.2006
Адрес: this
Сообщений: 162
Репутация: 112 [+/-]
Цитата:
Сообщение от pokibor Посмотреть сообщение
А вообще см. пример 06.2DGraphics из комплекта примеров, идущего с Irrlicht.
Спасибо!
Цитата:
Сообщение от pokibor Посмотреть сообщение
А вообще см. пример 06.2DGraphics из комплекта примеров, идущего с Irrlicht.
Смотрел. Дык там ведь нет про события мыши! Из того примера я научился рисунки рисовать, но про события с клавы и мыши там нет.
pokibor, пожалуйста можно чуток подробнее про первое и, если можно, по понятнее.
__________________
www.rodionovstepan.ru
razor21 вне форума  
Отправить сообщение для razor21 с помощью ICQ Ответить с цитированием
Старый 19.11.2006, 22:06   #276
Кандидат наук
 
Аватар для pokibor
 
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,375
Репутация скрыта [+/-]
Я ж тебе сказал: пример 05.UserInterface. Там ты поймешь, как наследовать обработчик, и какой метод ему переопределять. Как в этом же методе можно ловить события мыши, я тебе показал в самом нижнем коде выше. Константы для различных клавишь и событий от мыши см. в хелпе. event.KeyInput.PressedDown определяет, нажата клавиша или отпущена. Для мыши нажатие и отпуск кнопок являются различными событиями. event.MouseInput.X и event.MouseInput.Y - координаты курсора мыши в момент нажатия. event.MouseInput.Wheel - на сколько крутанулось колесико мыши (поворот колесика - отдельное событие).
Итак, в итоге ты должен научится отлавливать любые события. Ну а дальше при возникновении события нажатия кнопки мыши ты проверяешь, не в нужном ли тебе rect'е находится курсор и меняешь передаваемый в отрисовку rect. Вроде все понятно изложил, ты главное 05.UserInterface разбери - сразу отпадет большая часть вопросов.
__________________
Товарищ, верь: пройдет она -
Эпоха лживых, злых понятий.
Весь мир очнется ото сна,
И на обломках "демократий"
Напишут наши имена!

Мы были волшебницами (оригинальное фентези)
Тень Войны (фанфик по ГП)
pokibor вне форума  
Отправить сообщение для pokibor с помощью ICQ Ответить с цитированием
Старый 20.11.2006, 06:06   #277
Заблокирован
 
Аватар для Fulcrum
 
Регистрация: 16.09.2006
Адрес: Matrix4x4
Сообщений: 56
Репутация: 10 [+/-]

Предупреждения: 400
Блин... аж стыдно стало, это был крик души, а не статья.

Насчёт С#. Покибор, если интересует живое обсуждение применения данного языка -

http://www.kriconf.ru/2007/rec/KRI_2...ming_forum.ogg

Правда там обсуждается многие аспекты но С# обсуждался слишком часто.
Fulcrum вне форума  
Ответить с цитированием
Старый 20.11.2006, 06:16   #278
Юзер
 
Аватар для Jupiter
 
Регистрация: 13.10.2006
Сообщений: 420
Репутация: 61 [+/-]
Кстати, на sheppard.ru была интересная идея по созданию своего 3-d движка, заключающаяся в том, чтобы спереть оный у Самого Кармака, ибо код движка второй кваки рассекречен ... Самим!
__________________
Настоящий Эгоист всегда счастлив.

"Гомосексуализм ненормально с точки зрения морали и прочей фигни." (c) РатибоР
Jupiter вне форума  
Отправить сообщение для Jupiter с помощью ICQ Ответить с цитированием
Старый 20.11.2006, 07:16   #279
Заблокирован
 
Аватар для Fulcrum
 
Регистрация: 16.09.2006
Адрес: Matrix4x4
Сообщений: 56
Репутация: 10 [+/-]

Предупреждения: 400
Цитата:
Кстати, на sheppard.ru была интересная идея по созданию своего 3-d движка, заключающаяся в том, чтобы спереть оный у Самого Кармака, ибо код движка второй кваки рассекречен ... Самим!
Привет из 2006. Рассекресен код Quake 3. Хотя может и нет. У меня есть по крайней мере %)) Только не читал пока нормально...
Fulcrum вне форума  
Ответить с цитированием
Старый 20.11.2006, 07:33   #280
Юзер
 
Аватар для Jupiter
 
Регистрация: 13.10.2006
Сообщений: 420
Репутация: 61 [+/-]
Цитата:
Сообщение от Fulcrum Посмотреть сообщение
Привет из 2006. Рассекресен код Quake 3. Хотя может и нет. У меня есть по крайней мере %)) Только не читал пока нормально...
Ой, а мы и не знали! Но я просто разместил объяву, че за предъявы! Просто программирование игр не по моей части .
__________________
Настоящий Эгоист всегда счастлив.

"Гомосексуализм ненормально с точки зрения морали и прочей фигни." (c) РатибоР
Jupiter вне форума  
Отправить сообщение для Jupiter с помощью ICQ Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 12:14.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Rambler's Top100 Яндекс цитирования