贪吃蛇(二)

      在学会了控制蛇的身体上下左右移动后,蛇在吃掉食物时,有了营养的供给便会使身体长大;可随着身体长度的增加蛇很容易因碰撞到边缘或自己的身体死亡,如何使游戏更加完善呢?

(一)增加身体长度

(1)点击“脚本”模块,我们需要新建一个积木。点击“数据”,建立一个名为“长度”的变量;

(2)单击角色“食物”,在原来脚本中如果碰到蛇的红色信子,食物消失,移动到范围内的任意地方。现在在它们之间增添积木“将长度增加为..."(长度范围应符合角色大小);同时单击角色“蛇”,在蛇移动的积木块中添加积木“将长度设定为..."能够使初始的长度更加合理。这样,当蛇吃到食物时,身体就会变长啦!

(二)设置碰撞

    (1)单击"蛇"的角色,点击"脚本"模块。在控制中选择“如果...那么....”的积木,选取侦测条件,如果碰到边缘那么停止全部,也就是停止游戏;

    (2)同时再拖一块“当作为克隆体启动时”积木到脚本区,需要等待1~2秒,否则蛇刚开始移动时就会停止;如果碰到黑色那么停止全部,因为这个克隆体和蛇头刚好在同样的位置,它就检查是否碰到黑色的东西,也就是蛇的眼睛。

(三)完善游戏

(1)在游戏结束时,我们会发现蛇最终停在哪里,下一次就会从哪里开始。因此我们为蛇设置一个初始的位置,这样蛇每次就会从(-61,50)开始

(2)设置分数。点击食物“脚本”模块,我们需要新建一个积木。点击“数据”,建立一个名为“分数”的变量;将初始分数设置为0,当碰到红色时,也就是吃到食物时,将分数增加1.

(3)当游戏结束时,屏幕出现“Game Over!”以示提醒,在“蛇”的脚本中,添加如下积木。

   贪吃蛇的游戏就好啦!

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
游戏名称:贪吃蛇 游戏级别:10级 注意:因为文件太大,无法上传,所以将音乐和图片文件另外发布,请下载(免费),下载完解压缩后,将音乐和图片放在Debug根目录下即可。 游戏说明: 关于控制蛇运动方向: 用键盘上的↑、↓、←、→控制蛇的运动方向。 当蛇向一个方向运动时,它的反向键被锁定。 不能通过连续摁某个方向键而加快蛇的运动。 若在游戏中,蛇头碰了墙或是自己的身体,则游戏结束。 关于蛇吃食物: 蛇每吃一个食物增长一节,并且得分加10分,总共为100节。 蛇每增长10节游戏上升一个级别。 关于游戏结束: 如果在游戏过程中,蛇头碰墙或是碰到了自己的身体,则游戏结束。 如果在游戏过程中,用户选择退出游戏,则会提醒用户游戏正在进行中,是否要退出。 选择退出,则游戏结束。 选择取消,则游戏继续。 如果玩家成功过关,则游戏结束。 在上述任何一种情况下,系统都会询问用户:是否保存游戏成绩? 选择确定,如果姓名为空,则默认以“匿名玩家”记录。 选择取消,则不记录。 关于蛇运动的速度: 玩家可以通过:选项->速度 打开窗口。 系统默认的方式是变速游戏。 玩家可以自行选择变速游戏或是均速游戏。 变速游戏:速度分1-10个级别。 并且根据关卡的高低决定速度的快慢。 均速游戏:用户可以自行选择所要速度的快慢。 1表示最慢,10表示最快。 关于音乐的播放: 当打开游戏界面时,音乐会自动播放,默认的音乐是:Remeber。 若玩家要修改或关闭音乐,可以通过:选项->音乐 或是 F5快捷键 打开窗口。 若玩家不想播放音乐,请点击关闭。 若玩家要播放选中的音乐,请点击确定。 关于界面的选择: 玩家可以根据爱好选择想要的图片,总共有8张背景图片供选择。 玩家选择图片后,可以在对话框的右边预览到图片。 点击确定则显示选中的图片,点击取消则显示原先图片。 当游戏开始后,此功能键不能用。 关于查看记录: 玩家可以通过:关于->查看记录 或 F6快捷键 打开窗口。 窗口中显示了以往玩家的前三名成绩。 关于游戏说明: 玩家可以通过:关于->游戏说明 或 F7快捷键 打开窗口。 窗口中显示了本游戏的说明。 关于游戏的快捷键: 开始:F2 暂停:F3 退出:F4 音乐:F5 查看记录:F6 游戏说明:F7
好的,我可以帮你讲一下如何用JS维数组做贪吃蛇游戏。 首先,我们需要定义一个维数组来表示贪吃蛇所在的游戏场地。数组的每个元素可以表示一个格子,用0表示空格,用1表示蛇身,用2表示食物。 ```javascript var ROW = 20; // 场地行数 var COL = 20; // 场地列数 var ground = []; // 场地数组 // 初始化场地数组 for (var i = 0; i < ROW; i++) { ground[i] = []; for (var j = 0; j < COL; j++) { ground[i][j] = 0; } } ``` 接着,我们需要定义一个表示贪吃蛇的数组,用一个维数组来表示蛇的身体。数组的第一个元素表示蛇头,后面的元素表示蛇身。我们可以定义一个变量来表示蛇的初始长度,然后在场地数组中随机选择一些格子,把它们设为蛇身,直到蛇的长度达到初始长度。 ```javascript var snake = []; // 蛇的身体数组 var initLength = 3; // 蛇的初始长度 // 初始化蛇身体数组 for (var i = 0; i < initLength; i++) { snake[i] = {row: 0, col: i}; // 蛇头在第0行,第i列 ground[0][i] = 1; // 把场地数组中的对应格子设为蛇身 } ``` 接下来,我们需要实现贪吃蛇的移动逻辑。每当蛇移动一格,我们需要把蛇头向前移动一格,并把新的位置设为蛇头。然后我们需要判断蛇头是否撞到了边界或者撞到了自己的身体。如果蛇头撞到了食物,我们需要在场地数组中随机选择一个空格子,把它设为食物。然后我们把蛇的长度加1,并把新的位置设为蛇头。如果蛇头没有撞到边界或者撞到自己的身体,我们需要把蛇尾的位置设为0,表示蛇离开了这个位置。最后,我们需要把新的蛇身体位置设为1,表示蛇移动到了这个位置。 ```javascript var direction = "right"; // 蛇的移动方向 function move() { // 根据方向计算新的蛇头位置 var newHead = { row: snake[0].row, col: snake[0].col }; switch (direction) { case "up": newHead.row--; break; case "down": newHead.row++; break; case "left": newHead.col--; break; case "right": newHead.col++; break; } // 判断蛇头是否撞到边界或者撞到自己的身体 if (newHead.row < 0 || newHead.row >= ROW || newHead.col < 0 || newHead.col >= COL || ground[newHead.row][newHead.col] === 1) { // 游戏结束 return false; } // 判断蛇头是否撞到食物 if (ground[newHead.row][newHead.col] === 2) { // 在场地数组中随机选择一个空格子,设为食物 var food = randomFood(); ground[food.row][food.col] = 2; // 把新的位置设为蛇头 snake.unshift(newHead); // 蛇的长度加1 length++; } else { // 把蛇尾的位置设为0 var tail = snake.pop(); ground[tail.row][tail.col] = 0; // 把新的位置设为蛇头 snake.unshift(newHead); } // 把新的蛇身体位置设为1 ground[newHead.row][newHead.col] = 1; return true; } ``` 最后,我们需要实现键盘事件,来控制贪吃蛇的移动方向。当用户按下方向键时,我们改变方向变量的值。 ```javascript document.addEventListener("keydown", function(event) { switch (event.keyCode) { case 37: // left arrow if (direction !== "right") { direction = "left"; } break; case 38: // up arrow if (direction !== "down") { direction = "up"; } break; case 39: // right arrow if (direction !== "left") { direction = "right"; } break; case 40: // down arrow if (direction !== "up") { direction = "down"; } break; } }); ``` 好了,以上就是用JS维数组做贪吃蛇游戏的基本实现。当然,还有很多细节需要处理,比如如何随机生成食物,如何计分等等。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值