首页 > 代码库 > 前端JS-- 贪吃蛇游戏

前端JS-- 贪吃蛇游戏

同样是前端,可惜我做的不是游戏前端,有些小遗憾。

不过靠着自己比常人多出的一点点学习能力,还是挤出不少时间自学了一些小玩意(姑且称他为小玩意吧)。

都是自己摸索着做的,代码很简单,刚刚工作半个月,很无奈。给自己以后留点回忆的线索吧。

(因为是公司是香港那边的,所以都是繁体系统,无奈只能使用我那蹩脚的英语注释了。。。。更无奈的是给自己取了个很那个名字--snow)

代码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE> snake game test </TITLE></HEAD><style>    div{        width:20px;        height:20px;        position:absolute;        border:1px solid black;        }    a{        font-family:tmb;        font-size:18px;        color:green;    }    .normal{        background:white;    }    .snaker{        background:red;    }    .food{        background:black;    }</style><script>/*    @date:2014-07-21    @author: snow.he*/    var rows=20,        cols=20,        arr =[];        var map_top =100,        map_left=80;        var snake={dir: 39,snake_body:[]};    var firstLen =5;    var firstDir =39;    var firstRows =5;    var snow;    var len;    var isplay=true;//share functionfunction $(str){    return document.getElementById(str);}// initfunction init(){    initMap();    initSnake();    initData();    showSnake();    setNewFood();    changeMove();}function initData(){    var firstLev = 1;    var firstScore =0;    var continue_sta = false;    if(localStorage.lev&&localStorage.score){        if(confirm("are you continue last time?")){            continue_sta = true;        }    }    if(continue_sta){        $("lev").text =localStorage.Lev;        $("score").text = localStorage.score;    }else{        $("lev").text = firstLev ;        $("score").text = firstScore;    }}function initMap(){    for(i=0;i<rows;i++)    {     arr[i]=[];     for(j=0;j<cols;j++)    {        arr[i][j]=document.createElement(‘div‘);        arr[i][j].style.top=map_top+i*24+‘px‘;        arr[i][j].style.left=map_left+j*24+‘px‘;           arr[i][j].className=‘normal‘;           document.body.appendChild(arr[i][j]);    }    }}  /*  left - A:65,left:37,4:100  right - D:68,right:39,6:102  up - W:87,up:38,8:104  down - S:83,down:40,2:98  */function showSnake(){//        console.log(snake);    for(var i=0;i<snake.snake_body.length;i++){        arr[snake.snake_body[i][0]][snake.snake_body[i][1]].className ="snaker";    }}function initSnake(){        snake.dir = firstDir;        snake.snake_body =[];    for(var i=0;i<firstLen;i++){        var temp =[];        temp.push(firstRows);        temp.push(i);        snake.snake_body.push(temp);    }}//if the snake eat a food, take a new foodfunction setNewFood(){    var X,Y;    X =Math.floor(Math.random()*rows);    Y =Math.floor(Math.random()*cols);    arr[X][Y].className ="food";}//clear mapfunction clearSnake(){    for(var i=0;i<rows;i++){        for(var j=0;j<cols;j++){        if(arr[i][j].className == "snaker"){            arr[i][j].className ="normal";            }        }    }    //the second function to clear map,but have bug/*    for(var i=0;i<snake.snake_body.length;i++){        arr[snake.snake_body[i][0]][snake.snake_body[i][1]-1].className ="normal";        console.log(snake.snake_body[i][0]+"&&"+(snake.snake_body[i][1]-1));    }*/}// check snake can movefunction isCanMoveit(dir,len){    var status =true;    switch(dir){        case 39:            if(snake.snake_body[len-1][1] >= cols-1  ){            //arr[parseInt(snake.snake_body[len-1][0])+1][snake.snake_body[len-1][1]].className =="snaker"            //    console.log(snake.snake_body[len-1][0]+"&:"+len-1+","+snake.snake_body[len-1][0]);                status =false;            };break;        case 37:            if(snake.snake_body[len-1][1] <= 0 ){                status =false;            };break;        case 38:            if(snake.snake_body[len-1][0] <= 0 ){                    status =false;            };break;        case 40:            if(snake.snake_body[len-1][0] >= rows-1 ){                status=false;            };break;    }    return status;}// snake‘s body movefunction snakeBodyMove(len){        var midX,midY;        var midX2,midY2;        midX = snake.snake_body[len-1][0];        midY = snake.snake_body[len-1][1];        for(var i=parseInt(len-1);i>0;i--){        midX2 = midX;        midY2 = midY;        midX = snake.snake_body[i-1][0];        midY = snake.snake_body[i-1][1];        snake.snake_body[i-1][0] =midX2;        snake.snake_body[i-1][1] =midY2;    }}//snake eat foodfunction eatFood(x,y){    var temp=[];    temp.push(x);    temp.push(y);    arr[x][y].className = "snaker";    snake.snake_body.push(temp);    setNewFood();    len = snake.snake_body.length;    keepScore();}//check snake can eat foodfunction isEatFood(dir){ len = snake.snake_body.length;    var isFood = false;    try{     switch(dir){        case 39:            if(arr[snake.snake_body[len-1][0]][snake.snake_body[len-1][1]+1].className == "food"){                eatFood(snake.snake_body[len-1][0],snake.snake_body[len-1][1]+1);            };break;        case 37:            if(arr[snake.snake_body[len-1][0]][snake.snake_body[len-1][1]-1].className == "food"){                eatFood(snake.snake_body[len-1][0],snake.snake_body[len-1][1]-1);            };break;        case 38:            if(arr[snake.snake_body[len-1][0]-1][snake.snake_body[len-1][1]].className == "food"){                eatFood(snake.snake_body[len-1][0]-1,snake.snake_body[len-1][1]);            };break;        case 40:            if(arr[snake.snake_body[len-1][0]+1][snake.snake_body[len-1][1]].className == "food"){                eatFood(snake.snake_body[len-1][0]+1,snake.snake_body[len-1][1]);            };break;     }    }catch(e){        gameOver();    }}//keep the player‘ scorefunction keepScore(){    $("score").text = parseInt($("score").text)+100;    localStorage.snakeScore = $("score").text;    if(parseInt($("score").text) >= parseInt($("lev").text)*900){        keepLev();    }}//keep the player‘s levelfunction keepLev(){    $("lev").text = parseInt($("lev").text)+1;    localStorage.snakeLev = $("lev").text;    changeMove();}//change the snake move velocityfunction changeMove(){    if(snow){        clearInterval(snow);        }    var V = parseInt($("lev").text);    if(V<7){        snow = setInterval(moveFront,(500-V*50));    }else{        snow = setInterval(moveFront,180);    }}// snake movefunction moveFront(){     len = snake.snake_body.length;    var isCanMove;    isCanMove = isCanMoveit(snake.dir,len);    if(isCanMove){        isEatFood(snake.dir);        snakeBodyMove(len);        switch(snake.dir){            case 39:                snake.snake_body[len-1][1]++;                break;            case 37:                snake.snake_body[len-1][1]--;                break;            case 38:                snake.snake_body[len-1][0]--;                break;            case 40:                snake.snake_body[len-1][0]++;                break;        }            }    else{        gameOver();    }    clearSnake();    showSnake();}// handle the player‘s keywindow.onkeydown =function(ev){    var oEvent=ev||event;    var canUser = true;    if(oEvent.keyCode<=40 && oEvent.keyCode>=37){        switch(oEvent.keyCode){            case 37:                if(snake.dir == 39){ canUser = false;};break;            case 38:                if(snake.dir == 40){ canUser = false;};break;            case 39:                if(snake.dir == 37){ canUser = false;};break;            case 40:                if(snake.dir == 38){ canUser = false;};break;        }        if(canUser){            snake.dir = oEvent.keyCode;        }    }    if(oEvent.keyCode == 32){            if(isplay){                clearInterval(snow);                isplay = false;            }else{                changeMove();                isplay = true;            }        }}//game overfunction gameOver(){    clearInterval(snow);    if(confirm("are you continue?")){        init();    }}</script><BODY onl oad="init()"><div id="testttt" style="left:100px;top:20px;height:30px;width:420px;border:0px;">    <div style="width:150px;border:0px;">Lv:<a id="lev">1</a></div>    <div style="width:240px;left:150px;border:0px;">Score:<a id="score">00</a></div></div></BODY></HTML>  

 

 

 

都是上班时间做的,下班不学,没办法,人太懒。

漫漫长路,希望能够走得远一点。便在此处记录自己的成长历程吧