Показать сообщение отдельно
Старый 06.09.2017, 23:15
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 5  
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
Продолжая наш пример, сделаем propID для силы константу const CHARACTER_STRENGTH_ID = 1
Сделать константы нормально, но только "1" это бессмысленная вещь. Подумай о том, как ты будешь это использовать, в какой ситуации? По этой константе ты сможешь вытянуть описание из класса Descriptions, но сможешь ли вытянуть значение из Персонажа? Нет)) Для этого надо знать название свойства. Так что логичнее было бы хранить в такой константе название свойства, например строку "strength".
Да, во многих играх используются идентификаторы-числа, типа 0xFD12A8. Для всего подряд, для классов предметов: оружия, одежды; для свойств персонажа; для квестов и их уровней (эпизодов), для локаций и т.п. Но в этом случае как раз 0xFD12A8 является ключом, а строка — значением, а не наоборот, как у тебя)) Это довольно сложная система, она оправдывает себя когда в игре тысячи понятий, но прямого отношения к ООП не имеет, просто один из инструментов наведения порядка в огромном хаосе. Суть ООП в правильном абстрагировании, распределении уникальности и общности.
Цитата:
По ним лезем в двумерный массив с текстовыми описаниями (типа первый индекс - наименование свойства, второй - нужная расшифровка для полученного значения) и вытаскиваем оттуда нужный текст, верно?
Вообще, я не зря предложил оформить это как метод — то есть предполагается, что результат не является однозначным, как константа. Допустим, тебе надо вывести описание уровня Интеллекта для данного персонажа, тогда ты напишешь
Код AS3:
_hintTXT.text = Descriptions.getHint(Hash.CHARACTER_INTELLIGENCE, _character[Hash.CHARACTER_INTELLIGENCE]);
Метод getHint() должен будет ВЫБРАТЬ описание из нескольких вариантов (массива), подходящее для данного значения свойства, и вернуть его. Скажем, если _character.intelligence больше 60, то метод вернет строку "умный был детина", если < 30 — "вовсе был дурак", иначе — "и так и сяк".
Цитата:
если у персонажа есть имя и фамилия (сейчас это свойства firstName и lastName в классе Character), то следуя приведённой логике, это тоже лишняя инфо, место которой в неком отдельном классе, откуда мы будем доставать её исключительно для вывода пользователю в нужный момент. Верно рассуждаю?
Да, если имя и фамилия это игровая константа, как Гордон Фримен в Half Life. Но, например в Oblivion или Skyrim игрок сам придумывает имя своему протагонисту. (В Обливион игрок мог даже придумывать собственные названия результатам крафтинга — зачарованным им доспехам и оружию, сваренным им эликсирам и ядам, и даже заклинаниям, которые составил сам). Так что на уровне кода это переменные, которые хранятся только в сейвах игрока, не в коде игры)
__________________
Reality.getBounds(this);