Форум » Media » Прога » Ответить

Прога

Bloodiness: Тут есть пргограммизды или кодеры? Если идея принципиально новой игры :3

Ответов - 179, стр: 1 2 3 4 5 6 7 8 9 All

c4tnt: игра для любителей интегрировать и дифференцировать? Блоки private, public и protected не доставляют, по мне лучше объявить все поля перед объявлением методов дабы повысить читабельность. А в чём суть проблемы? Можно же несколько блоков в одном классе делать если надо. Наследование не уверен, что совсем не нужно. В самом ядре наследование врядли нужно, не верю, что физика настолько похожа на рендер и контроллер питона и скриптов... А логику игры я уже предлагал сделать на питоне, к чему нет никаких препятствий. через их виртуальные функции и прочую ненужную лабуду Виртуальные функции нужны только во вполне определённых случаях. Хотя в языках с RTTI ещё круче - там просто все функции виртуальные. PS У меня геймдевелопер знакомый, не знающий даже элементарного курса физики KNOW HOW: Заходишь на геймдев и читаешь статью про солверы. Можно даже не читать и просто скоммуниздить код

Bloodiness: >> игра для любителей интегрировать и дифференцировать? Просто для гиков. Интегрированием там мало чего можно добыть. Нужно взять интеграл от ускорения, скорости и только потом получить координату. А теперь вспомним, что на поле стоят преграды влияющие на траекторию в значительной степени. >> А в чём суть проблемы? Можно же несколько блоков в одном классе делать если надо. Я никогда не писал самостоятельные классы под плюсы и не хочу этим заниматься. Как ни крути, читабельность будет на нуле. >> В самом ядре наследование врядли нужно, не верю, что физика настолько похожа на рендер и контроллер питона и скриптов... А логику игры я уже предлагал сделать на питоне, к чему нет никаких препятствий. Тогда уж стоит всю игру писать на питоне. А насчет наследования не знаю, не думал об архитектуре. Просто намек был на абстрактный GameObject какой-нибудь. ADDED: >> KNOW HOW: Заходишь на геймдев и читаешь статью про солверы. Можно даже не читать и просто скоммуниздить код Нет, это не его метод. Фрилансер, пишущий статьи на wincode, думаю не будет так делать.

c4tnt: Кусочек дума... Вроде всё вполне читабельно class idPhysics_Base : public idPhysics { public: CLASS_PROTOTYPE( idPhysics_Base ); idPhysics_Base( void ); ~idPhysics_Base( void ); void Save( idSaveGame *savefile ) const; void Restore( idRestoreGame *savefile ); public: // common physics interface void SetSelf( idEntity *e ); void SetClipModel( idClipModel *model, float density, int id = 0, bool freeOld = true ); idClipModel * GetClipModel( int id = 0 ) const; int GetNumClipModels( void ) const; void SetMass( float mass, int id = -1 ); float GetMass( int id = -1 ) const; void SetContents( int contents, int id = -1 ); int GetContents( int id = -1 ) const; .... .... Нет, это не его метод. И даже статью не посмотрит ??? PS. Прошу прощения, но отступы в коде навернумшись, но они там были PPS. Мысль игры любопытная, но надо сделать это вкусным. А то я игрушку Gravity с клавиатуры то еле прохожу, а тут всё ещё брутальнее будет.


Bloodiness: >> И даже статью не посмотрит ??? Может и посмотрит :3 Я не интересовался такими подробностями. >> Кусочек дума... Вроде всё вполне читабельно Это остров в море. Но кусок подобран неплохо. Я не нашел к чему придраться. :3 Синтаксис плюсов мне в целом не понятен. Куча интуитивно непонятных вещей: двоеточие как указатель наследования, вот эти float GetMass( int id = -1 ) const; мне тоже не ясны. Я не буду утверждать что в питоне все понятнее, особенно многострочные рекурсивные лямбды. Но местами код выглядит презентабельнее. >> Мысль игры любопытная, но надо сделать это вкусным. А то я игрушку Gravity с клавиатуры то еле прохожу, а тут всё ещё брутальнее будет. Это родилось из идеи предсказать функцию по графику.

c4tnt: Но кусок подобран неплохо. Долго выбирать не пришлось - там все интерфейсные классы такие, да и неинтерфейсные тоже. float GetMass( int id = -1 ) const; float - тип GetMass - название функции (метода) int id - параметр = -1 - значение по умолчанию, метод можно будет вызывать без этого параметра const - константный метод, он не изменяет данные класса. Это можно не указывать если не планируется потом использовать константные рид-онли указатели. Фактически просто отмечает, что этот метод можно использовать даже если класс доступен только на чтение.

Bloodiness: Си++ подвергнут критике не зря. Более того, для меня ничего не значат таки такие вещи, как "константные рид-онли указатели" и "класс доступен только на чтение". Указатели не очень хорошая штука все же. Вот сюда же : http://habrahabr.ru/blogs/google/100171/ Я с ним не согласен по поводу Java, так как мне она показалась не сложной и дружелюбной.

c4tnt: явовские объекты не выносят мозг? любая AJAX библиотека по моему делает это на ура питон тоже иногда выглядит озадачивающе... Вот так, например: [pre]def average_vertexcolors(mesh): vertexcolors = {} vcolor_add = lambda u, v: [u[0]+v[0], u[1]+v[1], u[2]+v[2], u[3]+v[3]] vcolor_div = lambda u, s: [u[0]/s, u[1]/s, u[2]/s, u[3]/s] for i, f in enumerate(mesh.faces): # get all vcolors that share this vertex if not i%100: Blender.Window.DrawProgressBar(float(i)/len(mesh.verts), "Finding Shared VColors") col = f.col for j in xrange(len(f)): index = f[j].index color = col[j] r,g,b = color.r, color.g, color.b vertexcolors.setdefault(index, []).append([r,g,b,255]) i = 0 for index, value in vertexcolors.iteritems(): # average them if not i%100: Blender.Window.DrawProgressBar(float(i)/len(mesh.verts), "Averaging Vertex Colors") vcolor = [0,0,0,0] # rgba for v in value: vcolor = vcolor_add(vcolor, v) shared = len(value) value[:] = vcolor_div(vcolor, shared) i+=1 return vertexcolors [/pre]

Bloodiness: Ви берете специально такие исходники :3 Я, честно говоря, готов некоторым кодерам отрезать пальцы по локоть за то, что порой код выкладывают нечитаемый как в вашем примере. Я привык писать с расчетом на то, что через какое-то время в код не заглянет страждующий и не спросит: "Какой мудак это писал?" Могу выложить свои исходники, у меня где-то валялась Conway's Game of Life на питоне. В яве вынесли мозг только wildcard types. Ох я не курю их до сих пор.

c4tnt: это - кусочек блендера. И эти скрипты там процентов на 40 выглядят так. Остальное чуть лучше

c4tnt: [pre]v = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,\ 28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,46,47,58,59,60,61,62,63,64,91,92,93,94,96,\ 123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,\ 151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,\ 171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,\ 191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,\ 211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,\ 231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254] [/pre] из соседнего скрипта. Не знаю, для чего такой список, но уже страшно...

Bloodiness: Могу представить. В модуле scipy есть штука для решения линейных систем. Нужно только матрицу сдать. Один мой знакомый физик ( :3 ) забивал в списки странные матрицы, которые выверял по законам Кирхгофа, дабы рассчитать цепь. И не такое может понадобится. У себя нашел: [pre2]# The most fucking awesome codestyle: (lambda stack: [ token.isdigit() and (stack.append(float(token)) or True) or (stack.append( { '+': float.__radd__, '-': float.__rsub__, '*': float.__rmul__, '/': float.__rdiv__ } [token] (stack.pop(), stack.pop()))) for token in raw_input('>>> ').split() ] and stack) ([]) [0][/pre2] О, это моя гордость. Калькулятор ОПЗ в одну лямбду.

c4tnt: В общем губит людей не пиво... нельзя же из за отдельных интересных личностей считать синтаксис языка программирования ужасным. Это я к тому, что и на яве и на питоне и на си можно вполне писать красиво при некотором желании.

Bloodiness: >> Это я к тому, что и на яве и на питоне и на си можно вполне писать красиво при некотором желании. К Си++ я все равно не склоняюсь. Вон те же книги. У меня есть Липпмана книга "Весь C++ от азов до совершенства" в 1к страниц в конце которой написано: "Ололо, теперь вы знаете Си++ trollface.jpg". И CoreJava Кея Хорстманна в 800 страниц, в которой после 300 страниц написано: "А теперь вы знаете Java, дак давайте же писать программы!" Си++ требует опять же полного погружения в свои дебри, ибо любая неосторожность в виде неправильно перегруженного оператора (перегрузка, к слову, почти не нужна) или ошибочка при работе с указателем утопит программиста в море отладки. Мне просто лень тратить время на изучение этого языка. Уж лучше Lisp, уж лучше Lisp. По поводу читабельности программ - да, криворукие близорукие кодеры всегда вставят ложку дегтя. У любого языка есть такие почитатели. Вот только у Си++ их больше, в связи с любовью писать в своем "неповторимом" стиле.

Archi: Bloodiness пишет: Си++ требует опять же полного погружения в свои дебри, ибо любая неосторожность в виде неправильно перегруженного оператора (перегрузка, к слову, почти не нужна) или ошибочка при работе с указателем утопит программиста в море отладки. То есть... вы хотите сверхвысокоуровневый язык программирования? Зато, если подумать, там можно найти все что надо. Ведь не начал же ты писать программу на питоне или яве? А почему? Только не говорите мне что просто лнь. Было очень серьезное препятствие, по всей видимости.

Bloodiness: >> То есть... вы хотите сверхвысокоуровневый язык программирования? Я хочу удобный язык программирования. В Си я увидел удобство, но он немного ограничен, хотя для такого языка это не критично. Си++ я считаю неудобным и уже тысячу раз об этом заикался. >> Ведь не начал же ты писать программу на питоне или яве? А почему? Только не говорите мне что просто лнь. Во-первых, действительно лнь; во-вторых, на питоне или яве я не стал писать ибо боялся, что скорость игры будет убита мат-расчетами. Представьте, что нужно для каждого момента считать кастомную функцию - а значит разворачивать бинарное дерево операторов. Снова и снова. Если за питон я еще не так сильно боюсь, ибо он проверен временем + можно поставить psycho, то за яву я так сказать не могу. Выходит: ява кроссплатформенная, но проблемы со скоростью; питон кроссплатформенный, но проблемы с последующим распространением (тащить библиотеку pygame, и, если делать exe, размер программы перевалит за 40Мб). Т___т!

Archi: Вот вам и польза чайного листа! Си++ не убивает скорость, не требует сторонних библиотек, а то что там есть новые функции, которые можно(а не нужно) использовать, так это скорее плюс, чем минус. Да, его надо знать глубже чем хочется. Лнь надо перебороть.

Bloodiness: >> Си++ не убивает скорость, не требует сторонних библиотек Си++ убивает скорость разработки. >> Да, его надо знать глубже чем хочется. Лнь надо перебороть. Ради чего? Ради того, чтобы забить себе голову ненужным мне языком? Вся глубина Си++ - это плата за ошибки, которые иногда допускает программист. А она порой слишком велика. Учить Си++ ради того, чтобы написать игрушку я не хочу, а написать прикладное на Си++ - головная боль, и на этом месте я обойдусь питоном и явой.

Archi: Ну в таком случае думаю лучше написать на питоне... Идея мне нравится, хотелось бы увидеть это наяву) И да, я конечно ламер, но нельзя ли обрезать библиотеку?

Bloodiness: >> И да, я конечно ламер, но нельзя ли обрезать библиотеку? Это называется скоммуниздить исходники. :3 Не к каждой такое прокатит. Да и местами библиотека содержит кучу связанных элементов. У pygame должны быть share objects на Си.

Archi: Bloodiness пишет: если делать exe, размер программы перевалит за 40Мб вот к этому



полная версия страницы