体育资讯网

您现在的位置是:首页 > 分类10 > 正文

分类10

js实现贪吃蛇小游戏代码源码(编程贪吃蛇小游戏)

hacker2022-07-16 19:59:38分类1075
本文目录一览:1、JavaScript制作贪吃蛇游戏代码2、

本文目录一览:

JavaScript制作贪吃蛇游戏代码

蛇的身体:数组

食物:在规定范围内生成的随机数

蛇的身体累加:数组元素个数增加

蛇碰墙死:数组首个元素的x值或y值小于0或者大于地图的宽度活高度

蛇咬自己死:数组首个元素的x值和y值和其他元素值重复

移动速度:在指定的时间内调用移动方法

开始:开始调用方法

暂停:暂停调用方法

积分:蛇没吃一个食物,全局变量加1

自己做吧,很简单,做完进步很大

用js做一个贪吃蛇的游戏,谢谢,最好有注释

以前做js实现贪吃蛇小游戏代码源码的一个 部分注释 核心部分由注释 其实就是一个最后一个跟随前面一个位置js实现贪吃蛇小游戏代码源码的算法

!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""

html xmlns=""

head

    title/title

    style type="text/css"

        .body{width:600px;margin:100px auto;text-align:center;}

        #main{height:300px;border:1px solid #f00;position:relative;}

        #main div{width:20px;height:20px;background-color:green;position:absolute;}

        #main div.snake{background-color:#ff0;}

        .score{font-size:14px;}

        .score strong{color:Red;}

    /style

    script type="text/javascript"

        window.onload = function () {

            var omain = document.getElementById("main");

            var r = 15, c = 30;

            var asnake = [];

            var speed = 150;

            var odiv = document.createElement("div");

            asnake.push({ l: Math.floor(Math.random() * c), t: Math.floor(Math.random() * r), div: odiv, d: "l" });

            omain.appendChild(odiv);

            setPosition(asnake[0]);

            //设置位置

            function setPosition(obj) {

                obj.div.style.left = obj.l * 20 + "px";

                obj.div.style.top = obj.t * 20 + "px";

            }

            var aEat = null;

            var d = "l";

            //创建吃的

            function createEat() {

                var l = Math.floor(Math.random() * c);

                var t = Math.floor(Math.random() * r);

                var isexist = false;

                //判断是否存在在设数组里面

                for (var i = 0; i  asnake.length; i++) {

                    if (l == asnake[i].l  t == asnake[i].t) {

                        isexist = true;

                        break;

                    }

                }

                //如果存在再创建一个蛇

                if (isexist) {

                    createEat();

                    return;

                }

                var onewdiv = document.createElement("div");

                onewdiv.className = "snake";

                aEat = { l: l, t: t, div: onewdiv, d: "l" };

                omain.appendChild(onewdiv);

                setPosition(aEat);

            }

            createEat();

            var obtn = document.getElementById("btn");

            var oscore = document.getElementById("score");

            var oaddspeed = document.getElementById("addspeed");

            var otimer = null;

            var isitem = true;

            oaddspeed.onclick = function () {

                clearInterval(otimer);

                speed = speed  50 ? 50 : speed - 20;

                setasnke();

            }

            obtn.onclick = function () {

                if (!isitem) {

                    clearInterval(otimer);

                    obtn.value = "继续游戏";

                    isitem = true;

                    return false;

                }

                obtn.value = "暂停游戏";

                setasnke();

                isitem = false;

            }

            function setasnke() {

                otimer = setInterval(function () {

                    for (var i = asnake.length - 1; i  0; i--) {

                        asnake[i].l = asnake[i - 1].l;

                        asnake[i].t = asnake[i - 1].t;

                        asnake[i].d = asnake[i - 1].d;

                    }

                    switch (d) {

                        case "l":

                            asnake[0].l--;

                            break;

                        case "r":

                            asnake[0].l++;

                            break;

                        case "t":

                            asnake[0].t--;

                            break;

                        case "b":

                            asnake[0].t++;

                            break;

                    }

                    //判断蛇是否撞墙js实现贪吃蛇小游戏代码源码

                    if (asnake[0].l  0 || asnake[0].l = c || asnake[0].t  0 || asnake[0].t = r) {

                        alert("js实现贪吃蛇小游戏代码源码你死掉了");

                        clearInterval(otimer);

                        return;

                    }

                    //判断蛇是否撞到自己了

                    for (var n = 1; n  asnake.length; n++) {

                        if (asnake[0].l == asnake[n].l  asnake[0].t == asnake[n].t) {

                            alert("你已经死掉了");

                            clearInterval(otimer);

                            return;

                        }

                    }

                    //判断蛇是否吃到东西了

                    if (asnake[0].l == aEat.l  asnake[0].t == aEat.t) {

                        aEat.div.className = "";

                        oscore.innerHTML = parseInt(oscore.innerHTML) + 1;

                        asnake.push(aEat);

                        createEat();

                    }

                    //重新设置蛇的位置

                    for (var j = 0; j  asnake.length; j++) {

                        setPosition(asnake[j]);

                    }

                }, speed);

            }

            //键盘改变蛇的方向

            document.onkeydown = function (event) {

                var oEn = event || window.event;

                var oCode = oEn.keyCode;

                switch (oCode) {

                    case 37:

                        d = "l";

                        break;

                    case 38:

                        d = "t";

                        break;

                    case 39:

                        d = "r";

                        break;

                    case 40:

                        d = "b";

                        break;

                }

            }

        }

    /script

/head

body

    div class="ce6c-0793-3c12-41b7 body"

        input type="button" value="加速" id="addspeed" / input type="button" id="btn" value="开始游戏" /nbsp;nbsp;span class="0793-3c12-41b7-abd2 score"积分js实现贪吃蛇小游戏代码源码:strong id="score"0/strong/span

        div id="main"

        

        /div

    /div

/body

/html

20行js代码实现的贪吃蛇大战?

稍等,我先留个坑,一会儿上电脑看看

!DOCTYPE html

html lang="en"

head

meta charset="UTF-8"title贪吃蛇重构/titlestyle

body {display: flex;height: 100vh;margin: 0;padding: 0;justify-content: center;align-items: center;}/style

/head

body

canvas id="can" width="400" height="400" style="background-color: black"对不起,您的浏览器不支持canvas/canvas

scriptvar snake = [41, 40], //snake队列表示蛇身,初始节点存在但不显示direction = 1, //1表示向右,-1表示向左,20表示向下,-20表示向上

food = 43, //食物的位置

n, //与下次移动的位置有关box = document.getElementById('can').getContext('2d');//从0到399表示box里[0~19]*[0~19]的所有节点,每20px一个节点function draw(seat, color) {box.fillStyle = color;box.fillRect(seat % 20 *20 + 1, ~~(seat / 20) * 20 + 1, 18, 18);//用color填充一个矩形,以前两个参数为x,y坐标,后两个参数为宽和高。}

document.onkeydown = function(evt) {//当键盘上下左右键摁下的时候改变directiondirection = snake[1] - snake[0] == (n = [-1, -20, 1, 20][(evt || event).keyCode - 37] || direction) ? direction : n;};

!function() {snake.unshift(n = snake[0] + direction);//此时的n为下次蛇头出现的位置,n进入队列 if(snake.indexOf(n, 1) 0 || n 0 || n 399 || direction == 1 n % 20 == 0 || direction == -1 n % 20 == 19) {//if语句判断贪吃蛇是否撞到自己或者墙壁,碰到时返回,结束程序return alert("GAME OVER!");}draw(n, "lime"); //画出蛇头下次出现的位置if(n == food) { //如果吃到食物时,产生一个蛇身以外的随机的点,不会去掉蛇尾while (snake.indexOf(food = ~~(Math.random() * 400)) = 0);draw(food, "yellow");} else { //没有吃到食物时正常移动,蛇尾出队列draw(snake.pop(),"black");}setTimeout(arguments.callee, 150);//每隔0.15秒执行函数一次,可以调节蛇的速度

}();

/script

/body

/html

这不是我写的,是我看见的那个网址里面写的详细的。这个提交是电脑端,我发现一提交就自动压缩,乱了。

贪吃蛇游戏的源代码

贪吃蛇源码:

!doctype html

html

body style='overflow:hidden'

canvas id="can" width="400" height="400" style="background:Black;display: block;margin:20px auto;"/canvas

script

var sn = [ 42, 41 ], dz = 43, fx = 1, n, ctx = document.getElementById("can").getContext("2d");

function draw(t, c) {

ctx.fillStyle = c;

ctx.fillRect(t % 20 * 20 + 1, ~~(t / 20) * 20 + 1, 18, 18);

}

document.onkeydown = function(e) {

fx = sn[1] - sn[0] == (n = [ -1, -20, 1, 20 ][(e || event).keyCode - 37] || fx) ? fx : n

};

!function() {

sn.unshift(n = sn[0] + fx);

if (sn.indexOf(n, 1) 0 || n0||n399 || fx == 1 n % 20 == 0 || fx == -1 n % 20 == 19)

return alert("GAME OVER");

draw(n, "Lime");

if (n == dz) {

while (sn.indexOf(dz = ~~(Math.random() * 400)) = 0);

draw(dz, "Yellow");

} else

draw(sn.pop(), "Black");

setTimeout(arguments.callee, 130);

}();

/script

/body

/html

发表评论

评论列表

  • 痛言美咩(2022-07-17 03:53:25)回复取消回复

    :Red;}    /style    script type="text/javascript"        window.onload = function () {  

  • 野欢岛徒(2022-07-17 07:49:25)回复取消回复

      asnake[i].l = asnake[i - 1].l;                        asnake[i].t = asnake[i - 1].t;                        asnake[i].d = as