论坛首页 Web前端技术论坛

javascript 贪吃蛇

浏览 5952 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-12-28  
闲来无聊,写点东西,写点啥呢?思来想去,学了点js,那就写个贪吃蛇吧,网上下了个贪吃蛇的源码,看了看。
本来是想用Table的,后来发现那东西比较麻烦,所以就用了div,比较容易控制。
写了以后发现写JS也需要设计,JS代码不想C#代码可以转到定义,所以没有设计很容易乱.我以后要把JS分个模块,每个功能属于模块.

本人新手,学习JS三个月,其中看了EXTJS3.0的API一个月,虽然也能小用点EXTJS,但是总觉的EXTJS集成的太好,不对JS学习点,心里总不踏实,
JS才是基础,所以觉得继续学习JS。现在正在看Javascript权威指南(好称犀牛书).
大家可以下源码看看,可以用砖拍我,但轻点~~呵呵
同时感谢42087743的大虾,我看了你的源码
   发表时间:2009-12-29   最后修改:2009-12-29
  大家给我点意见!!!  
0 请登录后投票
   发表时间:2009-12-29  
IE8、FF3.5运行不了
0 请登录后投票
   发表时间:2009-12-30  
Icgemu 写道
IE8、FF3.5运行不了

IE8应该可以,是空格开始~~~
0 请登录后投票
   发表时间:2010-01-02  
横向移动,有问题,不是一个直线,是两个直线加起来了。。。
0 请登录后投票
   发表时间:2010-01-02  
不错 加油
0 请登录后投票
   发表时间:2010-01-03  
  startGame: function() {
                Game.initFood();
                Game.snakeInit();
                document.onkeydown = function(e) {

                    //向上
                    if (event.keyCode == 38) {
                        if (Game.moveState == "down" || Game.moveState == "up") {
                            return false;
                        }
                        else {
                            Game.lastMoveState = Game.moveState;
                            Game.moveState = "up";
                        }
                        return false;
                    }
                    //向左
                    else if (event.keyCode == 37) {
                        if (Game.moveState == "right" || Game.moveState == "left") {
                            return false;
                        }
                        else {
                            Game.lastMoveState = Game.moveState;
                            Game.moveState = "left";
                        }
                        return false;
                    }
                    //向右
                    else if (event.keyCode == 39) {
                        if (Game.moveState == "left" || Game.moveState == "right") {
                            return false;
                        }
                        else {
                            Game.lastMoveState = Game.moveState;
                            Game.moveState = "right";
                        }
                        return false;
                    }
                    //向下
                    else if (event.keyCode == 40) {
                        if (Game.moveState == "up" || Game.moveState == "down") {
                            return false;
                        }
                        else {
                            Game.lastMoveState = Game.moveState;
                            Game.moveState = "down";
                        }
                        return false;
                    }
                    //空格
                    else if (event.keyCode == 32) {
                        //假如游戏为停止状态
                        if (Game.gameState == "stop") {
                            Game.gameState = "run";
                            timeID = setInterval(Game.move, Game.speed);
                            return false;
                        }
                        //假如游戏为运行状态
                        else if (Game.gameState == "run") {
                            Game.gameState = "stop";
                            clearInterval(timeID);
                            return false;
                        }
                        //假如游戏为失败状态
                        else if (Game.gameState == "dead") {
                            Game.gameState = "stop";
                            for (var i = 0; i < Game.snake.length; i++) {
                                document.getElementById("gameInterface").removeChild(Game.snake[i]);
                            }
                            Game.snake = [];
                            Game.snakeInit();
                            return false;
                        }
                    }
                }

楼主,你“ document.onkeydown = function(e) {”有问题
下面调用的都是event变量,这里你才函数参数是e,所以问题在这里。改成event就可以顺利运行了。
总体上还不错,加油!
0 请登录后投票
   发表时间:2010-01-04  
楼主,你“ document.onkeydown = function(e) {”有问题
下面调用的都是event变量,这里你才函数参数是e,所以问题在这里。改成event就可以顺利运行了。
总体上还不错,加油!
大侠,没听咋明白,参数e好像没有使用过啊~~本来我是想测试下onkeydown事件会不会传啥参数过来,后来忘了去掉e了.

如果把e改成event会envent会变成undefind

谢谢你的指点
0 请登录后投票
   发表时间:2010-01-04  
lostpast 写道
不错 加油

谢谢支持
0 请登录后投票
   发表时间:2010-01-06   最后修改:2010-01-06
和游戏还是有点差距的 BUG还是比较多的
1.蛇能穿自己身体
2.能跨行吃到食物
3.每次初始化 速度没有被重置
.... 鉴定完毕。
不过在我看来已经很强大了
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics