etecção de colisão JavaScript

Estou tentando fazer um jogo de cobra em javascript, mas estou lutando com a detecção de colisão. Eu tentei vários métodos até agora, mas em desespero, resolvi armazenar todas as posições dos segmentos de cada quadro e verificar se há duplicatas antes de animar a próxima. Infelizmente, esse método também não teve sucesso.

Talvez isso se deva a um mal-entendido de como JS trata matrizes. Por um tempo eu estava usandoif(x in y) mas, pelo que sei, isso retorna se o mesmo objeto estiver em uma matri

qui está a demonstração ao vivo:http: //jsfiddle.net/AScYw/2

Aqui está o código mais facilmente lido:http: //pastebin.com/ygj73me

O código em questão está no objeto cobra, como a funçãocollide.

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];
                }
            }

questionAnswers(1)

yourAnswerToTheQuestion