前言
本文的基础是快捷指令的信息自动化。
马上要到520,用快捷指令给生活加点小调剂。不知道你是否在网上看到过这样的聊天互动。

使用聊天文本打气球🎈,很有意思的互动。只是手动发送稍微有些麻烦。在iOS17版本以后,信息自动化能够直接运行,不需要手动确认。所以可以使用快捷指令实现收到信息后随机替换礼物并自动发送信息。
思路是收到开始游戏的信息后,生成气球墙。收到坐标信息后,将气球墙对应位置的气球替换成礼物,并将结果发回给发送人。
拆分气球墙

首先确定扎气球坐标的消息格式,使用一个emoji来识别信息自动化,本文使用🎯(2,3)或🎯43的格式。使用正则表达式“\d”匹配扎气球坐标信息中的数字。从🎯(2,3)提取出数字23,从匹配文本中获取列表的第一项行数2,以及列表的最后一项列数3。

确定三个点,将气球墙拆分为坐标之前,替换礼物,坐标之后三部分。

通过“计算表达式”(行-1)*5+列,获取到要替换礼物的气球所在的坐标位数。
坐标之前:将替换礼物的位数减一,从列表中选取范围内的项目,从1到位数减一;
坐标之后:将替换礼物的位数加一,从列表中选取范围内的项目,从位数加一到最后一位。

这里使用简单的方式控制礼物的概率,将文本按每个字符拆分后,“从列表中获取项目”有一个随机项目的参数,在文本中添加💥的数量越多,选中礼物的概率越低,想要增加某个礼物的概率,可以增加该礼物的数量。当然也可以通过数学公式详细控制每个礼物的概率。

还可以在其中选择一个特殊emoji,随机到该emoji时,发送🚓🚓🚓🚓🚓🚓,城管来了,卷钱跑路。(信息内容不包含卷钱跑路)

因为每一次扎飞镖会改变气球墙的布局,所以每次运行后要将结果追加保存到备忘录中。替换被扎的气球之前,先查找备忘录。

如果保存结果的备忘录里存在内容,就按行拆分备忘录内容,因为每次都是追加备忘录,所以从列表中获取最后一项就是最新的结果。

如果不包含内容就创建新的气球墙。

获取到气球墙的最新布局后,将其按照每个字符拆分并计算项目的数量。因为气球数量按照喜好选择,所以通过计算的方式获取气球总数。
本文指令气球墙使用5行,5列,总共25个🎈。
从列表中获取项目的范围是从1开始到25结束。这里就存在一个问题,坐标(1,1)和(5,5)在对位数加一减一时,坐标(1,1)的位数减一后为0,从列表中获取项目的范围则为1到0,会出现错误;同理坐标(5,5)位数加一后为26,从列表获取项目的范围则为25到26,超过了项目的范围。所以对这两个坐标添加一个判断。

“如果”操作有一个“介于”参数,这个参数包含了小于等于和大于等于。所以“如果”位数介于2和24时,就使用“文本”操作拼接三段:坐标之前,替换礼物,坐标之后。

否则在2和24范围之外,位数包含了1和25,如果位数减一的计算结果为0,表示替换礼物的坐标为(1,1),直接使用文本拼接“替换礼物”和“坐标之后”。

否则,就是坐标(5,5),拼接“坐标之前”和“替换礼物”。

“如果的结果”不是一行,保存到备忘录中难以拆分,所以先使用新行拆分,再使用“空分隔符”合并,注意这里分隔符不是空格。将合并后的文本追加到备忘录保存。
直接使用排版好的气球墙在“拆分文本”时,换行处会出现空格,可以先去除空格再进行计算。排版好的气球墙在保存到备忘录的时候也要留出拆分的分隔符。

本文使用没有排版的气球墙,等替换好文本后重新复原排版。将文本按照每个字符拆分后对重复索引进行模运算,除数为气球墙的列数。

当取模为0时,在重复项目后换行再保存到复原排版变量中。在“文本”里加一个换行即可,注意上图“文本”里的光标位置。

否则直接将重复项目添加到复原排版变量中。
之后将复原排版变量使用“空分隔符”合并文本。


最后将复原排版后的气球墙发送给“输入快捷指令的信息”,因为本指令是在信息自动化中运行。指令内容直接写在自动化里时可以查看输入快捷指令的信息有哪些类型。

在指令中的输入快捷指令的信息,可以将类型改为联系人。
遍历气球墙

为了指令便于分享,以及修改气球墙数量的需求。替换礼物的方式不使用文本拼接,通过变量遍历。并在前方添加一个“数字”操作,将指令中和行列数有关的内容都改为此“数字”变量,修改数字即可修改气球墙的数量。

为游戏添加一个开始游戏的说明,使用“匹配文本”匹配输入快捷指令的信息中的数字时,添加一个判断,如果“匹配文本”有值,则继续获取坐标。

如果没有值,则发送游戏规则说明。

查找上次游戏的备忘录记录,删除后新建空白备忘录。之后停止运行此指令,等待发送坐标。

因为是计算替换礼物的位数,所以类似(2,6)、(6,5),超过行列数的坐标也能够运行。当坐标超出时,发送飞镖扔偏的提示信息后停止执行指令后续内容。在iOS18版本,“如果”操作可以同时添加多个条件,将条件参数改为“任一”。如果在iOS18版本之前,需要拆分为两个“如果”。

计算位数的表达式中的5改为“数字”变量。

将固定的新气球墙改为按照“数字”相乘自动生成。

对气球墙按照字符拆分,重复每一项。

当重复索引和坐标的位数相同时。有两种情况,坐标位置可能为气球🎈,说明没有被扎过,将随机礼物添加到气球变量;坐标位置不是气球🎈,被扎过,提示飞镖扔偏的信息,停止执行后续内容。

当二者不同时,将重复项目添加到气球变量。

将复原排版的取模除数改为“数字”变量。

除了气球还可以修改为其他内容,例如改成🥖砸“金”蛋🥚,为了不浪费粮食,打破的鸡蛋做成煎蛋🍳。还可以改为🫳拆盲盒📦。

iMessage中的支付宝可以发送红包,付款后开始游戏。
推荐几个礼物
返还游戏的十倍红包🧧,想买很久的运动鞋👟,蛋糕奶茶小烧烤🍰🧋🍖,喜欢的包包👜,预备的演唱会门票🎫,半小时不间断的吻💋,小惊喜💍,还有芙莉莲严选,只会溶解衣服的药水🧪。
刮刮乐指令
在盲盒版本中可以添加刮刮乐🎰,随机礼物添加判断,如果是刮刮乐,运行刮刮乐指令。


将刮刮乐内容分为上下两部分,下方的emoji和上方一行的emoji相同时,则获得该emoji下方的金额。

将emoji按照每个字符拆分。

将金额按照空格拆分。

先重复5次,随机获取5个中奖emoji。使用空分隔符合并为一行。

将一行emoji和一行金额看作一行,所以重复五次。每次重复时,随机获取5个emoji。使用空分隔符合并为一行。

随机获取5个金额。使用空格合并为一行。

使用“文本”上下拼接。
最后将中奖emoji和下方的随机emoji金额拼接,发送给联系人。


开始互动前,先运行一次开始游戏,首次会提示删除备忘录的权限。再发送正常坐标,超出坐标,重复坐标这三类坐标,提供发送信息的权限。运行在iOS18系统版本的指令,判断超出坐标是一个“如果”同时判断两个条件,超出坐标只需运行一次;在iOS18之前的版本有两个如果判断,需测试两次超出坐标,一次行数超过5,一次列数超过5。
关闭“发送信息”操作的运行时显示,实现锁屏运行自动化。