自分自身に噛み付いた判定を一歩移動するたびにしなくちゃいけないから
配列を使うのが高速でいいと個人的には思う。

あらかじめ要素数100くらいの配列を用意して、
ここに[0]から順に座標をぶっこんでいく。
最後の要素に座標を埋め込んだらまた[0]に戻る。

蛇の先頭と末尾がどの要素を指すか記憶し、
その範囲の要素内の座標が体になる。

例えば先頭が15で末尾が3なら
配列[15]が頭の座標であり、配列[3]が尻尾の座標ということになる。
移動の次の瞬間、配列[16]に新たな座標が書き込まれ、
先頭は16に、末尾は4に移動する。
もしこの時胴体が延びるなら、末尾は3のままとなる。
描画は先頭から末尾に向かって、
自分自身に噛み付いたかどうかもその範囲で行う。

できれば半分開いた範囲を使って、末尾ではなく、
末尾直後の要素(ここでは2)を指すようにしたほうがいいかもしれない。

あー長い。読まなくて良いよ。まんこまんこ。