Затруднения с setInterval в игре "Змейка" (JavaScript)
Vlad Zhavoronkov
var real_row = 1;
var real_col = 1;

var step = 1 ;

var keys = {
    RIGHT : 39,
    LEFT : 37,
    DOWN : 40,
    UP : 38,
}

COLOR_RED = 'red'
COLOR_WHITE = 'white'

function createMatrix (){
    var n = 20*20;
    var matrix = document.getElementById('matrix');
        for(var i = 0; i < n; i++){
            var div = document.createElement('div')
            div.className = 'cell'
            matrix.appendChild(div)
        }

}

function setCell (row , col, val){
    var matrix = document.getElementById('matrix')
    var cell = matrix.children[20 * (row - 1) + col - 1]
    return cell.style.backgroundColor = (val == true ? COLOR_RED : COLOR_WHITE)
}

function getCheck(){
    if(real_col > 20) real_col = 20;

    if(real_col < 1) real_col = 1;

    if(real_row > 20) real_row = 20;

    if(real_row < 1) real_row = 1;
}

function getMovie(e){
    setCell(real_row , real_col , false)

    if(e.keyCode == keys.RIGHT) real_col++

    else if(e.keyCode == keys.LEFT) real_col--

    else if(e.keyCode == keys.UP) real_row--

    else if(e.keyCode == keys.DOWN) real_row++
    getCheck()

    setCell(real_row , real_col , true) 
}


window.onload = function(){

    createMatrix()

    setCell(real_row , real_col , true)

    document.onkeydown = function(e){
        var timer = setInterval(function(){getMovie(e)} , 150)
    }
}

Собственной проблема следующая, при нажатии на клавишу "стрелочка вправо" все идет так как надо, но после нажатия на любую другую клавишу из "стрелочек" происходит вакханалия, идет отдновременное увеличение столбца и строки.
Прошу , пожалуйста , объяснить ошибки и по возможности решение (надеюсь объяснил все понятно, заранее спаибо!).

Vlad Zhavoronkov 5 месяцев назадСпасибо 0
1 чел.