А что объяснять-то? Объявляешь динамический массив:
Код:
var
MySnake: array of TPoint;
т.к. сначала твоя змея имеет длину в 1 чего-то там, скажем сегмент, устанавливаешь длину массива равной 1
и задаешь его, сегмента, координаты:
Код:
MySnake[Low(MySnake)].X:=100;
MySnake[Low(MySnake)].Y:=100;
когда нужно, увеличиваешь длину массива на 1:
Код:
SetLength(MySnake,Length(MySnake)+1);
нижний индекс динамического массива (обычно это 0, но мало ли как будут вести себя последующие версии компилятора) определяется функцией
Low(), верхний индекс -
High(). Таким образом цикл по массиву (например для переопределения координат при перемещении) можно организовать так:
Код:
for i:=Low(MySnake) to High(MySnake) to
...
Этого на мой вгляд достаточно
