рекция направления движения и в любом случае (змея должна непрерывно двигаться!) на дисплей выводится изображение нового положения головы змеи.

Рассмотрим подробнее вопросы кодирования изображения змеи ее движения. Направление движения задается переменной drctn%, которая может принимать значения от 0 до 3 для движения вверх, вправо, вниз и влево соответственно. По нажатию стрелки вправо эта переменная увеличивается на 1, а по нажатию стрелки влево — уменьшается на 1. В случае выхода за диапазон допустимых значений производится коррекция (вместо 4 — 0, а вместо -1 — 3). Положение головы змеи в первых вариантах программы описывалось двумя целыми переменными (номера столбца и строки) ihead и jhead, но затем для уменьшения количества вычислений оказалось целесообразным использовать код смещения в ЗУ адаптера дисплея, который однозначно связан с номерами столбца и строки и обозначается в программе khead. При изменении номера столбца на 2 код смещения (адрес) изменяется на 4, а при изменении номера строки на 1 — на 160. (Изменения производятся со знаком плюс при движении вниз и вправо).

Для изображения головы змеи всегда используется окрашенный в желтый цвет псевдографический символ прямоугольника в нижней половине растра (код 220). В зависимости от направления движения атрибут изменяется, так как при движении вверх, вправо или влево фон должен быть черным (значение атрибута 14), а при движении вниз — коричневым (значение атрибута 110). Поскольку перед построением нового изображения головы на месте старого изображения головы необходимо поместить изображение части туловища, то по старому адресу головы в ячейку атрибута всегда записывается код коричневого цвета 6, а в случае движения по вертикали в ячейку символа записывается код 219 (символ прямоугольника во всем растре). После этого в соответствии с кодом направления движения изменяется значение khead. Но при горизонтальном движении дополнительно производится запись кода 220 и атрибута 6 (коричневый цвет символа на черном фоне) в промежуточный между старым и новым положением головы четный столбец. Когда значение атрибута и новое значение смещения определены, остается только записать в ячейку символа код 220, а в ячейку атрибута соответствующий код.

Действия программы с изображением хвоста змеи немного сложнее, нежели с изображением головы. Необходимость стирания части изображения хвоста змеи определяется по счетчику, в который заносится значение атрибута "пищи" при ее захвате. Если в счетчике находится ненулевое значение, то изображение хвоста не стирается, но из счетчика вычитается 1. Если при очередном вычитании значение счетчика обратилось в нуль, то программа строит новое изображение "пищи" (ее цвет и положение выбираются случайным образом). Выбор положения производится из множества всевозможных положений головы змеи, но при этом изображение "пищи" не должно попасть на изображение змеи. Таким образом обеспечивается увеличение длины змеи, когда играющему удалось навести голову змеи надлежащим образом.

При нулевом значении счетчика производится стирание части изо-