首页 > 其他分享 >简易贪吃蛇js

简易贪吃蛇js

时间:2024-09-13 15:34:58浏览次数:1  
标签:auto js 简易 贪吃蛇 she && var newarrs zou

   function sta() {
       var she = [{ x: 0, y: 0,s:0 }]; //身体
       var shenti = '';//当前前进方向
       var zou = '';//下次前进方向
       var dan = { x:0, y: 0 }  //蛋坐标

       function adddan() {
           //生成一个蛋
           var sy = [];
           for (var i = 0; i < 10; i++) {
               for (var j = 0; j < 10; j++) {
                   if (she.filter(q => q.x == i && q.y == j).length == 0) {
                       sy.push({x:i,y:j})
                   }
               }
           }
           if (sy.length == 0) {
               console.log('mei');
               return;
           }
           dan = sy[Math.floor(Math.random() * sy.length)]
           console.log('蛋', JSON.stringify(dan))
       }
       adddan();
       function miao() {
           //处理蛇的行动
           if ((shenti == 'w' && zou == 's') || (shenti == 's' && zou == 'w') || (shenti == 'a' && zou == 'd') || (shenti == 'd' && zou == 'a')) {
               zou = shenti;
           } else {
               shenti = zou;
           }
           if (zou == '') {
               return;
           }
           var x = 0, y = 0;
           if (zou == 'w') {
               y = -1;
           }
           if (zou == 's') {
               y = 1;
           }
           if (zou == 'a') {
               x = -1;
           }
           if (zou == 'd') {
               x = 1;
           }
           var newarrs = [];
           var jd = -1;
           var add = {};
           for (var i = 0; i < she.length; i++) {
               if (i == 0) {
                   var ex = she[i]['x'] + x;
                   var ey = she[i]['y'] + y;
                   if (ex < 0 || ey < 0 || ex >= 10 || ey >= 10) {
                       console.log('end')
                       return;
                   }
                   if (she.filter(q => q.x == ex && q.y == ey).length > 0) {
                       console.log(JSON.stringify(she))
                       console.log('ends')
                       console.log(ex, ey)
                       return;
                   } else {
                       newarrs.push({ x: ex, y: ey, s: 0 })
                   }
               } else {
                   newarrs.push(she[i - 1])
               }
               if (she[i]['s'] == 1) {
                   jd = i;
               }
               add = she[i];
               add.s = 0;
           }
           var ad = false;
           if (newarrs.length > 0) {
               if (newarrs[0].x == dan.x && newarrs[0].y == dan.y) {
                   console.log('chi');
                   newarrs[0].s = 1;
                   ad = true;
               }
               if (jd>=0  ) {
                   if (jd + 1 == newarrs.length) {
                       newarrs.push(add)
                   } else {
                       newarrs[jd + 1].s = 1;
                   }
               }
           }
           //setTimeout(() => {
           //    miao();
           //}, 1000)
           she = newarrs;
           if (ad) {
               adddan();
           }
           st();
           console.log(JSON.stringify(she))
       }
       function anniu(type) {
           //每次按下按键
           zou = type;
           miao()
           return;
           if (zou == '') {
               zou = type;
               miao()
           } else {
               zou = type;
           }
       }
       //监听按键
       document.addEventListener('keydown', function (event) {
           console.log(event.key)
           if (event.key === 'w' || event.key === 'd' || event.key === 'a' || event.key === 's') {
               anniu(event.key)
           }
       });
       //刷新图画
       function st() {
           var h = "";
           for (var i = 0; i < 10; i++) {
               for (var j = 0; j < 10; j++) {
                   var sty = "";
                   if (she[0].x == j && she[0].y == i) {
                       sty = "red";
                   } else if (she.filter(q => q.x == j && q.y == i).length) {
                       if (she.filter(q => q.x == j && q.y == i && q.s == 1)) {
                           sty = "blue";
                       } else {
                           sty = "#000";
                       }
                   }
                   if (dan.x == j && dan.y == i) {
                       sty = "yellow"
                   }
                   h += '<div style="background:' + sty +'" ></div>'
               }
           }
           $("#ss").empty();
           $("#ss").append(h);
       }
       st();
   }

页面代码
<div id="ss"></div>

css代码:

    #ss {
		width:220px;
		display: grid;
		grid-template-columns: auto auto auto auto auto auto auto auto auto auto;
		grid-gap: 1px;
	} 
#ss   div {
    border: 1px solid red;
    width: 20px;
    height: 20px;
    background-color: rgba(255, 255, 255, 0.8);
    border: 1px solid black;
    text-align: center;
    font-size: 30px;
}

标签:auto,js,简易,贪吃蛇,she,&&,var,newarrs,zou
From: https://www.cnblogs.com/mufuhu/p/18412305

相关文章

  • 面试-JS Web API-Linux命令
    关键Linux命令虽然前端开发者不需要掌握Linux的所有命令,但以下基本的命令对日常工作是非常有用的:文件和目录管理ls:列出当前目录下的文件和文件夹。lsls-l#显示详细信息ls-a#显示隐藏文件cd:切换目录。cd/path/to/directorycd..#返回上一级目录pwd:显......
  • nvm下载node版本Could not retrieve https://nodejs.org/dist/latest/SHASUMS256.txt.
    1.使用nvm安装node版本的时候报错Couldnotretrievehttps://nodejs.org/dist/latest/SHASUMS256.txt.Get"https://nodejs.org/dist/latest/SHASUMS256.txt":dialtcp104.20.22.46:443:i/otimeout原因:可能是远程连接被关闭的问题,这是由于国内网络限制导致的,解决办法:找到sett......
  • 面试- JS Web API - ES6模块化
    ES6模块化的基础概念ES6模块化的核心在于两个关键字:export和import。export:用于将模块中的变量、函数、类等导出,供其他模块使用。import:用于从其他模块中导入需要的功能。2.模块的导出(export)ES6提供了两种导出方式:命名导出(NamedExports)和默认导出(DefaultExport)。......
  • 面试-JS Web API-开发环境
    git调试工具抓包webpackbabellinux常用命令(测试机)git最常用的代码版本管理工具大型项目需要多人协作开发,必须熟用嗷~git服务端常见的有github、coding.net等gitinit这个命令用来初始化一个Git仓库。一般在新项目开始的时候执行。gitclone从远程仓库复......
  • 基于Node.js+vue机房管理系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,计算机机房已成为高校、培训机构及企业不可或缺的重要设施。然而,传统机房管理方式往往依赖于人工记录与监控,存在效率低下、易出错、......
  • 基于Node.js+vue直面BOSS招聘管理系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景在当今竞争激烈的就业市场中,招聘与求职双方均面临着信息不对称、沟通效率低下的挑战。传统招聘方式往往依赖于线下招聘会、招聘网站的海量信息筛选,以及繁琐......
  • 基于Node.js+vue基于SpringBoot的儿童福利院管理系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着社会对儿童福利事业关注度的不断提升,儿童福利院作为保障孤儿、弃婴及困境儿童基本生活权益的重要机构,其管理效率与服务质量直接关系到儿童的健康成长。......
  • 基于Node.js+vue基于SpringBoot动漫电影网站(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展,网络娱乐已成为人们日常生活中不可或缺的一部分,尤其是动漫电影作为一种集艺术性、娱乐性和文化性于一体的媒介形式,受到了广泛的欢......
  • 从MySQL JSON字段中提取去重城市列表的SQL查询
    重点:数据库有一个城市字段,是一个json数组(["北京市","上海市","广州市"]),每条数据的城市可能重合,通过下面SQL可返回去重后的城市列表,mysql版本要5.7以上才支持。SQL如下:SELECTDISTINCTTRIM(JSON_UNQUOTE(JSON_EXTRACT(城市json字段名,CONCAT('$[',n.n,']'))))AScityF......
  • YAML 与 JSON、XML 比较及 YAML 使用最佳实践
    YAML(YAMLAin'tMarkupLanguage的递归缩写)是一种人类可读的数据序列化格式,通常用于配置文件、数据交换和设置管理。它简洁且易于读写,尤其适合在编程语言之间传递配置数据。以下是一些YAML的基本概念和语法示例:基本语法键值对:name:JohnDoeage:30嵌套:person:name:JohnDoe......