Чтобы змея не образовала линию, необходимо удалять квадраты, которые занимает змея, перед тем, как нарисовать новые.
Это можно сделать с помощью метода clearRect контекста canvas, который удаляет определенную область.
Как вариант, можно добавить строку ctx.clearRect(0, 0, canvas.width, canvas.height) перед строкой ctx.fillRect(px,py,box,box) в функции Snake().