三角関数を用いれば蛇の動きは表現しやすいです。
サンプルを一つ作ってみました。数値をいろいろ変えて試してみてください。
/////////////////////////////////////////////
sn=10//蛇の胴体の数
sb=20//蛇の胴体の大きさ
sv=1.0//蛇の速さ
sw=20.0//横揺れの大きさ
sx=0 : sy=0//蛇の初期座標
rad=M_PI/4.0//蛇の動く方向(ラジアン単位)
/////////////////////////////////////////////
buffer 1,sb,sb
boxf
//////////////////////////////////////////////
color 0,255,0 : boxf
color 255,255,0 : boxf 0,0,10,20//蛇の胴体の絵
//////////////////////////////////////////////
celdiv 1,sb,sb,sb/2,sb/2
gsel 0
sd=0.0
dim sx,sn
dim sy,sn
gmode 2
repeat
redraw 0
color : boxf
sd+sv
for f,0,sn,1
d=sd-double(f*sb/2)
pos sx+d*cos(rad)-sw*sin(rad)*sin(d/10.0),sy+d*sin(rad)+sw*cos(rad)*sin(d/10.0)
celput 1,,,,rad+atan(cos(d/10.0))
next
redraw 1
await 16
loop