Показать сообщение отдельно
Старый 01.07.2015, 13:46
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 9  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Видимо, им нужен очень жёсткий хард кодер. Это довольно сложное задание, без хорошего опыта и за 2 дня его сделать, я думаю, не реально. По крайне мере так, чтоб приняли.

По поводу того, что куда перенести, лучше почитать про мвц в этой книжке, можно ещё на вики статейку глянуть, этого должно быть достаточно. Все создаваемые кнопки, обработчики, удаляющие домики из дисплей листа - всё это относится к вью и должно быть там. Контроллер должен быть пассивным, в его задачу должно входить "воздействие на модель конкретным способом". Например, в модели может быть всего один метод:
Код AS3:
createBuilding(id, x, y, life)
А в контроллере мы можем прописать несколько методов:
Код AS3:
createRandomBuildings(num)
createRandomDamagedBuildings(num, life)
createBuilding(id, x, y, life)
Каждый из этих методов будет использовать 1 метод модели, но со своими значениями. В этом суть контроллера - определять, на сколько и как менять модель, но модель при этом изменяется не на прямую (_mMap.addHouse), а через собственные методы - интерфейс.
Вся инициатива будет исходить от вью, пользователь кликнул какую-то кнопку, вью вызвала нужный метод контроллера. Такое построение гораздо выгоднее ттук. Подробнее о них в книжке и на вике.

Конфиг - это обычный json файл, который описывает структуру всех данных. (Как и требуется в тз)
В идеале, должно быть так, что бы мы меняя конфиг, могли добавлять новые объекты, менять их параметры но без изменения исходного кода и перекомпиляций приложения.
Проектирование конфига, это отдельная тема. Очень похожая на проектирование обычной mysql бд. Хороший конфиг не будет содержать вложенных сущностей друг в друга. (Это, кстати, ещё одна распространённая ошибка)
Пример хорошего конфига:
Код:
{
"buildings":[
{
"id":1,
"title":"Shop House",
"life":100,
"skin":"assets/house1.png",
"offsetX":5,
"offsetY":10,
"size":2
},
{
"id":2,
"title":"Vasya House",
"life":50,
"skin":"assets/house2.png",
"offsetX":2,
"offsetY":15,
"size":3
},
{
"id":3,
"title":"Simple House",
"life":80,
"skin":"assets/house3.png",
"offsetX":9,
"offsetY":21,
"size":1
}
],
"npc":[
{
"id":1,
"title":"Boy",
"life":10,
"skin":"assets/boy.png",
"offsetX":5,
"offsetY":10
},
{
"id":2,
"title":"Girl",
"life":5,
"skin":"assets/girl.png",
"offsetX":2,
"offsetY":15
},
{
"id":3,
"title":"Dog",
"life":2,
"skin":"assets/dog.png",
"offsetX":9,
"offsetY":21
}
],
"locations":[
{
"id":1,
"title":"Wonderful garden"
}
],
"mapNpc":[
{
"locationID":1,
"npcID":1,
"x":15,
"y":25,
"life":1
},
{
"locationID":1,
"npcID":1,
"x":25,
"y":2,
"life":1
},
{
"locationID":1,
"npcID":2,
"x":10,
"y":30,
"life":0.8
}
],
"mapBuilding":[
{
"locationID":1,
"buildingID":2,
"x":15,
"y":25,
"life":1
},
{
"locationID":1,
"buildingID":2,
"x":25,
"y":2,
"life":1
},
{
"locationID":1,
"buildingID":2,
"x":10,
"y":30,
"life":0.8
}
]
}
Онлайн сервис для удобного просмотра и редактирования json.
В конфиге я описал такие сущности как здания, npc, локаций, и объекты на локациях. Обрати внимание, что объекты на локациях находятся в отдельном объекте (таблице). Засовывать их в "locations" не нужно.
Далее приложение при старте грузит конфиг, парсит, и на основе этих данных уже строит локаций, объекты и т.д.

Вощем, так и не удалось до конца развёрнуто написать, хотя, больше часа потратил. Ну оно и не удивительно, тут не одна тема затрагивается.
__________________
Дети не должны знать о своих родителях


Последний раз редактировалось Tails; 02.07.2015 в 11:10.