js实现贪吃蛇小游戏

2023-11-12

<html>
<head>
<script type="text/javascript">
var map = null;
//面板
function Map(){
     this.width = 800;
this.height = 400;
this.color = 'lightblue';


this.showmap = function(){
var ban = document.createElement('div');
ban.style.width = this.width+'px';
ban.style.height = this.height+'px';
ban.style.position ='absolute';
ban.style.left =0;
ban.style.top = 0;
ban.style.backgroundColor = this.color;
document.body.appendChild(ban);
}
}


//食物
function Food(){
   this.width = 20;   
   this.color = "red";
   this.shiwu = null;
   this.showfood = function(){
  if(this.shiwu == null){
         this.shiwu = document.createElement('div');
         this.shiwu.style.width = this.width+'px';
this.shiwu.style.height = this.width+'px';
this.shiwu.style.position ='absolute';
  }
this.shiwux = Math.floor(Math.random()*40);
    this.shiwuy = Math.floor(Math.random()*20);
this.shiwu.style.left = this.shiwux*this.width+"px";
         this.shiwu.style.top  = this.shiwuy*this.width+"px";
this.shiwu.style.backgroundColor = this.color;
document.body.appendChild(this.shiwu);
   }
}
//绘制小蛇
function Snake(){
this.direct = "right";
   this.range = 20;
   this.color = "green";
   this.duans = [[0,1,this.color,null],[1,1,this.color,null],[2,1,this.color,null],[3,1,'red',null]];
   //显示小蛇
    this.showsnake = function(){ 
for(var i in this.duans){
if(this.duans[i][3]==undefined){
       this.duans[i][3] = document.createElement('div');
       this.duans[i][3].style.width = this.range+'px';
  this.duans[i][3].style.height = this.range+'px';
  this.duans[i][3].style.backgroundColor = this.duans[i][2];  
}
this.duans[i][3].style.position = 'absolute';
      this.duans[i][3].style.left =this.range*this.duans[i][0]+'px';
  this.duans[i][3].style.top = this.range*this.duans[i][1]+'px';
  document.body.appendChild(this.duans[i][3]);
  }
}
//移动小蛇
this.movesnake = function(){
     for(i=0;i<this.duans.length-1;i++){
this.duans[i][0] = this.duans[i+1][0];
this.duans[i][1] = this.duans[i+1][1];
}
if(this.direct=='right')
      this.duans[this.duans.length-1][0] +=1;
if(this.direct=='left')
      this.duans[this.duans.length-1][0] -=1;
if(this.direct=='up')
      this.duans[this.duans.length-1][1] -=1;
if(this.direct=='down')
      this.duans[this.duans.length-1][1] +=1;
     
//判断蛇是否吃到食物
if( this.duans[this.duans.length-1][0]==food.shiwux&&
this.duans[this.duans.length-1][1]==food.shiwuy){
var newduan = [this.duans[0][0], this.duans[0][1],this.color,null];
this.duans.unshift(newduan);
        food.showfood();
}
     //判断是否出界 0,0 40,0 0,20 40,20
      if( this.duans[this.duans.length-1][0]<0
||this.duans[this.duans.length-1][0]>39||
this.duans[this.duans.length-1][1]<0||
this.duans[this.duans.length-1][1]>19){
                alert('game over');
clearInterval(mytime);
return false;
}
//判断是否吃到自己
for(var i=0;i<this.duans.length-1;i++){
            if( this.duans[i][0] == this.duans[this.duans.length-1][0]&&
this.duans[i][1] == this.duans[this.duans.length-1][1]){
            alert('game over by yourself');
clearInterval(mytime);
return false;
}
}
this.showsnake();
}
   
}
window.onload = function(){
        map = new Map();
map.showmap();


food = new Food();
food.showfood();


snake = new Snake();
snake.showsnake();


mytime = setInterval("snake.movesnake()",200);


    document.body.onkeydown = function(evt){
        if(evt.keyCode == 38){
            snake.direct = "up";
        }
        if(evt.keyCode == 40){
            snake.direct = "down";
        }
        if(evt.keyCode == 37){
            snake.direct = "left";
        }
        if(evt.keyCode == 39){
            snake.direct = "right";
        }
}


}
</script>
</head>
<body>
</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js实现贪吃蛇小游戏 的相关文章

随机推荐

  • SMT贴片制造:发挥的作用和价值]

    SMT贴片制造作为一项重要的电子制造技术 发挥着举足轻重的作用 并提供了巨大的价值 首先 SMT贴片制造为电子产品的制造商提供了高效 准确和可靠的生产方式 相比于传统的手工焊接 SMT贴片制造具有更高的自动化和智能化程度 大幅提高了生产效率
  • day21网络编程(下)

    day21 网络编程 下 课程目标 学会网络编程开发的必备知识点 今日概要 OSI7 层模型 TCP和UDP 粘包 阻塞和非阻塞 IO多路复用 1 OSI 7层模型 OSI的7层模型对于大家来说可能不太好理解 所以我们通过一个案例来讲解 假
  • 安装【sonar】【sonarQube】免费社区版9.9

    文章目录 sonarQube 镜像容器 Linux 安装镜像 出现 Permission denied的异常 安装sonarQube 中文包 重启服务 代码上传到sonarQube扫描 java语言配置 配置 JS TS Php Go Py
  • gitee项目克隆到本地并运行

    首先电脑上要先安装node js和git 配置一下 在gitee上找到需要克隆到本地的项目 点击克隆 下载 在点击HTTPS下面的复制 github上也是类似的方式 把项目地址复制下来 在本机电脑 新建一个文件夹 命名任意 打开新建的文件夹
  • 神经元模型介绍

    一 深度学习的背景 目前 深度学习 Deep Learning 简称DL 在算法领域可谓是大红大紫 深度学习是机器学习领域中的一个新的研究方向 模仿生人类神经网络 学习样本数据的内在规律的一种方法 神经网络属于监督学习的过程 可以处理 回归
  • SQL 语句学习总结:

    1 四范式 范式好处 数据库范式是数据表设计的规范 在范式规范下 数据库里每个表存储的重复数据降到最少 这有助于数据的一致性维护 同时在数据库范式下 表和表之间不再有很强的数据耦合 可以独立的增长 ie 比如汽车引擎的增长和汽车的增长是完全
  • 接口响应时间长,前端返回请求超时解决

    在前端代码设置axios响应时间 1 全局设置 axios defaults timeout 时间 单位为毫秒 或 2 封装的http请求 const service axios create 公共接口 这里注意后面会讲 baseURL p
  • 解决Flutter输入框限制最大输入长度时,从中间输入会自动截取掉后面的内容

    一 问题原由 当限制输入框最大输入长度时 将光标移动到中间输入 当输入的内容长度加上已经输入内容的长度大于限制的输入长度时 Flutter会将光标后面的内容进行截取掉 而当我在原生Android上验证时却是自动截取输入的内容原有的内容不动
  • 输出数组中最大、小值和下标

    详细看代码 package exp 4 public class Array01 public static void main String args int arrs 1 2 2 12 7 5 声明数组并赋值 int max arrs
  • Python实现目录文件扫描功能

    日常程序编写中常常遇到需要获取目录下文件的功能 对该功能做个简单整理 供大家参考 实现遍历目录文件最常用的方法是os listdir 还有一种os walk方法 一 os listdir方法 源码中对该方法的描述 Return a list
  • 史上最详细黑盒测试用例方法总结(等价类、边界值、因果图等)

    黑盒测试用例设计方法 一 等价类 等价类划分法原理 1 把程序的输入域划分成若干部分 然后从每个部分中选取少数代表性数据作为测试用例 2 每一类的代表性数据在测试中的作用等价于这一类中的其他值 如果某一类中的一个例子发现了错误 这一等价类中
  • Flutter FutureBuilder

    FutureBuilder 是 Flutter 中的一个小部件 用于根据 Future 的结果构建用户界面 它接受一个 Future 对象和一个构建函数作为参数 FutureBuilder 将监听 Future 对象的变化 并相应地更新用户
  • useCallback 作用,useMemo ,memo作用 浅显理解

    项目中看到别人代码基本上每个函数都写了useCallback 于是去查了查到底有什么作用 快看睡着了还是没太明白 直接同事请教了一下 大概浅显的理解一点 useCallback 简单来说就是返回一个函数 只有在依赖项发生变化的时候才会更新
  • Vue 点击导航栏滑动到指定位置

    效果图 assignBlock gif 方法1
  • 前后端分离接口

    前后端分离接口的意义 目前现有前后端开发模式 后端为主的MVC时代 如下图所示 代码可维护性得到明显好转 MVC 是个非常好的协作模式 从架构层面让开发者懂得什么代码应该写在什么地方 为了让 View 层更简单干脆 还可以选择 Veloci
  • 现代密码学期末总结

    文章目录 写在前面 1 引言 知识点 习题 2 流密码 知识点 习题 3 分组密码 知识点 习题 4 公钥密码 知识点 习题 5 数字签名 知识点 习题 6 哈希函数 知识点 7 认证技术 知识点 8 密钥分配与密钥管理 知识点 习题 9
  • 大数据:对大数据的理解

    学了这么久大数据 学了好多主流大数据框架 从来没有主观意义上去深度地思考过大数据 现在对于大数据我讲讲自己的想法 1 大数据的产生 为什么会有大数据 随着互联网的发展 现在大部分日常生活都通过网络变得十分便捷 吃穿住行等等的日常生活都离不开
  • 【三十九、MySql】进阶篇--存储过程--循环(while、repeat、loop)

    1 while循环 语法 先判定循环是有条件的循环控制语句 满足条件后 再执行循环体中的sql语句 while 条件 do sql语句 end while 练习 传入一个参数n 计算1 2 3 n的值 create procedure p5
  • 卸载centos自带jdk&安装指定版本jdk

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 删除jdk 1 查看java安装情况 2 查看 3 卸载 4 rpm总结 5 安装 1 查看java安装情况 java version 2 查看 rpm qa grep jd
  • js实现贪吃蛇小游戏