Detección de colisión de JavaScript

Estoy tratando de hacer un juego de serpientes en javascript, pero estoy luchando con la detección de colisiones. He intentado varios métodos hasta ahora, pero en la desesperación, he decidido almacenar todas las posiciones de los segmentos de cada cuadro y luego verificar si hay duplicados antes de animar el siguiente. Desafortunadamente, este método tampoco ha tenido éxito.

Tal vez esto se deba a un malentendido sobre cómo JS trata las matrices. Por un tiempo estaba usandoif(x in y) pero por lo que puedo decir, devuelve si exactamente el mismo objeto está en una matriz.

Aquí está la demostración en vivo:http: //jsfiddle.net/AScYw/2

Aquí está el código más fácil de leer:http: //pastebin.com/ygj73me

El código en cuestión está en el objeto serpiente, como la funcióncollide.

this.collide = function(){
            for(var z=0; z<this.positions.length-1; z++){
                for(var q=z+1; q<this.positions.length-1; q++){
                    return this.positions[z][0] == this.positions[q][0] && this.positions[z][1] == this.positions[q][1];
                }
            }

Respuestas a la pregunta(1)

Su respuesta a la pregunta