我拥有一个游戏群,我还有一个机器人,棒极了,我有一个游戏机器人~

我拥有一个游戏群,我还有一个机器人,棒极了,我有一个游戏机器人~

开发者广场内容精选NaN-NaN-NaN
解决方案
作者:孝夕夕
推荐理由
外部群仅支持自定义机器人,在收集信息时较为不畅,本篇以2048游戏案例为背景,提供了一种收集外部群消息的思路。
是什么
👇制作一个飞书群机器人,ta 可以陪你玩 2048 小游戏。
本教程以外部群为例,按需修改步骤可支持内部群;支持多人同时游戏,每个人都在玩自己的4*4盘面。
为什么
外部群仅支持自定义机器人,在收集信息时较为不畅,本篇以游戏案例为背景提供一种收集外部群消息的思路。可将本文视为一篇关于机器人助手集成平台的启蒙教程。
本篇侧重剖析、记录制作过程,工作流能跑通,但所用节点不一定是最精简的。
怎么办
1.创建自定义机器人
👇在群里添加自定义机器人
👇复制webhook地址,https://open.feishu.cn/open-apis/bot/v2/hook/后面的字符部分为机器人ID。 记住这个机器人id,以后会用到。为了好记,我们就叫他迷失的羔羊吧~
新手很难记住哪步需要用到哪个,不如起一个绰号
250px|700px|reset
2.创建工作流
👇工作流概览
判断是否存在记录,若没有,储存记录后判断方向;若有,直接判断方向。 按方向去移动、合并数字,增加随机2 判断:若盘面没有变化,失败并重开;若有2048,成功并重开;其他情况,发送当前盘面。
250px|700px|reset
👇触发器为网址触发器
接收来自自定义机器人的消息
👆记住这个回调地址,以后会用到
为了容易记住,我们就叫他维纳斯的断臂
👇设置助手-JSON助手
将收到的消息转换为字符串
250px|700px|reset
250px|700px|reset
👇设置助手-数据储存
目的是查找用户之前是否玩过
250px|700px|reset
👇设置逻辑-分支
判断是否存在记录,若没有,储存记录后判断方向;若有,直接判断方向。
250px|700px|reset
👇设置助手-动态脚本
👇设置助手-数据储存
250px|700px|reset
👇设置助手-设置变量
250px|700px|reset
250px|700px|reset
👇设置助手-设置变量
250px|700px|reset
👇设置逻辑-分支
判断移动、合并数字的方向
👇上下左右四个方向只是在代码里有少量差异,以分支“左”为例,需要3个节点:
助手-动态脚本用途是按方向去移动、合并数字,增加随机2
助手-数据储存把变换后的数组存起来,供以后查询
助手-设置变量把变换后的数组临时存起来,供下一个节点查询(变量名叫z2048)
250px|700px|reset
👇设置助手-动态脚本
用途是把二维数组转换成字符串,供机器人发给用户。主要是把0变成四个下划线,不足4位的数字补足位数
比如将[[2,4,16,4],[0,0,4,128],[0,0,256,32],[0,0,0,2]]
转换为
___2.___4.__16.___4.
____.____.___4._128.
____.____._256.__32.
____.____.____.___2.
👇设置助手-设置变量
这里填写机器人id,id 这是什么来着? 就是上面遇到的迷失的羔羊,我们可以把他填过来了。 这个节点的目的是把机器人id存起来,供以后3个飞书自定义机器人节点使用
250px|700px|reset
👇设置逻辑-分支
判断:若盘面没有变化,失败并重开;若有2048,成功并重开;其他情况,发送当前盘面并终止。 最初判断失败的标准是是否剩余空位,后修改为变量num与变量z2048是否相等—— 即便没有空位,只要存在变换的可能就允许继续游戏。
250px|700px|reset
👇设置飞书-飞书自定义机器人
👇设置助手-动态脚本
成功或失败后都需要重新生成初始局
250px|700px|reset
👇设置助手-数据储存
250px|700px|reset
👆单击右上角完成发布
3.创建机器人助手
👇访问飞书机器人助手新建机器人指令
注意不要选成我的应用
👇设置触发器为@机器人的群聊消息
250px|700px|reset
👇设置触发器的参数
250px|700px|reset
👇操作设置为发送HTTP请求
250px|700px|reset
👇URL需要填写维纳斯的断臂
👇设定流程名称并启用
250px|700px|reset
运行
👇在群内@机器人并留言你的操作方向。
250px|700px|reset
删除(若有需要)
👇群中删除自定义机器人
👇飞书机器人助手删除指令
写在后面
  • ta太笨,不会玩2048
  • 我太笨,说不清2048
  • 最终只好自己调整代码。 这是孝夕夕第一次使用JS, 总体感受是可以把 AI 用作提词器—— 自己把逻辑捋清楚,不会的函数去问 AI。
  • 🎮2048多维表格中使用了一维数组,本次有了集成平台加持,直接使用二维数组。并且解决了一个问题——多维表格不支持遍历,所以8-2-2-4会变成8-4-4;集成平台经过遍历3次,能充分合并变成16。
GPT3.5的代码
function moveRight(input) {
// 遍历每一行
for (let i = 0; i < 4; i++) {
// 向右移动非0数字
let currentCol = 3;
let merged = false; // 标记是否已经合并过数字
for (let j = 2; j >= 0; j--) {
if (input.num[i][j] !== 0) {
// 查找右侧的非零数字位置
let nextCol = currentCol - 1;
while (nextCol >= 0 && input.num[i][nextCol] === 0) {
nextCol--;
}
// 如果当前位置右侧的数字为0,并且左侧相邻数字与当前数字相等,则合并数字
if (nextCol !== -1 && input.num[i][nextCol] === input.num[i][j] && !merged) {
input.num[i][nextCol] *= 2;
input.num[i][j] = 0;
merged = true;
} else {
// 否则,将数字移到当前位置右侧
currentCol--;
input.num[i][currentCol] = input.num[i][j];
if (currentCol !== j) {
input.num[i][j] = 0;
}
merged = false;
}
}
}
}
// 随机生成一个2在空位上
let emptyPositions = [];
for (let i = 0; i < 4; i++) {
for (let j = 0; j < 4; j++) {
if (input.num[i][j] === 0) {
emptyPositions.push({
row: i,
col: j,
});
}
}
}
if (emptyPositions.length > 0) {
let randomPosition =
emptyPositions[Math.floor(Math.random() * emptyPositions.length)];
input.num[randomPosition.row][randomPosition.col] = 2;
}
return input.num;
}
我调整后的代码
function moveRight(input) {
// 遍历三次,8-2-2-4能变成16,不遍历会变成8-4-4
for (let k = 0; k < 3; k++) {
for (let j = 1; j < 4; j++) {
// 遍历每一行
for (let i = 0; i < 4; i++) {
// 如果当前位置右方的数字为0,或者相等,就合并
if (input.num[i][j] === 0 || input.num[i][j] === input.num[i][j - 1]) {
input.num[i][j] = input.num[i][j] + input.num[i][j - 1];
input.num[i][j - 1] = 0;
// 否则,不变动
} else {
input.num[i][j] = input.num[i][j];
}
}
}
}
// 随机生成一个2在空位上
let emptyPositions = [];
for (let i = 0; i < 4; i++) {
for (let j = 0; j < 4; j++) {
if (input.num[i][j] === 0) {
emptyPositions.push({
row: i,
col: j,
});
}
}
}
if (emptyPositions.length > 0) {
let randomPosition =
emptyPositions[Math.floor(Math.random() * emptyPositions.length)];
input.num[randomPosition.row][randomPosition.col] = 2;
}
return input.num;
}
先进生产力和业务协同平台
联系我们立即试用
更多人气推荐
查看更多

先进团队,先用飞书

欢迎联系我们,飞书效能顾问将为您提供全力支持
分享先进工作方式
输送行业最佳实践
全面协助组织提效
反馈给飞书 CEO:ceo@feishu.cn