Всё это время я не сидел без дела, полностью зделал ландшафт, он автоматически генерируеться по настройкам что сохраняються в конфиг файл, который можно менять без вмешательства в код. В распоряжении ландшафта уже есть вода, трава, песок.
Также завершил работу с растительностью, она тоже максимально гибка, и вполне нормально проработана (но, конечно, есчё прыйдеться ее дорабатывать). С помощю конфиг файла можно создавать новые растения, устанавливать их картинку, максимальное растояние от воды, максимальную частоту растительности на определенном растоянии, количество "пополнения" пищи, ее интервал, и время между сезонами, и есчё кое-что. Растительность развиваеться не в слепую, если рядом много растений, или далеко от воды, то будет очень мало шансов что прорастёт новое растение. Время ее роста, и количество плодов также зависит от растояния к воде и частоте растительности.
Скоро зделаю выделение растений, и займусь зверьми, ну а после уже возьмусь за ангоров, так как нужно иметь базу, на чём строить ангоров, иначе выйдет бред. Звери будут также как и растения максимально гибки, и будет возможность редактировать их без вмешательства в код программы.
ЗЫ: Скрины пока не выкладую, смотреть толком нет на что, графику я не делал как таковую, только квадраты текстур травы, воды, песка и теже деревья.
Ну и небольшая правка: Я уважаю мнение всех, я к ним прислушиваюсь, но судя по всему мы просто не можем понять друг друга, скорее всего из-за того, что я не слишком хорошо разбираюсь в тонкостях программирования, а вы это никак не поймете, и говорите обезьяне как строить танк.
Однако, +100500 к wolfRAMM. Без создания классов тут вообще никак. Где-то на форуме я уже постил ссылку на организацию классов проекта Microsoft Terrarium. Продублирую тут: http://ru.vlab.wikia.com/wiki/Базовые_классы_Microsoft_Terrarium Уважаемый sSwSs, Вы рискуете запутаться в собственном коде. Если Вас смущает повышенный расход памяти (и интересует мое мнение), то я считаю, и, наверняка, многие со мной согласятся, что читабельность и легкость отладки кода стоят лишней пары десятков мегабайт, занимаемых готовой программой в памяти. Может быть, Вы считаете, что вовсе не обязательно, да еще и вредно помещать в код проверки корректности введенных данных, обработчики ошибок??? Это ж лишнее время процессор потратит на расчеты! Я уже почти год слежу за развитием проекта, а развития-то и нет. Можно еще долго топтаться на месте, переделывая то, что до Вас не удалось сделать Вашим коллегам. Лучше один раз потратить время, разобраться и написать толковый код! :)
Кто сказал что у меня нет классов? они у меня есть, и каждый класс отвечает за свою "сферу влияния", в основном классе пишеться только, к примеру, flora.update() и flora.draw(). Всё остальное делаеться ИСКЛЮЧИТЕЛЬНО внутри своего класса.
Проверка корректности введенных данных? (хех, слишком много повторных для моего моска) Я не считаю что это лишнее, вообще на счёт этого, по-моему вообще темы небыло, хотя я и не знаю вовсе как это реалезуется.
Насчёт раздельности классов ангоров, и зверей: дело ведь не только в памяти, дело есчё в удобности и простоте. Если у меня будут 2 разных класса, я их смогу банально скопи-пастить, и изменить так, как мне на душу припадёт, там ведь они много в чём расходятся, например в алгоритмах всяких, функциях, командах, переменных и.т.д. Есчё один, найболее важный аргумент является тот факт, что звери загружаются с файлов (тобиш я пишу в текстовом документе всю инфу о звере, в другом пишу как они будут генерироваться, и код всё автоматически далее делает), а ангоры не будут с файлов загружаться, у них при генерации будут статические данные с некоторым рандомом, не будут изначально множество разнообразий ангоров, они это сами будут делать.
И, кстати, насчёт читабельности кода: Мой код очень легко читаеться даже без коментариев (я вообще всегда понятный код писал, я могу любой мой проект открыть в любое время, и пойму то да как и где), у меня нет единой ф-ции обновления, например, зверя. Там сначало идут общие ф-ции, потом данная ф-ия "распределяеться" в 3 других, в ф-ию для лиреда группы, ф-цию для члена группы, ф-цию для тех, у кого ее нет, в тех функциях тоже всё довольно просто и понятно. Максимально менше пытаюсь делать основные функции, добовляя при этом допомежные. Вообщем если как-то решусь, открою исходники, пролистаете.
ЗЫ: Звиняюсь что так долго нет новостей о ходе роботы, я 2 дня уже вообще не сижу за ним, видеокарта сгорела, сижу на очень старой, она на ДХ7 по-моему... А вообще уже зверей более имение оргонизовал, они уже охотятся или ищут растения, воду, правда, пока есчё не зделал, но в целом цепочка почти запущена. Так что скоро допишу азы зверей, и возьмусь за ангоров.
sSwSs, Вы находитесь в состоянии инфантильного маразма. Советую изучить основы программирования. Начинайте с "с++ для чайников" и плавно переходите к Липману/Страустрапу. Тогда Вы сможете понять то, на что пытались отвечать.
Ты как, с ООП знаком вообще? Животное(Зверь) - это виртуальный класс, экземпляр которого не может быть создан. В него пихаешь все, что общего в ангоров, хищников, травоядных и кого там еще юзеры тебе посоветуют добавить. Например у всех есть координаты - ты же не втыкаешь в каждый класс координаты отдельно? Координаты наверняка являются свойствами некоего ОтобрОбьект класса, от которого все наследуется. Касательно Животных, то тут мне видится общим для всех ф-ции типа Передживение, Осмотреться, СледоватьЗа, Хавать, Пить, СмотретьТВ и подобная необходимая маета, которую нормальный человек не будет копипастить в 3 (больше?) классов, а потом еще и убиваться о стену отладки такого чуда.
Все что уникально - в конечных не виртуальных классах.
Давай наверное кончать этот безсмысленный спор? Я всёрамно считаю что вы не правы. И что за "ОтборОбъект класса"? Шаблон его что-ли? так зачем такое делать? А если у меня некоторые параметры присваиваються с неким рандомом (допустим в идеале максимум 100 здоровья, а у зверей оно будет 100 +- 50) Ну есчё очень много минусов, и ограничений. К тому же, некоторые ПУСТЫЕ, или НЕ ИСПОЛЬЗУЕМЫЕ переменные тоже как-бы не занимают 0 БИТ, ну ладно когда их по 100, а когда по 10к? Это же как никак под сервер потом будет точиться... а там будет важна каждая деталь, а тут вы, со своей ленью делать разные классы для ангоров и зверей.
Да и не займет это много времени, на КРАЙТИЙ случай можно ф-ции копи-пастить.
Чего это они такого "умеют", что нету в ангоров? Хз какая там у вас иерархия, но должно быть типа ОтображаемыйОбьект -> Существо (отсюда Растения и Животные) -> Животное (отсюда Ангор, Травоядное, Хищник, кого еще там ты задумал). Это если избегать множественного наследования. Все общее в Животное пихаешь, топом и добавля/модифицироваться легче.
Ну во-первых звери - они очень примитивны, и зачем в их класе хранить десятки переменных и ф-ций если они вообще не будут использоваться?
Да и писать настолько "универсальный код" для зверей и ангоров - это слишком, звери есть звери - они никогда не будут эволюционировать, и изучать что-то новое, максимум запомнят как-бы "любимое" место и будут там постоянно тусить.
Ангоры-же будут развиватся, они будут много чего помнить, знать, уметь, много того, чего монстрам попросту не понадобиться. Отсюда вопрос: Логично ли использовать один и тот же клас для ангоров и зверей?
Активность похвальна. Вообще думается "зверь" должен быть суперклассом для "ангора", только поведение полностью скриптовое, а в ангоре его переопределить/добавить. Это сэкономит много времени, и просто логично. Проект до сих пор не продумано - а зря.
не-не, не покатит, у зверей очень много того, чего нету в ангоров, они как не крути всёже примитивны, будут "уметь" минимум, тобиш существовать чтоб продолжить жизнь ангором (это если грубо говоря).
третья версия ангоров, тот что планируем сделать к 1 сентябрю 2010г. Имеет иерархию классов. 1. Общий класс всего живого на его основе 1.1 класс растений 1.2 класс животных на основе класса животных 1.2.1 класс ангоров
хм...энергии как таковой есчё вообще нет, что-то забыл о ней
Но пока не до ней, как окозалось, я сильно круто взял на зверей, теперь много кодить надобно, ну ничего, справлюсь.
ЗЫ: Работа, если что, не стоит, зделал структуры зверей, зверей-шаблонов, загрузку с файлов, научил бродить в толпе за "лидером", сейчас занимаюсь поиском лидером заданий.
Подкину несколько идей из своего проекта. Размещение ресурсов: для всех типов ландшафтов я выбрал 3 характеристики - влажность, твердость, температура (ландшафты различаются между собой по этим характеристикам). Т.е. в любой клетке поля благоприятность усливий для объектов окружающей среды определяется только тремя этими характеристиками. Каждому объекту игрового мира соответствуют строго определенная комбинация выше записанных условий. Например, елки могут расти только на клетках с влажностью от 0,2 до 0,4, твердостью от 0,6 до 0,8 и температурой от -25 до +25 градусов. Если условия на клетке удовлетворяют заданным, то на клетке будет расти ель. Если условия НЕ удовлетворяют заданным, то ель все равно будет расти, но значительно медленнее, чем на клетке с благоприятными условиями. Чем удобен подход? Удобно вычислять скорость роста (не зависит от типа растения, а зависит от условий на клетке). Не нужно устанавливать протяженность сезона для каждого растения. Изменилась температура - кому-то стало хуже расти, а некоторые растения и вовсе загнуться. Все как в жизни. И что такое у автора "максимальная частота растительности на определенном расстоянии"?? Максимальная частота - одно растение на одну клетку!! Если растение не может развиваться, то причиной этого должно быть не само растение, а условия, в которых оно находится.
Спасибо за идкю! Так действительно будет лучше, но пока что это не стану внедрять, довольно умеренно времени займет это дело.
Максимальная частота растительности на определенном растоянии - это предельное количество растительности в указанном радиусе, не в клетке. Тобиш если слишком много рядом растительности, данное растение начнёт понемногу "умирать" и со временем "умрет". Это довольно удобно против больших скоплений растительности. Чтоб небыл сплошной лес одных типов растений.
Добавлять комментарии могут только зарегистрированные пользователи. [ Регистрация | Вход ]