|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: 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, время: 17:59. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|