Я решил дать сообществу Хабра небольшую задачу найти и реализовать лучший алгоритм.
Всем известна игра Тетрис.
Представьте, что вместо вас в эту игру играет компьютер.
Итак, задачей будет описать алгоритм, который будет правильно расставлять фигуры, чтобы не было пустых мест. я сделал на JSFiddle простой пользовательский интерфейс протестировать алгоритм.
Все, что вам нужно, это реализовать одну функцию.
Но подождите, сначала я объясню правила.
Я решил пока не делать полный аналог тетриса, так как начинать нужно с малого, тогда возможно больше людей смогут себя проверить.
Итак, упрощения нашего Тетриса:
- Всего 2 фигурки: 1х4 и 2х2.
- Размер поля: 10x20
- 2 положения - вертикальное и горизонтальное.
- Фигуры нельзя поворачивать
- Фигуры появляются случайным образом, в случайном порядке повернуты.
Вам нужно найти для него оптимальное место.
Вам нужно будет реализовать это.
w — ширина новой фигуры, h — высота.
Всего вы можете использовать 3 переменные: w, h и cols. cols — это массив из 10 элементов.
Каждый элемент представляет собой столбец, значение — занимаемая высота столбца.
Функция должна возвращать целое число от 1 до 10 включительно.
Это будет номер столбца, в который попадет самая левая ячейка рисунка.
Всего в этом тетрисе 200 ячеек, то есть вы сможете протестировать свой алгоритм по числу, которое осталось заполнить (отображается в пользовательском интерфейсе).
Распакуйте скрипку и опубликуйте ее в комментариях.
Любая попытка будет оценена по достоинству.
В идеале решение должно быть максимально эффективным и продуктивным.
Тогда мы сможем улучшить тетрис до исходного.
Еще раз ссылка на JSFiddle P.S. Если вы видите ошибки в самом пользовательском интерфейсе, сообщите мне об этом.
Теги: #Тетрис #JavaScript #Алгоритмы #JavaScript
-
Как Снизить Стоимость Веб-Хостинга Mac
19 Oct, 24 -
Напишите Статьи Для Своего Сайта Adsense
19 Oct, 24 -
Распределенная Субд Для Предприятия
19 Oct, 24 -
Google Chrome 6 Вошел В Статус Бета-Версии
19 Oct, 24 -
Adobe Выпускает 13 Новых Продуктов
19 Oct, 24 -
Чего Не Хватает В Css.
19 Oct, 24