日期:2014-05-20  浏览次数:21034 次

JS 写的贪吃蛇 无聊发帖散分
已下为 JS 部分代码 ,编写时间较短用了8个小时写的,还有部分 BUG 未解决,娱乐为辅,散分为主。
以下为网络地址:
http://www.needsee.com/game/html.html

JScript code


<script type="text/javascript" language="javascript">
//--------------------------------
//----制作者:   ║LZ↗雨辰║
//--制作时间:   2010年5月21日
//--制作用时:   8小时
//--------QQ:   *********
//--------------------------------
    
var key=39;                     //键值 39右键 37左键 38上建 下键40
var trailId='';                 //记录头部ID
var tailId='';                  //记录尾部ID
var tailArray = new Array();    //ID 拆分的数组
var randomL=20;                 //随机数 左ID
var randomR=30;                 //随机数 右ID
var foodCount=5;                //食物数量
var count=0;                    //食物累计
var times=200;                  //行进速度
var timeSpace=10;               //速度递增值 注意:值必须大于等于1
  
function $(id){
    return document.getElementById(id);
}
 
function run(){                     //程序入口
    d();                            //程序主体
    r();
    $('txtTime').value = times;     //行进速度显示
}
  
function r(){       //食物随机函数
    var randomID = '';
 
    randomL = Math.floor(Math.random()*52+1);
    randomR = Math.floor(Math.random()*48+1);
       
    if(count < foodCount){
        randomID = randomL + '_' + randomR;

        if($(randomID).style.background == 'white' && $(randomID).title == ''){
            $(randomID).style.background = 'black';
            $(randomID).title = '0';
            count++;
        }
           
    }
}
    
function d(){
    var left=0;
    var right=0;
    var up=0;
    var down=0;
        
    var oId='';
        
    tailArray = tailId.split('_');          //0 为左边(-1 上 +1 下) 1 为右边(-1 左 +1 右)尾部ID拆分
    //alert(tailId);
    //------------------------------到此尾部开始
        
    left = Number(tailArray[1]) - 1;
    if(left >= 1){                          //左边预算
        var id = tailArray[0] + '_' + left;
            
        if($(id).style.background != 'white' && $(id).title == ''){//0 食物 
            oId = id;
        }
    }
    right = Number(tailArray[1]) + 1;
    if(right <= 50){                        //右边预算
        var id = tailArray[0] + '_' + right;
           
        if($(id).style.background != 'white' && $(id).title == ''){//0 食物 
            oId = id;
        }
    }
    up = Number(tailArray[0]) - 1;
    if(up >= 1){                            //上边预算
        var id = up + '_' + tailArray[1];
            
        if($(id).style.background != 'white' && $(id).title == ''){//0 食物 
            oId = id;
        }
    }
    down = Number(tailArray[0]) + 1;
    if(down <= 55){                           //下边预算
        var id = down + '_' + tailArray[1];
            
        if($(id).style.background != 'white' && $(id).title == ''){//0 食物 
            oId = id;
        }
    }
    //alert(tailId);
    $(tailId).style.background='white';//将先前尾部变色
    tailId = oId;//记录预算尾部ID
        
    //------------------------------到此尾部结束
    //------------------------------到此头部开始
        
    tailArray = trailId.split('_');          //0 为左边(-1 上 +1 下) 1 为右边(-1 左 +1 右)头部ID拆分
        
    if(key == 37){//左
        left = Number(tailArray[1]) - 1;
        if(left >= 1){                          //左边预算
            var id = tailArray[0] + '_' + left;
                
            if($(id).style.background == 'white' && $(id).title == ''){//0 食物 
                $(id).style.background = 'black';
                $(id).title = '';
                trailId = id;
            }else if($(id).style.background == 'black' && $(id).title == '0'){
                var ids = tailArray[0] + '_' + (left-1);
                $(id).style.background = 'black';
                $(id).title = '';
                $(ids).style.background = 'black';
                $(ids).title = '';
                trailId = ids;
                count--;
                //times -= timeSpace;
                times = times > timeSpace ? times - timeSpace : timeSpace;
            }else{
                $('butNewStart').style.display = 'block';
                alert('Game Over !');
                times = 600000;
            }
        }else{
            $('butNewStart').style.display = 'block';
            alert('Game Over !');
            times = 600000;
        }
    }else if(key == 38){//上
        up = Number(tailArray[0]) - 1;
        if(up >= 1){                            //上边预算
            var id = up + '_' + tailArray[1];
               
            if($(id).style.background == 'white' && $(id).title == ''){//0 食物 
                $(id).style.background = 'black';
                $(id).title = '';
                trailId = id;
            }else if($(id).style.background == 'black' && $(id).title == '0'){
                var ids = (up-1) + '_' + tailArray[1];
                $(id).style.background = 'black';
                $(id).title = '';
                $(ids).style.background = 'black';
                $(ids).title = '';
                trailId = ids;
                count--;
                //times -= timeSpace;
                times = times > timeSpace ? times - timeSpace : timeSpace;
            }else{
                $('butNewStart').style.display = 'block';
                alert('Game Over !');
                times = 600000;
            }
        }else{
            $('butNewStart').style.display = 'block';
            alert('Game Over !');
            times = 600000;
        }
    }else if(key == 39){//右
        right = Number(tailArray[1]) + 1;
        if(right <= 50){                        //右边预算
            var id = tailArray[0] + '_' + right;
              
            if($(id).style.background == 'white' && $(id).title == ''){//0 食物 
                $(id).style.background = 'black';
                $(id).title = '';
                trailId = id;
            }else if($(id).style.background == 'black' && $(id).title == '0'){
                var ids = tailArray[0] + '_' + (right+1);
                $(id).style.background = 'black';
                $(id).title = '';
                $(ids).style.background = 'black';
                $(ids).title = '';
                trailId = ids;
                count--;
                //times -= timeSpace;
                times = times > timeSpace ? times - timeSpace : timeSpace;
            }else{
                $('butNewStart').style.display = 'block';
                alert('Game Over !');
                times = 600000;
            }
        }else{
            $('butNewStart').style.display = 'block';
            alert('Game Over !');
            times = 600000;
        }
    }else if(key == 40){//下
        down = Number(tailArray[0]) + 1;
        if(down <= 55){                           //下边预算
            var id = down + '_' + tailArray[1];
              
            if($(id).style.background == 'white' && $(id).title == ''){//0 食物 
                $(id).style.background = 'black';
                $(id).title = '';
                trailId = id;
            }else if($(id).style.background == 'black' && $(id).title == '0'){
                var ids = (down+1) + '_' + tailArray[1];
                $(id).style.background = 'black';
                $(id).title = '';
                $(ids).style.background = 'black';
                $(ids).title = '';
                trailId = ids;
                count--;
                //times -= timeSpace;
                times = times > timeSpace ? times - timeSpace : timeSpace;
            }else{
                $('butNewStart').style.display = 'block';
                alert('Game Over !');
                times = 600000;
            }
        }else{
            $('butNewStart').style.display = 'block';
            alert('Game Over !');
            times = 600000;
        }
    }
    //------------------------------到此头部结束
        
    setTimeout('run()',times);
}
    
//开始 初始位置
function Start(id1,id2,id3){
    trailId=id3;
    tailId=id1;
    times=200;
    key=39;
    count=0;
        
    $(id1).style.background='black';
    $(id2).style.background='black';
    $(id3).style.background='black';
        
    $('txtTime').value = times;
    $('butStart').disabled = 'false';
        
    run();
}
    
//重新开始
function newStart(){
    $('butNewStart').style.display = 'none';
   
    for(var i=1 ; i<=55 ; i++){
        for(var j=1 ; j<=50 ; j++){
            $(i+'_'+j).style.background='white';
            $(i+'_'+j).title = '';
        }
    }
    Start('1_1','1_2','1_3');
}
    
function jumpPage(){
    if(event.keyCode == 37){//左
        if(key != 39){
            key=37;
        }
    }
    if(event.keyCode == 38){//上
        if(key != 40){
            key=38;
        }
    }
    if(event.keyCode == 39){//右
        if(key != 37){
            key=39;
        }
    }
    if(event.keyCode == 40){//下
       if(key != 38){
            key=40;
       }
    }
}
document.onkeydown=jumpPage;
</script>