If you don't mind having a blocky effect (old-shcool style) then you could use an array for this. The array stores the coordinates for each element of the snake - the head writes its coordinates to the front and the other segments of the snake read their positions from it. When the head moves, just push in its new coords so each of the subsequent elements will have their position coords changed to those of its more senior neighbor.