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

Ответ
 
Опции темы
Старый 14.12.2006, 11:12   #341
Кандидат наук
 
Аватар для pokibor
 
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,375
Репутация скрыта [+/-]
Цитата:
Сообщение от ZaVok Посмотреть сообщение
Evil.Hard наверное имеет ввиду пример Render to Texture.
Нет, мы вообще-то о DirectShow говорим. Он имел ввиду пример Texture3D9 из примеров DirectShow.
Цитата:
Сообщение от ZaVok Посмотреть сообщение
А можно накладывать анимированную текстуру на объекты?
Конечно, можно. Только что ты понимаешь под анимированной текстурой? Если просто "запихнуть, а там Irrlicht сам разберется", то все не так просто. Тебе нужно реализовать это все самому. Я, например, уже сделал возможность создания анимированной текстуры при помощи пиксельных шейдеров (это, вообще говоря, элементарно), а теперь занимаюсь делом посложнее - хочу перевести вышеупомянутый пример под Irrlicht и сделать такую текстуру из видеофайла.
---
Все! Проблема решена. Я сделал класс, который генерит в Irrlicht текстуру на основе видеофайла, то есть гипотетически можно ренедерить видео прямо на юнита, например. Кого интерисует, как такое сделать - спрашивайте, помогу.
__________________
Товарищ, верь: пройдет она -
Эпоха лживых, злых понятий.
Весь мир очнется ото сна,
И на обломках "демократий"
Напишут наши имена!

Мы были волшебницами (оригинальное фентези)
Тень Войны (фанфик по ГП)

Последний раз редактировалось pokibor; 14.12.2006 в 17:13.
pokibor вне форума  
Отправить сообщение для pokibor с помощью ICQ Ответить с цитированием
Старый 15.12.2006, 19:52   #342
Юзер
 
Аватар для ZaVok
 
Регистрация: 06.11.2005
Адрес: кому надо спросит.
Сообщений: 140
Репутация: 28 [+/-]
Кто-нибудь знает, как в Newton-е делать Character'а?
Ну аналог FPSCamer-ы c коллизией в ирлихте. Ирлихтовский вариант меня не устраивает, часто бывает так, что персонаж застревает в полу,
и не поднимается по лесенкам. У Newton-а есть конечно пример, как это сделать, но я в нем не смог разобраться, потому что пример пользует для вывода картинки на экран какие-то сторонние библиотеки, все процедуры свалены в кучу... вобщем нечитабельно это для меня ещё.

Пытался делать по своему, но это больше похоже на катание на воздушной подушке. Помогите, не знаю что делать.
__________________
Эта подпись всех задолбает!!!
Ну а хотя, кто её знает?
ZaVok вне форума  
Ответить с цитированием
Старый 15.12.2006, 21:47   #343
Guest
 
Сообщений: n/a
Люди, кто знает как и хочет помочь в создании игры. Пишем вдвоем 3D RTS на С++. Есть ландшафт, UI, юниты и основы AI, вражеский AI в разработке. Нужна графика и сценарий. Если есть кто-то кто программирует на C++ под DirectX, и имеет недюжинный опыт, то откликнитесь. И вопрос, как лучше делать AI врага в игре : шаблоны, нейронные сети, конечный автомат?
 
Ответить с цитированием
Старый 15.12.2006, 22:22   #344
Кандидат наук
 
Аватар для pokibor
 
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,375
Репутация скрыта [+/-]
Цитата:
Сообщение от Skeletron Посмотреть сообщение
Люди, кто знает как и хочет помочь в создании игры. Пишем вдвоем 3D RTS на С++. Есть ландшафт, UI, юниты и основы AI, вражеский AI в разработке. Нужна графика и сценарий.
Даже странно как-то. Обычно у начинающих разработчиков что-то, а сценарий готов в первую очередь . Впорочем, подход хороший. Потому что обычно новички дальше сценария так и не уходят.
Цитата:
Сообщение от Skeletron Посмотреть сообщение
Если есть кто-то кто программирует на C++ под DirectX, и имеет недюжинный опыт, то откликнитесь.
Я имею, хотя пишу не непосредственно под DirectX, а использую движок Irrlicht. По сценарию можете вдохновение черпать в теме по моей игре: .http://forum.igromania.ru/showthread.php?t=23913. Там есть предыстория. Только чур не воровать внаглую .
Цитата:
Сообщение от Skeletron Посмотреть сообщение
И вопрос, как лучше делать AI врага в игре : шаблоны, нейронные сети, конечный автомат?
Хороший вопрос. Мы сейчас у себя делаем на основе CBR (возможность обучения) + нечеткая логика, если CBR результатов не принес. шаблоны отпадают сразу - так делают в каждой второй стратегии, и я считаю это примитивным. Нейронные сети слишком сложно - во первых, такому сложному делу вы их не сможите научить, во вторых даже если сможите - они будут работать крайне медлено. Конечный автомат... Практически шаблоны. И то, и другое по сути скриптовый способ, и мнение мое по этому поводу соответсвующее.
Итак, я рекомендую обратить внимание на CBR и нечеткую логику. Возможно также попробовать сделать многоагентную систему, но это скорее уже не к AI противника имеет отношение, а к индивидуальному AI юнита. Хотя как раз его и конечным автоматом можно сделать. но многоагентная система интереснее - например, сделать так, чтобы он мог "общаться" с близлежащими своими. Если "свой" видит врага, а юнит нет, то "свой" ему может сказать об этом. Таким образом, если выстроится цепочка юнитов и враг подойдет с фланга, то о нем узнает вся цепочка, а не только стоящие рядом с местом нападения юниты.
P.S. Как вы понимаете, присоединится я к вам не могу - у меня свой проект есть. Но если будут вопросы - обращайтесь.
__________________
Товарищ, верь: пройдет она -
Эпоха лживых, злых понятий.
Весь мир очнется ото сна,
И на обломках "демократий"
Напишут наши имена!

Мы были волшебницами (оригинальное фентези)
Тень Войны (фанфик по ГП)
pokibor вне форума  
Отправить сообщение для pokibor с помощью ICQ Ответить с цитированием
Старый 17.12.2006, 02:52   #345
Новичок
 
Регистрация: 04.12.2006
Сообщений: 18
Репутация: 1 [+/-]
Народ, есть вопрос. Ковырялся в хелпе, но так и не нашел, можно ли как-то выводить кроме старых добрых фпс еще и кол-во полигонов в сцене? Нужно сие счастье для контроля и оптимизации.
BlueSky вне форума  
Ответить с цитированием
Старый 17.12.2006, 09:49   #346
Юзер
 
Аватар для ZaVok
 
Регистрация: 06.11.2005
Адрес: кому надо спросит.
Сообщений: 140
Репутация: 28 [+/-]
я конечно не уверен, но можешь попробовать:
Цитата:
int fps = driver->getFPS();
if (lastFPS != fps)
{
wchar_t tmp[1024];
swprintf(tmp, 1024, L"Newton Example [fps:%d] [triangles:%d]",
fps, driver->getPrimitiveCountDrawn());
device->setWindowCaption(tmp);
lastFPS = fps;
}
Этим кодом прога выводит FPS и количество полигонов.
Я код взял из примера для Newton-а, с выводом графики на иррлихте.
Ты конечно умный человек, но на всякий случай(а так же для потенциальных читателей) скажу, что этот код нужно засовывать в цикл, в котором ты выводишь графику на экран.
__________________
Эта подпись всех задолбает!!!
Ну а хотя, кто её знает?
ZaVok вне форума  
Ответить с цитированием
Старый 17.12.2006, 21:04   #347
Новичок
 
Регистрация: 04.12.2006
Сообщений: 18
Репутация: 1 [+/-]
Таки спасибо большое, осталось теперь ньютон прикрутить.
BlueSky вне форума  
Ответить с цитированием
Старый 18.12.2006, 09:30   #348
Новичок
 
Регистрация: 04.12.2006
Сообщений: 18
Репутация: 1 [+/-]
Господа, просьба к вам не бросать в меня тухлыми помидорами, называть нубом и ламером можно (ну не программер я, не программер).
Однако не мог бы кто-нибудь плюнуть в меня ссылочкой или отписать как же все-таки правильно пользоваться иррлихтовским хелпом?
У меня сейчас встала проблема вычитать конфиг-файл. Хочу для этого пользоваться ирллихтовскими классами.
Я так понимаю мне для этого нужно воспользоваться вот этим:
Код:
virtual s32 irr::io::IReadFile::read  (  void *  buffer,  
s32  sizeToRead 
)  [pure virtual]
Reads an amount of bytes from the file.
Не мог бы кто-нибудь подробно описать что и откуда мы берем из хелпа, как записываем и как применяем (типа вот в хелпе записано вот так, значит нам нужно это вызывать вот таким образом, и писать вот так)? Потому что по ходу я попросту не понимаю как пользоваться хелпом и из-за этого ничего толком не могу сделать и слегка нервничаю.
BlueSky вне форума  
Ответить с цитированием
Старый 18.12.2006, 10:51   #349
Кандидат наук
 
Аватар для pokibor
 
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,375
Репутация скрыта [+/-]
Цитата:
Сообщение от BlueSky Посмотреть сообщение
Господа, просьба к вам не бросать в меня тухлыми помидорами, называть нубом и ламером можно (ну не программер я, не программер).
А нельзя сперва научится и стать программером, а потом уже приниматься за изучение движка, который, вообще-то и не предназначен для простых смертных?
Цитата:
Сообщение от BlueSky Посмотреть сообщение
Однако не мог бы кто-нибудь плюнуть в меня ссылочкой или отписать как же все-таки правильно пользоваться иррлихтовским хелпом?
Ну для начала выучить английский хоть на техническом уровне, потом открыть файл с хелпом и, прочитав меню, кликнуть на нужном тебе разделе. Или тебе еще подробнее?
Цитата:
Сообщение от BlueSky Посмотреть сообщение
У меня сейчас встала проблема вычитать конфиг-файл. Хочу для этого пользоваться ирллихтовскими классами.
Честно говоря, я не совсем понимаю, зачем ими пользоваться, когда в C++ есть функции, делающие то же самое и даже больше? Единственный вариант - для обеспечения кроссплатформенности кода, но функции fwrite/fread (как раз и предназначенные для чтения двоичных файлов) входят в стандартные библиотеки!
Кстати, обычно под "конфигом" понимают текстовый файл, а не двоичный, посему пользоватья функциями для чтения двоичных файлов не совсем удобно.
Цитата:
Сообщение от BlueSky Посмотреть сообщение
Я так понимаю мне для этого нужно воспользоваться вот этим:
Код:
virtual s32 irr::io::IReadFile::read  (  void *  buffer,  
s32  sizeToRead 
)  [pure virtual]
Reads an amount of bytes from the file.
Не мог бы кто-нибудь подробно описать что и откуда мы берем из хелпа, как записываем и как применяем (типа вот в хелпе записано вот так, значит нам нужно это вызывать вот таким образом, и писать вот так)? Потому что по ходу я попросту не понимаю как пользоваться хелпом и из-за этого ничего толком не могу сделать и слегка нервничаю.
Скорее ты не понимаешь, что такое файл и как им пользоваться без помощи виндосовского "Блокнота", ибо фразы "Reads an amount of bytes from the file" достаточно. Как я уже говорил, движок (и, соответственно, хелп) не предназначен для использования лицами, не достигшими вменяемого знания программирования вообще и C++ в частности, и потому в них не будет ничего разжовываться.
Но на твой вопрос отвечу. Очевидно, что данная функция (точнее, метод интерфейса IReadFile) читает из файла несколько байт (их количество определяется переменной sizeToRead) начная с текущей позиции указателя и записывает их в буффер, ссылка buffer на которою сюда также передается. Очевидно, что под буффер нужно выделить память не меньшую, чем количество запрашиваемых байт.
Если ты не понял ничего из написаного выше мною (а так, скорее всего, и есть) и не знаешь, что такое интерфейс, за чем он нужен и как выделять память в указатель (а также что за тип такой void), то я не буду устраивать тебе тут курс языка C++, а пошлю в http://forum.igromania.ru/showthread.php?t=23543, где ты сможешь скачать нормальную книгу и изучить-таки C++. А иначе скоро пойдут вопросы "а что такое виртуальные функции", "а как наследовать от класса" и им подобные.
__________________
Товарищ, верь: пройдет она -
Эпоха лживых, злых понятий.
Весь мир очнется ото сна,
И на обломках "демократий"
Напишут наши имена!

Мы были волшебницами (оригинальное фентези)
Тень Войны (фанфик по ГП)
pokibor вне форума  
Отправить сообщение для pokibor с помощью ICQ Ответить с цитированием
Старый 18.12.2006, 13:03   #350
Новичок
 
Регистрация: 04.12.2006
Сообщений: 18
Репутация: 1 [+/-]
Цитата:
Сообщение от pokibor Посмотреть сообщение
А нельзя сперва научится и стать программером, а потом уже приниматься за изучение движка, который, вообще-то и не предназначен для простых смертных?
Спасибо за отзыв, вот только ему не хватает немножко отзывчивости.
Что такое файл и как им пользоваться, я знаю.
Код:
FILE *configFile = fopen("config.cfg", "r");
char configValues [1001];
memset(configValues, 0, 1001);
fscanf(configFile, configValues);
fclose(configFile); //тупо, но эффективно, 2 минуты на набор кода
Код соорудить не было для меня проблемой, все-таки паскаль и делфи дали о себе знать. Так что опыт программирования у меня есть, но программистом я, к моей вящей радости, не являюсь.
Цитата:
Ну для начала выучить английский хоть на техническом уровне, потом открыть файл с хелпом и, прочитав меню, кликнуть на нужном тебе разделе. Или тебе еще подробнее?
Кандидатский экзамен по английскому считается? (ВУЗ - БелГосУинвер Информатики и Радиоэлектроники (старый добрый МРТИ), специальность - микроэлектроника, наверное даже техническая )
Хелп открываю, читаю. Что выполняет каждая функция - написано вполне понятно на вполне читабельном аглицком. Понятно какие параметры даже туда запихивать, какого типа они дожны быть, а вот как их вызывать - совершенно непонятно.
Цитата:
Честно говоря, я не совсем понимаю, зачем ими пользоваться, когда в C++ есть функции, делающие то же самое и даже больше? Единственный вариант - для обеспечения кроссплатформенности кода, но функции fwrite/fread (как раз и предназначенные для чтения двоичных файлов) входят в стандартные библиотеки!
Кстати, обычно под "конфигом" понимают текстовый файл, а не двоичный, посему пользоватья функциями для чтения двоичных файлов не совсем удобно.
Затем, чтобы не городить велосипед и пользоваться тем, что предоставляет движок. Если понадробиться, я его побайтно считаю и расковыряю что мне и куда нужно, но хотелось бы по-нормальному использовать всю мощь движка.
А вообще просто попался именно этот пример для вопроса. Минут 15 до написания поста был бы другой пример.
Цитата:
Скорее ты не понимаешь...
См выше. Если мне будет нужно, то буду как старом добром паскале выделять память поэлементно и с нею возиться, это не проблема - благо паскаль научил тому, что такое динамические типы данных...
В результате получил ответ на совершенно другой вопрос. Еще и скрепленный изрядной долей негодования от "гуру", вместо того, чтобы уточнить или разобраться, что спрашивают, ладно, всякое бывает, и даже посты в топике не соответсвуют теме оного, и с ноги можно не той встать и т.п.
Переформулирую и оконкретизирую вопрос с учетом вышенаписанного.
Не мог бы кто-нибудь кратко и внято (желательно с минимумом сленговых словечек и профжаргона) объяснить как вызовы функций сообразуются с их описанием в ирллихтовском хелпе? Или ссылкой в меня плюнет. А то на дотнет прийдется перейти, чего бы мне карйне не хотелось бы.
BlueSky вне форума  
Ответить с цитированием
Старый 18.12.2006, 14:01   #351
Новичок
 
Аватар для L'ombre
 
Регистрация: 07.03.2006
Адрес: !here();
Сообщений: 38
Репутация: 26 [+/-]
Цитата:
Сообщение от BlueSky Посмотреть сообщение
Что такое файл и как им пользоваться, я знаю.
о, да, ты это прекрасно продемонстрировал
pokibor правильно сказал. прежде чем читать документацию по движку, не мешало бы документацию по функциям стандатной библиотеки почитать..
Цитата:
Сообщение от BlueSky Посмотреть сообщение
fscanf(configFile, configValues);
этот вызов не делает ничего;
из этой ссылки должно быть понятно почему - http://www.cplusplus.com/ref/cstdio/fscanf.html
собственно сам вопрос -
Цитата:
Сообщение от BlueSky Посмотреть сообщение
как вызовы функций сообразуются с их описанием в ирллихтовском хелпе?
- функция делает то, что про неё написано в описании..
(что именно из "Reads an amount of bytes from the file." непонятно?)
__________________
Use the Darkness that you have inside

Последний раз редактировалось L'ombre; 18.12.2006 в 14:32.
L'ombre вне форума  
Ответить с цитированием
Старый 18.12.2006, 14:54   #352
Новичок
 
Аватар для mag_TbMbI
 
Регистрация: 18.12.2006
Сообщений: 3
Репутация: 7 [+/-]
А может кто-нибудь ответить на вопрос
что такое движок и какие функции он должен обеспечивать?
mag_TbMbI вне форума  
Отправить сообщение для mag_TbMbI с помощью ICQ Ответить с цитированием
Старый 18.12.2006, 15:36   #353
Кандидат наук
 
Аватар для pokibor
 
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,375
Репутация скрыта [+/-]
BlueSky

Ой, ржу!
С тобой, о великий программист, все ясно! Я-то думал, ты вообще ничего не понимаешь в программировании (ну ошибся, начал учить что-то раньше времени - всякое бывает), а оказывается, ты, что-то понимая, умудрился сесть за построенный на интерфейсах C++ - движок абсолютно без знания объектно-ориентированного программирования (это слегка описывает твое понимание программирования как "нулевое")! Потому что если бы ты его хоть немного знал, то вопроса "как вызовы функций сообразуются с их описанием в ирллихтовском хелпе" (тем более, после того, как я тебе сказал, что это не функция, а метод интерфейса) не могло возникнуть в принципе. Короче, все, что я написал, остается в силе. И ссылка то же. Читай, что такое классы (интерфейс - полностью абстрактный класс), для чего они и с чем их едят. А потом садись за движок, требующий этих знаний.
P.S. Уж не знаю, как ты на Дельфи писал (все-таки Object Pascal тоже объектно ориентированный язык), но объектная половина языка явно прошла мимо тебя.

Цитата:
Сообщение от mag_TbMbI Посмотреть сообщение
А может кто-нибудь ответить на вопрос
что такое движок и какие функции он должен обеспечивать?
Точного определения не существует. В моем понимании движок - грамотно спроектированная и структурированная совокупность классов/интерфейсов/функций, предназначенная для решения некого набора задач разработческого характера. Какие функции он должен обеспечивать зависит от того, какая задача перед ним поставлена (т.е. для разработок в какой области он предназначен).
__________________
Товарищ, верь: пройдет она -
Эпоха лживых, злых понятий.
Весь мир очнется ото сна,
И на обломках "демократий"
Напишут наши имена!

Мы были волшебницами (оригинальное фентези)
Тень Войны (фанфик по ГП)

Последний раз редактировалось pokibor; 18.12.2006 в 16:12.
pokibor вне форума  
Отправить сообщение для pokibor с помощью ICQ Ответить с цитированием
Старый 19.12.2006, 02:06   #354
Новичок
 
Регистрация: 04.12.2006
Сообщений: 18
Репутация: 1 [+/-]
Ну заменить fscanf на fread и все будет работать. Это не суть важно, хотя мне не совсем понятно зачем было в Сях городить такой огород с вводом-выводом.
Перефразировать вопрос больше не буду, ибо вы напрочь не хотите его понимать - для вас это "слишком низкий уровень".
А сейчас начнутся крики наподобие "все ламеры руки прочь от ООП", "побойся Страуструпа" и т.п.
Однако это не изменит того, что ООП - это просто чуть более удобная организация процесса программирования как такового, с возможностью абстрагироваться от основ, чтобы, потеряв в производительности (с современными мощностями это, обычно, не так уж и страшно, хотя видеть тот же Х3, тормозящий на хай-энд железе просто противно, хотя игра красивая, ничего не скажешь), увеличить простоту создания программ и скорость их создания.
Что у нас там есть в ООП:
1. Инкапсуляция
2. Наследование
3. Полиморфизм
Итак.
1. Есть переменные глобальные и локальные. Использование только локальных переменных и переопределение их внутри функций и процедур в зависимости от типа, который нужен, а также хранение функций и процедур вне основной программы, даст эффект инкапсуляции.
2. Вызовы одной одной функции в другой, с добавлением своих функций, а другой в третьей, с добавлением своих функций, дает нам наследование, как таковое.
3. Самый простой и доступный пример - функция сортировки, которая получаемое множество данных преобразует к одному виду, после чего им оперирует, а на выходе выполняет обратное преобразование, так получаем полиморфизм.
Вот и весь хваленый ООП. Так что можно называть как душе угодно, главное понимать, как это работает.
А теперь можете реветь тут как раненые белуги, называть меня последним законченным ламерюгой, ничего не понимающим в программировании, а уж тем более в ООП. Разрешаю. Даже с удовольствием почитаю как-нибудь на досуге.
Только не забывайте, что ООП - это всего лишь частный случай системного подхода, не больше и не меньше.
P.S. А за ссылочку на книги - спасибо.
BlueSky вне форума  
Ответить с цитированием
Старый 19.12.2006, 11:18   #355
Кандидат наук
 
Аватар для pokibor
 
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,375
Репутация скрыта [+/-]
Цитата:
Сообщение от BlueSky Посмотреть сообщение
Ну заменить fscanf на fread и все будет работать.
О, да! Еще как! Вот только для fread необходимо 4 аргумента, а не 2. Так что работать все равно не будет. И у меня складывается впечатление, что ты сейчас, стремясь показать свои знания, быстренько пытаешься найти что-то, похожее на правильный ответ на вопрос, тогда как сам подобного кода никогда не писал.
Цитата:
Сообщение от BlueSky Посмотреть сообщение
Это не суть важно, хотя мне не совсем понятно зачем было в Сях городить такой огород с вводом-выводом.
"В Сях" никакого огорода нет! Наоборот, есть максимально гибкая концепция, сильно упрощающая ввод/вывод и обеспечивающая дополнительные возможности.
Цитата:
Сообщение от BlueSky Посмотреть сообщение
Перефразировать вопрос больше не буду, ибо вы напрочь не хотите его понимать - для вас это "слишком низкий уровень".
Напротив, мы прекрасно поняли: ты не знаешь, что такое "интерфейс", "класс" и как ими пользоваться. Уровень действительно низкий, потому что для решения проблемы нужно провести следующую цепочку рассуждений:
IReadFile - интерфейс и Irrlicht вообще построен на интерфейсах, значит, скорее всего, объект с таким интерфейсом нужно откуда-то получать, а не создавать самому. Откуда можно получить файл? Из файовой системы. Глаза сами бегут к интерфейсу IFileSystem в хелпе. А откуда получать файловую систему - основополагающий объект? Очевидно, из "главного интерфейса" - IIrrlichtDevice. Так что все в хелпе есть, нужно только обладать базовыми знаниями ООП и уметь читать.
Цитата:
Сообщение от BlueSky Посмотреть сообщение
А сейчас начнутся крики наподобие "все ламеры руки прочь от ООП", "побойся Страуструпа" и т.п.
Ничуть. Единственный крик - "ламер, учись!".
Цитата:
Сообщение от BlueSky Посмотреть сообщение
Однако это не изменит того, что ООП - это просто чуть более удобная организация процесса программирования как такового, с возможностью абстрагироваться от основ, чтобы, потеряв в производительности (с современными мощностями это, обычно, не так уж и страшно, хотя видеть тот же Х3, тормозящий на хай-энд железе просто противно, хотя игра красивая, ничего не скажешь), увеличить простоту создания программ и скорость их создания.
И с какой такой стати ООП тормозит, а? Компиляторы оптимизируют его так, что разницы в скорости нет никакой. Да и откуда ей взятся? Класс? Да это просто автоматическая передача в функцию некой структуры (записи по терминалогии Паскаля). Виртуальные функции? Switch в чистом виде. То есть ООП упрощает процесс программирования, нисколько не тормозя его. И не надо сваливать нежелание программистов заниматься оптимизацией на ООП. Но главное достоинство ООП - серьезнейшее облегчение повторного использования кода (для чего все это и придумывали).
Цитата:
Сообщение от BlueSky Посмотреть сообщение
Что у нас там есть в ООП:
1. Инкапсуляция
2. Наследование
3. Полиморфизм
Теория... Ты на практике хоть что-то из этого использовал? Видимо, нет.
Цитата:
Сообщение от BlueSky Посмотреть сообщение
1. Есть переменные глобальные и локальные. Использование только локальных переменных и переопределение их внутри функций и процедур в зависимости от типа, который нужен, а также хранение функций и процедур вне основной программы, даст эффект инкапсуляции.
Да ладно! А как же private и protected-функции? Класс, как я уже говорил, можно представить как структуру и набор функций, в которые эта структура передается по умолчанию. Так вот - в структурах все переменные открыты и полностью доступны (public), то есть эффекта инкапсуляции невозможно добится без поддержки языком ООП.
Цитата:
Сообщение от BlueSky Посмотреть сообщение
2. Вызовы одной одной функции в другой, с добавлением своих функций, а другой в третьей, с добавлением своих функций, дает нам наследование, как таковое.
И так мы вызываем функции друг в друге, пока не запутаемся что там к чему относится. Не забыл, что у нас нет private и protected-функций? А ведь основной смысл наследования - это полиморфизм и возможность использования в качестве ссылки на родителя ссылки на ребенка. У тебя же это выливается в кучу струтур с частично одинаковыми параметрами, причем в функции тебе придется делать case для каждой такой струтуры (на паскале, в C все несколько проще за счет адресной арифметики).
Вывод - механизм наследования делает за тебя часть работы, а на некоторых языках программирования еще и оптимизирует код. Ну и разумеется про естественное упрощение восприятия кода забывать не следует.
Цитата:
Сообщение от BlueSky Посмотреть сообщение
3. Самый простой и доступный пример - функция сортировки, которая получаемое множество данных преобразует к одному виду, после чего им оперирует, а на выходе выполняет обратное преобразование, так получаем полиморфизм.
Что за чушь? Полиморфизм как раз и включает в себя интерфейсы, абстрактные классы и виртуальные функции. Похоже, для тебя это все пустой звук. Да, полиморфизм в не ООП-коде сводится к обычному switch'у, но использовать его, опять же, естественнее и удобнее. А на интерфейсах сейчас построенно огромное множется сложных систем, взять хотя бы тот же Irrlicht.
Цитата:
Сообщение от BlueSky Посмотреть сообщение
Вот и весь хваленый ООП. Так что можно называть как душе угодно, главное понимать, как это работает.
И ты только что прекрасно продемонстрировал, что не понимаешь этого.
Цитата:
Сообщение от BlueSky Посмотреть сообщение
А теперь можете реветь тут как раненые белуги, называть меня последним законченным ламерюгой, ничего не понимающим в программировании, а уж тем более в ООП. Разрешаю. Даже с удовольствием почитаю как-нибудь на досуге.
Насчет процедурного программирования не знаю, а в ООП ты действительно ничего не понимаешь.
Цитата:
Сообщение от BlueSky Посмотреть сообщение
Только не забывайте, что ООП - это всего лишь частный случай системного подхода, не больше и не меньше.
ООП - основа всей современной концепции программирования, база языков типа Java и C# и простейший путь реализции сложной системы, над которой работает более одного человека. Но ты можешь ползать на четвереньках и утешать себя тем, что езда на автомобиле - лишь частный случай передвижения.
__________________
Товарищ, верь: пройдет она -
Эпоха лживых, злых понятий.
Весь мир очнется ото сна,
И на обломках "демократий"
Напишут наши имена!

Мы были волшебницами (оригинальное фентези)
Тень Войны (фанфик по ГП)
pokibor вне форума  
Отправить сообщение для pokibor с помощью ICQ Ответить с цитированием
Старый 20.12.2006, 17:57   #356
Новичок
 
Аватар для mag_TbMbI
 
Регистрация: 18.12.2006
Сообщений: 3
Репутация: 7 [+/-]
Question

А почему собственно никто не горит желанием написать движок с нуля?
mag_TbMbI вне форума  
Отправить сообщение для mag_TbMbI с помощью ICQ Ответить с цитированием
Старый 20.12.2006, 18:02   #357
Кандидат наук
 
Аватар для pokibor
 
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,375
Репутация скрыта [+/-]
Цитата:
Сообщение от mag_TbMbI Посмотреть сообщение
А почему собственно никто не горит желанием написать движок с нуля?
А зачем? Готовый движок (хороший движок, вроде Irrlicht) представляет собой надстройку над графическими библиотеками, просто ускоряющую процесс разработки без ограничения возможностей. Разработка собственного движка обернется затратой большого количества времени, а нечто лучше Irrlicht все равно не выйдет. К тому же прежде чем писать свой движок, изучить готовый точно будет не лишним!
__________________
Товарищ, верь: пройдет она -
Эпоха лживых, злых понятий.
Весь мир очнется ото сна,
И на обломках "демократий"
Напишут наши имена!

Мы были волшебницами (оригинальное фентези)
Тень Войны (фанфик по ГП)
pokibor вне форума  
Отправить сообщение для pokibor с помощью ICQ Ответить с цитированием
Старый 21.12.2006, 00:48   #358
Юзер
 
Аватар для STOLEN
 
Регистрация: 13.05.2006
Сообщений: 273
Репутация: 92 [+/-]
Цитата:
А почему собственно никто не горит желанием написать движок с нуля?
Почему не говорит? Чиай тему. Я раньше хотел написать нечто вроде движка. Считал, что так будет проще разобраться в скриптах! Но, разумеется не чего приличного не вышло и мне пришлось воспользоваться бесплатными двиглами! Кстати, если вы уже довольно хорошо разбираетесь в программировании, то поймете, что в написании собственного движка просто нет смысла. Если конечно вы не хотите написать комерчискую игру. Для свободных проектов можно спокойно использовать тот же Ittlicht. Тем более, что Ittlicht далеко не предел! Есть еще пару неплохих движков обладающие отличными возможностями для разработки своих собственных приложений. Кстати, если у тебя возникли проблемы то в сети ты можешь найти большое количиство уроков для каждого движка! Тем более, что на многих форумах обсуждаются решения многих проблем которые могут возникнуть с их освоением, а вот четкого листинга для написания собственного движка ты с большей вероятностью не найдешь. Да и на форумах тебе врят ли помогут решить многие проблемы. Есть еще одна проблема, по которой я бы не советовал тебе писать свой движок это огромное количиство глюков и ошибок! Пока ты будешь устранять ту или иную ошибку ты мог бы за это время спокойно написать неплохое приложение на уже готовом двигле. Если тебя не устраивает язык на котором написан движок, а в основном это С++ то тебе прямая дорога учиться и читься. Поверь мне не зная языка ты врят ли сможешь что написать. Лично я раньш рабтоя на Delphi сейчас полностью перешел на С. Осваивать его конечно по началу сложно, но потом язык предоставит тебе такие возможности, о которых ты реньше и мечтать не мог! Ну, конечно многие со мной могут и не согласиться...но это моя точка зрения. Удачи в написании игр!
STOLEN вне форума  
Отправить сообщение для STOLEN с помощью ICQ Ответить с цитированием
Старый 21.12.2006, 13:58   #359
Новичок
 
Аватар для mag_TbMbI
 
Регистрация: 18.12.2006
Сообщений: 3
Репутация: 7 [+/-]
Ну чтож Си я потихоньку осваиваю...
Но вот по моему легче написать хороший движок а потом его дорабатывать.
mag_TbMbI вне форума  
Отправить сообщение для mag_TbMbI с помощью ICQ Ответить с цитированием
Старый 21.12.2006, 17:03   #360
Юзер
 
Аватар для STOLEN
 
Регистрация: 13.05.2006
Сообщений: 273
Репутация: 92 [+/-]
Цитата:
Но вот по моему легче написать хороший движок а потом его дорабатывать.
Теоритически да, но на практике все совсем по другому! Ты только представь сколько глюков и ошибок у тебя будет? Если учесть, что даже у продвинутых разработчиков их великое множество. Тем более, я больше чем уверен, что язык ты знаешь далеко не идеально. Тем более ты работаешь один, а разработчики которые этим занимаютсяработают группами. Ну, впринцепе решать только тебе...не хочу заводить спор, но думаю многие на этом форуме меня поддержат что разрабатывать самому движок не имеет смысла.
STOLEN вне форума  
Отправить сообщение для STOLEN с помощью ICQ Ответить с цитированием
Ответ


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

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

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


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


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