Тетрис
Захотелось написать тетрис, ради практики, и не мог я от этой мысли избавиться, пока не воплотил. В общем-то дурость, но упражнение было хорошее. Кода много, выкладывать не буду, вот ссылки
Tetris.js
Немножко ужасного оформления и вот что получилось: TETRIS
|
не актуально
А ExCanvas не пробовали?
Как научить IE делать Canvas
"Тормозит" немного. Бывает фигуры подвисают на пару секунд. Хотя я не могу похвастаться конфигурацией компьютера, но все же тормозящий тетрис это весьма уныло)
Спасибо за замечание!
Фигуры подвисают на миг когда отправляется запрос за обновлением листа лидеров (раз в 30 секунд), тоже заметил, не приятно, в прочем можно не обновлять список постоянно, а лишь во время записи; в лево-вправо фигурки двигаются рывками, потому что так задумано, рывков будет не заметно если увеличить скорость их движения влево-вправо, но тогда целиться будет очень трудно. А в целом, да, тормозит, потому как таблица вся перерисовывается при каждом кадре анимации, не знаю как сделать иначе, изначально игра выводилась на canvas, было здорово, и разукрасить можно было как угодно, и стилей никаких не надо, но захотелось чтобы игра работала в "любимом" IE, пришлось жертвовать, если есть предложения как "ускорить" игру, буду рад выслушать, по сути мне надо будет только функцию вывода игры изменить.
не надо жертв для ИЕ
По поводу медленной перерисовки поля: у вас каждая перерисовка — это полное пересоздание DOM-дерева таблицы. Конечно, это медленно.
Можно сделать через CSS-классы — т.е. сделайте 6 классов для цветов фигурок и еще один для пустых квадратиков. Должно работать заметно быстрее.
У меня была такая идея, но я от нее почему-то быстро отказался, хотелось чтобы игра была более мобильной, то есть не зависела от css, но параметры стилей менять в коде, конечно, ресурсозатратно, и часть я разу сменил на CSS, а раз уж все равно этого избежать не удалось, то переделал так, как вы посоветовали.
На моей машине не ощущается ускорения работы, в FF и Chrome, но в диспетчере задач загрузка ЦП не превышает 5%, раньше до 20 прыгало, но в IE 8 будто бы даже откровенно тормозить начало, загрузка 20-30%. У меня на ноуте i5 430UM
Сейчас у вас узкое место в отрисовке поля — это перебор всего DOM-дерева поля. У вас каждый раз ищется 200 элементов (на одного игрока), это много.
Для каждого игрового поля создайте массив 10x20, в котором будут лежать ячейки тблицы. Этот массив должен быть глобальным по отношению к функции draw, и она должна использовать его, а не находить каждый раз все элементы.
И да, переведите код в кодировку UTF-8:)
Кстати, у таблицы есть поле rows, которое является массивом, элементы которого являются нодами TR. У каждого rows[i] есть поле cells, которое тоже является массивом, элементы которого являются собственно ячейками таблицы. То есть 5-ая ячейка в 3-ем ряду -- это tbl.rows[2].cells[4]. Можно попробовать работать через них, это тоже должно быть достаточно быстро.
вот тут ещё вариант тетриса на js есть, только графика поугрюмей, фигуры позаковырестей и, плюс ко всему, они ещё "пробиваются" =)
http://researcher.su/
ваш покрасочней выглядит ))
В мой тетрис очень легко добавить другие фигуры, но там.. ого, сложно с такими играть, я не смог собрать линию (
Я убил на этот тетрис около часа. Я бы убил больше времени, если бы не понял, что в нём не хватает ускорения.
Ну значит, спасибо, вы баг нашли, вообще ускорение есть, раз в 30 секунд шаг множится на 0.9, надо посмотреть
Все пофиг, я аж мин на 20 завис
Отличный тетрис у меня все нормально тормозов нет opera 11.10 - 2092
Отличный тетрис!
Roksa podobne
Roksa pobiedziska
Отправить комментарий
Приветствуются комментарии:Для остальных вопросов и обсуждений есть форум.