![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
Здравствуйте, уважаемые гуру! Выполнил тестовое задание, после чего работодатель отказал. Раньше программировал только на чистом as3, со Starling никогда не работал, с Изометрией знакомиться не приходилось, пришлось учить и делать все с нуля, так как сами понимаете никаких наработок по этой части у меня нет.аимо Очень хочу узнать у вас, почему такая оценка ? На все про все ушло около 42 часов работы (обучение + программирование).
Вот текст тестового задания. 1. На базе старлинга создать игровую изометрическую сцену. 2. Создать изометрическую карту 500х500, зелёное поле. 3. При старте генерируется 1000 домиков на случайных позициях. - Размер спрайта домика от 64х64 px - 3 изометрических размера домиков: 1х1, 1х2, 3х3 - спрайты в png в отедльно папке загружать при старте - конфиги в json загружать при старте - 12 видов домиков такой арт норм: https://www.pinterest.com/pin/246994360790390965/ https://www.pinterest.com/pin/525584218988980048/ 4. У каждого домика случайное кол-во жизней, от 1 до 5, при клике на домик теряет жизнь, при 0 жизней взрывается 5. В интерфейсе должен быть: - счётчик фпс и счётчик дипов - счётчик домиков - кнопка '+' добавляется домик в случайное свободное место - кнопка '-' убирает случайный домик 6. Карту драгаем мышкой Необязательные условия: - Добавить анимированные объекты - Дороги - Вода - Бар с жизнями домиков - Персонажи перебегающие по дорогам от домика к домику и прячущиеся внутри Будем смотреть на: - Фпс - Отзывчивость карты - Организацию кода - Придираться к стилю и синтаксису в коде - Наличие паттернов и ооп /////////////////////////////////////////////////////////////////////////////////// а вот исходники (flashdevelop) starlingTest.rar Последний раз редактировалось Isfet; 02.07.2015 в 14:50. |
|
|||||
|
Ну к стилю кода тут действительно можно придраться.
Где-то написано "e", где-то "event" Часть констант написано капсами, часть кэмэлкейсом. Методы кое где вызываются без скобок, например События не красиво сделаны и не удобно Лучше было это оформить в отдельный класс и отправлять уже со своим типом FPS счетчик у старлинга есть свой Размеры карты не по заданию Цитата:
|
|
|||||
|
Регистрация: Jan 2011
Сообщений: 200
|
может вы скажете, что за работодатель? где-то я видел подобное ТЗ с домиками и взрывами
|
|
|||||
|
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
извиняюсь , размеры карты забиваются в cfg - файле , перезалил исходник (им я отправил правильно, юзал маленькую карту для поиска ошибок).
видел в некоторых приложения счетчик, но не мог найти его в старлинговских классах, только сейчас нашел StatsDisplay Добавлено через 7 минут Последний раз редактировалось Isfet; 02.07.2015 в 08:57. |
|
|||||
|
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
хотелось бы еще какие-нибудь комментарии не только по коду , но и по структуре.
|
|
|||||
|
Не хилое такое заданице, тут можно на неделю засесть.
Зато, конечно, по выполнению такой работы, будет на 120% видно навыки кандидата и в добавок весь его богатый внутренний мир. По поводу структуры:
__________________
Дети не должны знать о своих родителях |
|
|||||
|
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
ну я на неделю и засел), хотя они писали, что специалист требуемого им уровня делает такое задание за 1-2 дня, хотя я не понимаю как такое задание можно сделать за такой короткий срок без каких-то наработок
А можете немного пояснить? А какие бы вы методы CMap, куда перенесли? Цитата:
то есть класс VBuilding - будет вью, И в нем должна быть ссылка на модель здания ( MBuilding )? |
|
|||||
|
Видимо, им нужен очень жёсткий хард кодер. Это довольно сложное задание, без хорошего опыта и за 2 дня его сделать, я думаю, не реально. По крайне мере так, чтоб приняли.
По поводу того, что куда перенести, лучше почитать про мвц в этой книжке, можно ещё на вики статейку глянуть, этого должно быть достаточно. Все создаваемые кнопки, обработчики, удаляющие домики из дисплей листа - всё это относится к вью и должно быть там. Контроллер должен быть пассивным, в его задачу должно входить "воздействие на модель конкретным способом". Например, в модели может быть всего один метод: А в контроллере мы можем прописать несколько методов: createRandomBuildings(num) createRandomDamagedBuildings(num, life) createBuilding(id, x, y, life) Вся инициатива будет исходить от вью, пользователь кликнул какую-то кнопку, вью вызвала нужный метод контроллера. Такое построение гораздо выгоднее ттук. Подробнее о них в книжке и на вике. Конфиг - это обычный 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
}
]
}
В конфиге я описал такие сущности как здания, npc, локаций, и объекты на локациях. Обрати внимание, что объекты на локациях находятся в отдельном объекте (таблице). Засовывать их в "locations" не нужно. Далее приложение при старте грузит конфиг, парсит, и на основе этих данных уже строит локаций, объекты и т.д. Вощем, так и не удалось до конца развёрнуто написать, хотя, больше часа потратил. Ну оно и не удивительно, тут не одна тема затрагивается.
__________________
Дети не должны знать о своих родителях Последний раз редактировалось Tails; 02.07.2015 в 11:10. |
|
|||||
|
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
спасибо большое за разъяснение, почитаю на досуге.
но вот насчет того что им нужен был именно такой конфиг , не уверен, Цитата:
то 3 пункт был бы как-нибудь по-другому сформулирован, хотя не спорю, можно бы было и побольше данных в конфиг вынести. Последний раз редактировалось Isfet; 02.07.2015 в 13:48. |
![]() |
![]() |
Часовой пояс GMT +4, время: 18:04. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|