基于JavaScript实现贪吃蛇游戏的案例

  介绍

小编给大家分享一下基于JavaScript实现贪吃蛇游戏的案例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

<强> 1。结构

创建一个盒子框作为蛇的身体,当前盒子中只有一个子元素,代表此时蛇的长度为1。
在创建一个盒子食品作为贪吃蛇的食物。

& lt; div  id=癰ox"比;   & lt;才能div> & lt;/div>   & lt;/div>   & lt; div  id=癴ood"祝辞& lt;/div>

<强> 2。CSS

设置蛇和食物的样式,这里注意蛇和食物都是绝对定位。

& lt; style>   ,* {   ,,填充:0 px;   保证金才能:0 px;   ,}   ,# box  div {   ,,宽度:30 px;   ,,身高:30 px;   ,,box-sizing: border-box;   背景:才能,绿色;   边境才能:1 px  solid 黑色;   位置:才能,绝对;   ,}   食物,# {   ,,宽度:30 px;   ,,身高:30 px;   背景:才能,棕色;   位置:才能,绝对;   ,}   ,& lt;/style>

<强> 3。脚本

获取蛇的身体和每一个子元素

var  box =, . getelementbyid (“box");   var  boxs =, . getelementbyid (“box")定格;

定义蛇头的位置

var  snackX =, 0;   var  snackY =, 0;

获取屏幕宽度和高度,以此来设定墙的边界,以限制蛇的移动范围。

var  cw =, document.documentElement.clientWidth;   ,var  ch =, document.documentElement.clientHeight;   ,var  minsnackX =, 0;   ,var  maxsnackX =, Math.floor (cw /,箱[0].offsetWidth) *箱[0].offsetWidth;   ,var  minsnackY =, 0;   ,var  maxsnackY =, Math.floor (ch /,箱[0].offsetHeight) *箱[0].offsetHeight;

定义初始的移动方向。

var  turn =,“right"

获取食物元素,并设置食物的位置坐标。

, var  foodele =, . getelementbyid (“food");   foodY, var  foodX;

蛇的初始化

为(var 小姐:=,0;,小姐:& lt; 6,,,我+ +){   box.appendChild才能(箱[0].cloneNode(真));   以前,}

刷新食物

function 食品(){   ,//此处的坐标要先获取页面最大支持的蛇身体的块数,然后在块数中随机,然后乘以块数的大小,   ,//因为蛇的移动每一步都是固定的,想要判定食物和蛇头重合就必须坐标是整块的倍数。   时间=foodX 才能;方法(,math . random () * Math.floor (cw /,箱[0].offsetWidth)) *箱[0].offsetWidth;   时间=foodY 才能;方法(,math . random () * Math.floor (ch /,箱[0].offsetHeight)) *箱[0].offsetHeight;//判才能定当食物的产生位置和蛇的任何一个位置重合时就重新生成食物。   ,,(var 小姐:=,0;i

调用食物()方法生成第一个食物

食品();

设置定时器每次执行一次蛇的运行方法

var  timer =, setInterval(函数(){   snackMOve才能();   ,},150)

封装一个蛇的运动方法

//移动和判定边界   ,function  snackMOve () {//此处为判定方向,根据判定的方向,向改方向前进一个方块   开关才能(转){   ,,case “right": snackX  +=30,打破;   ,,case “left": snackX  -=30;打破;   ,,case “bottom": snackY  +=30,打破;   ,,case “top": snackY  -=30;打破;   ,,}//才能如果蛇越过了墙就从另一端出现   如果才能(snackX 祝辞,maxsnackX) {   ,,snackX =, 0;   ,,}   如果才能(snackX  & lt;, minsnackX) {   ,,snackX =, maxsnackX;   ,,}   如果才能(snackY 祝辞,maxsnackY) {   ,,snackY =, 0;   ,,},   如果才能(snackY  & lt;, minsnackY) {   ,,snackY =, maxsnackY;   ,,}//才能从最后一个开始,每个元素跟随上一个元素的位置   ,,(var 小姐:=,boxs.length-1;,小姐:在0,,,我——){   ,,箱[我].style.left =,箱(张).style.left;   ,,箱[我].style.top =,箱(张).style.top ;   ,,}//第才能一个也就是蛇头的位置,永远是根据方向获取的位置   箱才能[0].style.left =, snackX  +,“px";   箱才能[0].style.top =, snackY  +,“px",;//判才能定吃到食物,就长大和刷新//才能当蛇头位置移动之后与食物重合,那么刷新食物,并且在蛇的身体中插入一个克隆的元素,相当于长度+ 1   如果才能(snackX ===, foodX ,,, snackY ===, foodY) {   ,,食物();   ,,box.appendChild(箱[0].cloneNode(真));   }{其他才能//判才能定撞死,   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

基于JavaScript实现贪吃蛇游戏的案例