Snake脚本没有将值传递给变量

时间:2012-06-22 08:59:15

标签: javascript jquery

所以这是我的蛇形剧本 -

http://jsfiddle.net/6bKHc/24/

我开始创建一个蛇游戏,但基本上移动(顶部),移动(底部)e.c.不管用。有什么想法吗?我知道我不能将这些元素传递给变量,所以也许你可以告诉我如何正确地做到这一点?

2 个答案:

答案 0 :(得分:0)

要使其正常工作,您必须修改代码,如下所示:

$(document).keydown(function() {
    var inter;
    return function(event) {
        var move, prevDirection;
        clearInterval(inter);
        inter = setInterval(move = function(direction) {
            var value, prop;
            switch (direction || prevDirection) {
            case "top":
                prop = "top";
                value = -5;
                break;
            case "bottom":
                prop = "top";
                value = 5;
                break;
            case "left":
                prop = "left";
                value = -5;
                break;
            case "right":
                prop = "left";
                value = 5;
                break;
            }
            if (direction) prevDirection = direction;
            $(".snake").css(prop, $(".snake").position()[prop] + value);

        }, 500);
        if (event.which == 40) {
            move('bottom');
        } else if (event.which == 39) {
            move('right');
        } else if (event.which == 37) {
            move('left');
        } else if (event.which == 38) {
            move('top')
        };
    }
}());​
  ​

http://jsfiddle.net/6bKHc/42/

答案 1 :(得分:0)

确定清除语法并查看了应该开始的错误

$(document).keydown(function(event){
    var move, inter;
    inter = setInterval(move = function() {
        var dir = $(".snake").data('dir');
        var snake = $('.snake');

        if(dir == 'top') {
            snake.stop().animate({"top": "+=5px"});
        }
        if(dir == 'bottom') {
            snake.stop().animate({"top": "-=5px"});
        }
        if(dir == 'left') {
            snake.stop().animate({"left": "+=5px"});
        }
        if(dir == 'right') {
            snake.stop().animate({"top": "-=5px"});
        }
    }, 500);
    if(event.which == 40) {
        $(".snake").data('dir','top');
    } else if(event.which == 39) {
        $(".snake").data('dir','left');           
    } else if(event.which == 37) {
        $(".snake").data('dir','right');        
    } else if(event.which == 38) {
       $(".snake").data('dir','bottom');    
    }; });​

fiddle

要做出一些明显的补充:

  • 边界检查
  • 动画的流畅度。