JAVASCRIPT版贪吃蛇头走位V1可手动设置障碍

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>

<script type="text/javascript">

var a = new Array();
N=3;
curI=0;
curJ=0;
boomIJ=0;
var curTd;
    function init() {
        
        for(var i=0;i<N;i++){
            a[i] = new Array();
            for(var j=0;j<N;j++){
                a[i][j] = 0;
            }
        }
        
        var num = Math.floor(Math.random() * 9) + 1;
        var idNum = "td" + num;
        curTd=document.getElementById(idNum);
        
        curTd.style.background = "green";
        curI=parseInt((num-1)/N);
        curJ=parseInt((num-1)%N);
        
        //alert(curI+" "+curJ);
    }
    
    function check(td){
        //boomIJ=parseInt(td.parentElement.rowIndex)*N+parseInt(td.cellIndex));
        i=parseInt(td.parentElement.rowIndex);
        j=parseInt(td.cellIndex);
        boomIJ=i*N+j;
        td.style.background = "red";
        //alert(boomIJ);
    }
    

    function turn(event) {
        var e = event;//|| window.event || arguments.callee.caller.arguments[0];

        
        
        //alert(e.keyCode);
        if (e && e.keyCode == 38 ) {
            if(curI-1>=0){
                curTd.style.background = "";
                var idNum=(curI-1)*N+curJ+1;
                curI=curI-1;
                curTd=document.getElementById(("td"+idNum));
                curTd.style.background = "green";
                
                //alert(curI+" "+curJ+" "+boomIJ)
                if(curI*N+curJ == boomIJ){
                    alert("game over!");
                    return;
                }
            }
            //alert('38=上键');
            
            
        }

        if ( e.keyCode == 39) {
            //alert('39=右键');
            if(curJ+1<N){
                curTd.style.background = "";
                curJ=curJ+1;
                var idNum=curI*N+curJ+1;
                
                curTd=document.getElementById(("td"+idNum));
                curTd.style.background = "green";
                
                //alert(curI+" "+curJ+" "+boomIJ)
                if(curI*N+curJ == boomIJ){
                    alert("game over!");
                    return;
                }
            }
            
            
        }

        if ( e.keyCode == 37) {
            //alert('37=左键');
            if(curJ-1>=0){
                curTd.style.background = "";
                curJ=curJ-1;
                var idNum=curI*N+curJ+1;
                curTd=document.getElementById(("td"+idNum));
                curTd.style.background = "green";
                //alert(curI+" "+curJ+" "+boomIJ)
                if(curI*N+curJ == boomIJ){
                    alert("game over!");
                    return;
                }
            }
        }

        if (e && e.keyCode == 40 ) {
            //alert('40=下键');
            if(curI+1<N){
                curTd.style.background = "";
                curI=curI+1;
                var idNum=curI*N+curJ+1;                
                curTd=document.getElementById(("td"+idNum));
                curTd.style.background = "green";
                //alert(curI+" "+curJ+" "+boomIJ)
                if(curI*N+curJ == boomIJ){
                    alert("game over!");
                    return;
                }
            }
            
            
        }
        
        
    }

    window.onload = init;
</script>
</head>
<body οnkeydοwn="turn(event)">

    <table style="width: 50%; height: 300px;" border="1">
        <tr>
            <td id="td1" οnclick="check(this)" οnkeydοwn="turn(event)">1</td>
            <td id="td2" οnclick="check(this)" οnkeydοwn="turn(event)">2</td>
            <td id="td3" οnclick="check(this)" οnkeydοwn="turn(event)">3</td>
        </tr>
        <tr>
            <td id="td4" οnclick="check(this)" οnkeydοwn="turn(event)">4</td>
            <td id="td5" οnclick="check(this)" οnkeydοwn="turn(event)">5</td>
            <td id="td6" οnclick="check(this)" οnkeydοwn="turn(event)">6</td>
        </tr>
        <tr>
            <td id="td7" οnclick="check(this)" οnkeydοwn="turn(event)">7</td>
            <td id="td8" οnclick="check(this)" οnkeydοwn="turn(event)">8</td>
            <td id="td9" οnclick="check(this)" οnkeydοwn="turn(event)">9</td>

        </tr>
    </table>
</body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的贪吃虫的 JavaScript 代码示例,供您参考: ```html <!DOCTYPE html> <html> <head> <title>贪吃虫游戏</title> <style> canvas { border: 1px solid #000; } </style> </head> <body> <canvas id="canvas" width="400" height="400"></canvas> <script> var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); // 初始化贪吃虫和食物位置 var snake = [{x: 10, y: 10}]; var food = {x: Math.floor(Math.random() * 40) * 10, y: Math.floor(Math.random() * 40) * 10}; // 监听键盘事件,控制贪吃虫移动方向 document.addEventListener("keydown", function(event) { if (event.keyCode === 37) { snake.direction = "left"; } else if (event.keyCode === 38) { snake.direction = "up"; } else if (event.keyCode === 39) { snake.direction = "right"; } else if (event.keyCode === 40) { snake.direction = "down"; } }); // 更新贪吃虫位置 function update() { var head = {x: snake[0].x, y: snake[0].y}; if (snake.direction === "left") { head.x -= 10; } else if (snake.direction === "up") { head.y -= 10; } else if (snake.direction === "right") { head.x += 10; } else if (snake.direction === "down") { head.y += 10; } snake.unshift(head); if (snake[0].x === food.x && snake[0].y === food.y) { food = {x: Math.floor(Math.random() * 40) * 10, y: Math.floor(Math.random() * 40) * 10}; } else { snake.pop(); } } // 渲染游戏画面 function render() { ctx.clearRect(0, 0, 400, 400); ctx.fillStyle = "#f00"; ctx.fillRect(food.x, food.y, 10, 10); ctx.fillStyle = "#000"; snake.forEach(function(segment) { ctx.fillRect(segment.x, segment.y, 10, 10); }); } // 游戏循环 function gameLoop() { update(); render(); setTimeout(gameLoop, 100); } gameLoop(); </script> </body> </html> ``` 该代码创建了一个画布(canvas),并在其中绘制了一个贪吃虫和一些食物。玩家可以使用方向键控制贪吃虫的移动方向。贪吃虫会自动向前移动,并在吃到食物时变长。游戏循环使用 setTimeout() 函数来定时更新和渲染游戏画面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值