07 июля 2011

Змейка изнутри

Что же скрывается за простотой змейки. Начнем с самого сложного. С линии толщиной в 1px. В Canvas это сложно, если не знать некоторые тонкости.

Как возможно понятно из рисунка, отрезок нарисованная в координатах (2,2) и (2,8), рисуется не в квадрате пикселя, а на его правой границе, между пикселями, в то время как отрезок (7.5, 1.5) и (7.5, 8.5) рисуется как надо, внутри квадрата пикселя.

В прототипе рендер сначала ведется в массив, который потом рисуется в Canvas. Сейчас уже не так. Все рисуется сразу в Canvas.

Бесконечный цикл организован через setTimeout. В конце каждого кадра мы считаем сколько нужно подождать до следующего. В среднем ждать нужно 40 миллисекунд, что соответствует 25 кадрам в секунду. Сейчас рассчитывается время до следующего изменения в кадре, либо мигнет яблоко, либо перемещается змейка.

Симуляция изменения объектов происходит не в каждом кадре, а когда это нужно. Плавной анимации тут нет. Это симуляция змейки с устройства Brick Game. Вот в общем-то и все пока.

Скоро версия с уровнями и изменением скорости, но так как реального девайса у меня нет, буду фантазировать.