Подыскиваю сейчас новую работу, в одной конторе дали задание - сделать игру в крестики нолики. Кому нечего делать - посмотрите, может быть найдете какие баги: http://ticktacktoe.ru/ P.S. Для тех кто скажет - "Надо код смотреть" - да, вы правы, но код выложу позже, надо пока все протестировать, и все найденные баги поправить.
Считать ли это багом, но лично я не уловил принцип того, кто первым ходит: бот или я. Из пяти "ничьих", четыре раза начинал бот. Кстати, в игре только два развития события: если бот начинает, то в любом случае ничья, а если я - мой выигрыш.
Вероятность 50 на 50. Хотя у меня бывали случаи, когда раз 10-15 начинал первым бот... rand() творит чудеса Пока два дня разрабатывал игру - с ботом были только ничьи. Сегодня вечером знакомый программист показал тактику, как обыгрывать бота в 100% случаев, если игрок начинает первым - там конечно можно логику улучшить, но... очень не просто. В любом случае, моё тестовое задание будут оценивать по общей работоспособности/качеству кода, так что на некоторую "тупизну" искусственного интеллекта можно забить P.S. По поводу качества кода я переживаю намного больше, потому что чем красивее игра становилась с точки зрения пользователя, тем больше костылей приходилось писать внутри
Хотел еще писать о том, что зачем мол отдавать на Ajax-запрос весь HTML-код игрового поля, когда достаточно всего лишь координат, а заметил, что в коде у вас два элемента с одинаковым ID = "game", что совсем не есть гуд
Есть такое, но... я вначале вообще не планировал навороты на стороне фронта делать. Так, только обновление игрового поля через AJAX и все. Потом подумал, что без анимации как-то совсем грустно, надо добавить, и пошло поехало - вначале получаем всю страницу, потом что-то сразу отключаем, потом показываем... в логике JS там вообще жуть, одно спасает - это тестовое задание на бек-энда Конечно, если изначально делать навороченный фронт - то бек должен возвращать только параметры, с которыми фронт уже сам будет работать. Ммм.. вижу только один:
Я зафиксировал на последнем этапе (конец игры) --- Добавлено --- Похоже, что вывод данных, полученных на Ajax-запрос, у вас добавляются в <div id="game">, но при этом в коде уже присутствует такой же элемент
Код (Text): Yii2 в базовой комплектации, чтобы отдать главную статическую страницу съедает 2.5 мб памяти php7 на страницу всегда съедает минимум 2мб.
Не-не-не, как писал выше, я вообще на бека иду. Так что все эти React, Angular и прочие идут лесом =)
Знания таких вещей тоже будут оценивать. Чем больше удивишь тем лучше. React вообще золотая жила там только первых пол часа можно рассказывать какие модули и для чего подключал)
Код: https://github.com/WalkWeb/TickTackToe Сразу скажу, что не считаю код идеальным - к концу разработки мне захотелось все переписать с нуля. Но, сроки поджимают - сегодня утром уже должен скинуть тестовое задание.
@Walk, фраза заставила меня задуматься. Это действительно так? Еще увидел у Вас такую штуку: PHP: use dw\core\Controller; use dw\models\Game; use dw\models\GameField; use dw\models\GameLogs; Я сам раньше этим грешил, но потом понял, что без этого в namespace есть много удобств.
Был бы я фрилансером писал бы только на функциях. За мной бы на коленях ползали умоляли что то исправить доделать. Квартиры машины переписывали. Вот это жизнь