欢迎加入 551293360 QQ交流群

let snake = Range("Y25:Y30");// 蛇身显示
let arr = []; // 蛇身数据
let toggle = false; // 总开关
let totalScore = 0; // 总得分
let scoreCount = 0; // 目标
let area = Range("B2:AY51"); // 活动区域
let scoreArea = Range("BA1"); // 记分区域
let snakeColor = '00FF00'; // 蛇颜色
let scoreColor = '0000FF'; // 得分块颜色
let bounds = {left : 2,    top : 2, right : 51, down : 51}
let initlock = false; // 开始标记function randTarget(){var r = random(10);if(scoreCount == 0 && r > 5){buildTarget();    }
}// 生成个得分格子
function buildTarget(len = 3){len = len * 2; var arr = Array(len).fill(1).map(v=>random(bounds.down, bounds.top));for(let i=0; i<len; i+=2){var item = Cells.Item(arr[i], arr[i+1]);setRange(item, scoreColor);item.Value2 = random(10);scoreCount++;}
}function random(max, min = 1){return Math.floor(Math.random()*(max-min))+min;
}
function setRange(cell, hexColor){(obj=>{obj.Color = parseInt(hexColor,16);})(cell.Interior);
}
function clearRange(cell){(obj=>{obj.Pattern = xlPatternNone;})(cell.Interior);
}function startGame(){toggle = true; // 游戏总开关// 清理战场area.Interior.Pattern = xlPatternNone; // 清理战场背景色area.Formula = ""; // 清理战场单元格内容totalScore = scoreArea.Value2 = 0; // 归零记分牌scoreCount = 0; // 得分格数量归零// 创建得分格子buildTarget(); // 贪吃蛇归位arr = Array.from(snake); //setRange(snake, snakeColor);Range("Y25").Select();
}function gameOver(){toggle = false; // 游戏总开关initlock = false; // 开始标记UserForm1.StartUpPostion = 1;UserForm1.Show();UserForm1.Label1.Caption = `恭喜!得分 ${scoreArea.Value2}  \n继续挑战吧!`
}// 判断是否自食
function isFailure(Target){var isF = arr.some(t=> t.Row === Target.Row && t.Column === Target.Column && initlock);initlock = true;return isF;
}/*** 开关按钮点击事件*/
function ToggleButton1_Click()
{gameOver()
}
/*** 行动逻辑*/
function Workbook_SheetSelectionChange(Sh, Target)
{if(toggle){if(isFailure(Target)){          gameOver();Console.log("游戏结束");return;}var tempCell = Target;var x = Target.Column;var y = Target.Row;if(x > bounds.down){tempCell = Cells.Item(y, bounds.top);tempCell.Select();}if(x < bounds.left){tempCell = Cells.Item(y, bounds.right);tempCell.Select();}if(y > bounds.right){tempCell = Cells.Item(bounds.left, x);tempCell.Select();}if(y < bounds.top){tempCell = Cells.Item(bounds.down, x);tempCell.Select();}setRange(tempCell, snakeColor);var targetScore = tempCell.Value2; // 取单元格值if(targetScore){ // 有值表示得分格子scoreArea.Value2 += targetScore; // 总分增加tempCell.Value2 = undefined; // 清空得分格原来的内容scoreCount--; // 得分格子数量减一}else{clearRange(arr.pop()); // 不是得分格子,蛇尾清理掉一格}arr.unshift(tempCell); // 新舌头压入蛇身数组}randTarget(); // 刷新得分格子
}

function UserForm1_CommandButton1_Click()
{startGame();// 关闭本窗体UserForm1.Hide();
}function Workbook_Open()
{gameOver();UserForm1.StartUpPostion = 3;UserForm1.Show();
}

补充:报:函数外不能使用赋值表达式…的设置一下就好了。

源文件

WPS-JSA-贪吃蛇

WPS表格 JSA 学习笔记 - 实现贪吃蛇相关推荐

  1. WPS表格 JSA 学习笔记 - 实现【设置编号】并添加到自定义选项卡

    WPS表格 JSA 学习笔记 - 设置编号 0. 纯手工实现: 0.1. 编号使用建议 1. 标题设置编号 2. 遍历所有标题设置编号 添加到自定义选项卡 参考资料 关于编号引用 经常遇到编号设置混乱 ...

  2. WPS表格 JSA 学习笔记 - 批量设置图片

    创建图片样式 function 创建图片样式(styleName = "图片") {try{ActiveDocument.Styles.Item(styleName).Delete ...

  3. WPS文字 JSA 学习笔记 - 批量设置表格

    WPS文字 JSA 学习笔记 - 批量设置表格 创建表格样式 批量设置表格 返回当前表格索引 参考资料 创建表格样式 function 创建表格样式(styleName = "表格" ...

  4. C语言学习笔记(XII)---贪吃蛇

    放假之后一直没有什么学习的动力,得了一学习就困得不行的病.觉得不能再这样下去了,刚好有个学C++的朋友要自己写个贪吃蛇,于是拿到了C++不完整框架,改写并重构成C的代码了. 关于贪吃蛇的移动 一开始我 ...

  5. WPS文字 JSA 学习笔记 - 设置自定义编号

    function 设置自定义编号(){// 遍历1到9级var nf = "%1.%2.%3.%4.%5.%6.%7.%8.%9.";var arr = [...ListGalle ...

  6. WPS文字 JSA 学习笔记 - 转PDF后要带自定义目录

    需求:自定PDF目录(目录与文章标题不一至,无法直接用标题生成). 方案:创建标签,再转PDF.(用标签生成目录) 用一个2维数组,定义标签名字与页码. 标签文字中有一些限制,需要处理一下. var ...

  7. 计算机一级wps表格函数,WPS表格函数学习之公式大全(字母顺序).pdf

    WPS表格函数学习之公式大全(字母顺序) 1. ABS:返回给定数字的绝对值. (即不带符号的数值) 格式: ABS (数值) 数值:需要计算其绝对值的实数. 2. ACCRINT:返回到期一次性付息 ...

  8. python tkinter 表格_python学习笔记(Tkinter编程利用Treeview实现表格自动更新)

    博主今天总结这段时间抽空写的一个GUI编程项目 功能是查看本地打印机队列,可选择指定队列重新打印 直接上图 UI设计包括3个区域左上方,右上方和下方列表区域 使用网格grid方法来分配位置 下面是界面 ...

  9. WPS表格 JSA 实例收集

    形状 Shapes 删除所有Shape对象 function 删除所有Shape对象(){[...ActiveDocument.Shapes].slice(0,9999).forEach(shap = ...

  10. Arduino提高篇26—贪吃蛇游戏

    之前文章Processing笔记05-贪吃蛇小游戏分享过如何使用Processing来实现贪吃蛇游戏,很多小伙伴问可不可以来个Arduino版本的,那么本篇就通过Arduino,配合摇杆按键和OLED ...

最新文章

  1. 使用Fiddler抓取手机HTTP流量包
  2. java求二次函数的a,b,c值
  3. CLOSE_WAIT 和TCP_KEEPALIVE
  4. python爬虫应用实战-如何爬取好看的小姐姐照片?
  5. python网络编程爬虫_Python爬虫--网络编程
  6. WPF GridControl控件的用法举例
  7. ssh登陆报错“WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!”的解决方法
  8. 【剑指offer - C++/Java】10、矩形覆盖
  9. mysql update column_MySQL8.0 新特性:Partial Update of LOB Column
  10. jquery 全选获取值
  11. python实现两个接口的依赖关系
  12. 微信公众号授权H5页面
  13. OneDrive文件数限制:150000
  14. Conky-colors详细教程
  15. 旷视科技1面2面----最差的一次面试体验
  16. WordCloud库的安装教程
  17. (一)注册微信个人订阅号
  18. 系统梳理总结JAVA全栈知识点,七面阿里成功斩获P8Offer
  19. 【必选项提示小方法】vue处理多个条件选择时,判断必选项没有选择的弹出对应的提示【通俗易懂,详细注释】
  20. 小白上班摸鱼学python

热门文章

  1. BOS v2.0后台管理系统界面通用解决方案
  2. 微信小程序开发之微信小程序交互
  3. tomcat日志配置-----自带log(一)
  4. matlab好看的字体,最佳50个新鲜+漂亮的字体(2011)
  5. bat文件转换为exe文件
  6. FPGA深度学习加速(1) - Xilinx ug892-Vivado design flows overview (Vivado设计流程简述) - 阅读笔记
  7. 2020-11-02-Ubuntu 20.04安装Anaconda3-卸载Anaconda3-笔记
  8. web测试点和app测试点
  9. java盖章后原来印章模糊了_公章部分字迹盖不清楚怎么处理
  10. csdn ruby语言入门_Ruby编程语言入门指南