Сохраняет текущие позиции червя в глобальном массиве, где голова является первой позицией.
int[] x= {30,24,18,12,6,0};
int step = 6;
Изменение положения в каждом кадре на расстояние между двумя частями червя. Сдвиг текущей позиции в массиве в цикле:
draw() {
.....
for (int i = x.length-1; i > 0; --i ){
x[i] = x[i-1];
}
x[0] += step;
.....
}
Измените направление, если достигнут конец окна или начало окна, головкой червя:
if ( x[0] >= width || x[0] < 0)
step *= -1;
Нарисуйте червя в обратном порядке:
for (int i = x.length-1; i >= 0; --i ){
ellipse(x[i], 100, 10, 10);
}
Полный код может выглядеть следующим образом:
void setup(){
size(200,200);
}
int[] x= {30,24,18,12,6,0};
int step = 6;
void draw() {
background(0);
fill (255,0,00);
for (int i = x.length-1; i >= 0; --i ){
ellipse(x[i], 100, 10, 10);
}
for (int i = x.length-1; i > 0; --i ){
x[i] = x[i-1];
}
x[0] += step;
if ( x[0] >= width || x[0] < 0)
step *= -1;
}
Смотрите превью:
![](https://i.stack.imgur.com/jALz1.gif)