Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 01.07.2015, 06:26
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 1  
Ответить с цитированием
Isfet

Регистрация: 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.
Старый 01.07.2015, 07:33
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 2  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Ну к стилю кода тут действительно можно придраться.
Где-то написано "e", где-то "event"
Часть констант написано капсами, часть кэмэлкейсом.
Методы кое где вызываются без скобок, например
Код AS3:
e.stopImmediatePropagation;
События не красиво сделаны и не удобно
Код AS3:
dispatchEvent(new Event(DECTRUCT_HOUSE_EVENT, true));
Лучше было это оформить в отдельный класс и отправлять уже со своим типом
Код AS3:
new HouseEvent(HouseEvent.DESTRUCT);
FPS счетчик у старлинга есть свой

Размеры карты не по заданию
Цитата:
2. Создать изометрическую карту 500х500, зелёное поле.
3. При старте генерируется 1000 домиков на случайных позициях.
Даже близко не то

Старый 01.07.2015, 08:24
bifidokk вне форума Посмотреть профиль Отправить личное сообщение для bifidokk Найти все сообщения от bifidokk
  № 3  
Ответить с цитированием
bifidokk
 
Аватар для bifidokk

Регистрация: Jan 2011
Сообщений: 200
может вы скажете, что за работодатель? где-то я видел подобное ТЗ с домиками и взрывами

Старый 01.07.2015, 08:25
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 4  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
Цитата:
Сообщение от caseyryan Посмотреть сообщение
Размеры карты не по заданию

Даже близко не то
извиняюсь , размеры карты забиваются в cfg - файле , перезалил исходник (им я отправил правильно, юзал маленькую карту для поиска ошибок).


Цитата:
Сообщение от caseyryan Посмотреть сообщение
FPS счетчик у старлинга есть свой
видел в некоторых приложения счетчик, но не мог найти его в старлинговских классах, только сейчас нашел StatsDisplay


Добавлено через 7 минут


Последний раз редактировалось Isfet; 02.07.2015 в 08:57.
Старый 01.07.2015, 10:59
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 5  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
видел в некоторых приложения счетчик, но не мог найти его в старлинговских классах, только сейчас нашел StatsDisplay
Все просто
Код AS3:
_starling.showStats = true;

Старый 01.07.2015, 12:27
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 6  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
хотелось бы еще какие-нибудь комментарии не только по коду , но и по структуре.

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

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

По поводу структуры:
  • Мвц - ттук. Это довольно плохо.
  • Класс House.as - Так делать, на самом деле, плохо. Должен быть или класс Building, или просто свойство isBuilding в классе MapObject. А все параметры, в том числе скинование и анимаций - где нить в конфиге.
  • Из предыдущего вытекает, что полностью отсудствует и модель данных (Не путать с моделью мвц, просто структура данных, как в mysql), её вообще нет. Все игровые объекты и их параметры жёстко прописываются в отдельных классах. 1 объект - 1 класс. Это очень плохо.
Моё скромное имхо.
__________________
Дети не должны знать о своих родителях

Старый 01.07.2015, 13:23
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 8  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
Цитата:
Сообщение от Tails Посмотреть сообщение
Не хилое такое заданице, тут можно на неделю засесть.
ну я на неделю и засел), хотя они писали, что специалист требуемого им уровня делает такое задание за 1-2 дня, хотя я не понимаю как такое задание можно сделать за такой короткий срок без каких-то наработок



А можете немного пояснить?

Цитата:
Сообщение от Tails Посмотреть сообщение
По поводу структуры:

Мвц - ттук.
А какие бы вы методы CMap, куда перенесли?


Цитата:
Сообщение от Tails Посмотреть сообщение
[*]Класс House.as - Так делать, на самом деле, плохо. Должен быть или класс Building, или просто свойство isBuilding в классе MapObject. А все параметры, в том числе скинование и анимаций - где нить в конфиге.
что вы подразумеваете под конфигом?


Цитата:
Сообщение от Tails Посмотреть сообщение
1 объект - 1 класс. Это очень плохо.
.
то есть класс VBuilding - будет вью, И в нем должна быть ссылка на модель здания ( MBuilding )?

Старый 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.
Старый 02.07.2015, 13:21
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 10  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
спасибо большое за разъяснение, почитаю на досуге.

но вот насчет того что им нужен был именно такой конфиг , не уверен,

Цитата:
Сообщение от Isfet Посмотреть сообщение

Вот текст тестового задания.

3. При старте генерируется 1000 домиков на случайных позициях.
то есть, по сути, этот конфиг хранится в модели карты, его можно при желании выгрузить в файл при сохранении игры, и если бы им нужно было отрисовывать все объекты из данных прописанных в файле конфига,
то 3 пункт был бы как-нибудь по-другому сформулирован, хотя не спорю, можно бы было и побольше данных в конфиг вынести.


Последний раз редактировалось Isfet; 02.07.2015 в 13:48.
Создать новую тему Ответ Часовой пояс GMT +4, время: 17:59.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 17:59.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.