我的小窝
🔈【我的小窝】文字游戏依赖于微信订阅号实现。大家可以关注公众号【舞动幽都】进行最新功能的体验。 🔈本文主要用于记录文字游戏开发进度,由于源码可获取,这里就不贴代码了。 |
前言
大家可能在QQ群里面接触过QQ群娱乐机器人。或者腾讯推出的针对QQ频道开放的QQ机器人。我这里将在公众号中实现,不使用魔法。 遗憾的是由于订阅号不同于服务号,所支持的API有限,导致一些功能不能实现。比如点歌台,图文,活动推送等等。 本文将持续更新至项目完结,同时也会将实现过程更新在B站上 |
关于项目
🔈springboot框架开发。 🔈使用MongoDB作为数据库。 🔈依赖于订阅号开发。 |
关于源码
🔈目前源码放在私有的gitLab中,需要相关源码的可以下方留言或私信,我拉你进项目组,方便获取最新源码。 |
关于视频
🔈视频地址:https://space.bilibili.com/409291881/video |
环境搭建
一.项目搭建及简单回复
可前往微信公众平台注册申请订阅号。
🎟️使用指令
指令名 | 说明 |
小窝 | 主菜单获取 |
关注 | 用户关注公众号后给的反馈 |
💡相关实现
1.创建表my_order,用户存储指令,字段如下👇参数 | 说明 |
orderName | 指令名称 |
movementContent | 动作内容-(回复内容) |
2.相关代码
可参考👉微信公众号开发-公众号被动回复用户消息。与视频所演示代码基本一致,这里就不单独列了。
📱实现演示
二.wxHelper包引入
引入微信开发工具wxHelper wxHelper使用教程🔗
视频目录
前两集属于是环境的搭建了,从这里开始,我们就开始正式的去实现文字游戏了
1.用户存储及昵称修改
✨实现说明
1.用户存储实现 2.昵称修改实现 3.个人信息的展示 |
🎟️使用指令
指令名 | 说明 |
个人中心 | 查看个人信息 |
修改昵称# | 修改客户昵称 |
💡相关实现
1.user表,用于存储用户。字段如下👇参数 | 说明 |
nickName | 昵称 |
openId | openId |
juewei | 爵位 |
jingyan | 经验 |
3.昵称修改
判断截取用户输入的指令,然后修改用户的昵称,我这里使用split()获取昵称,代码如下👇
//修改昵称#不要喷香水
String[] nickNames = receiveMsg.getContent().split("#");
if (nickNames.length==2){
String nickName = nickNames[1];
User user = userRepository.findByOpenId(receiveMsg.getFromUserName());
user.setNickName(nickName);
mongoTemplate.save(user);
}else {
replyContent="修改昵称失败";
}
3.个人信息展示查询个人信息时,使用replace()将指令对应的返回内容进行替换即可。
📱实现演示
2.天气查询
✨实现说明
1.天气数据爬取 2.天气数据回显 |
🎟️使用指令
指令名 | 说明 |
天气查询# | 查询某个城市的天气 |
💡相关实现
1.创建WeatherItem类,用户暂存查询的天气参数 | 说明 |
weatherName | 天气城市名称 |
time | 日期 |
nowWeather | 当前温度 |
todayWeatherTQ | 今日天气 |
todayWeatherWD | 今日温度 |
shidu | 湿度 |
fengxiang | 风向 |
ziwaixian | 紫外线 |
kongqiTitle | 空气标题 |
pm | pm |
kongqiOth | 日出日落时间 |
①引入依赖
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.8.3</version>
</dependency>
假如我们现在获取到了这样一段html元素👇,想要获取温度和天气
<dd class="weather">
<p class="now"><b>17</b><i>℃</i></p>
<span><b>阴</b>7 ~ 18℃</span>
</dd>
我们只需要进行如下的操作既可以获取到元素值👇
String html="获取到的页面元素字符串"
//将页面元素字符串转换成dom
Document doc = Jsoup.parse(html);
//现在温度 17
String nowwendu=doc.getElementsByTag("b").get(0).text();
//今天天气 阴 7 ~ 18℃
String tianqi=doc.getElementsByTag("span").text();
📱实现演示
3.每日签到
✨实现说明
1.签到获取经验,每天只能签到一次,凌晨重置签到状态 |
🎟️使用指令
指令名 | 说明 |
签到 | 用户签到 |
💡相关实现
签到可以获得经验,同时每天只能签到一次,这个时候就需要用到定时器,每日凌晨重置用户的签到状态。1.修改user表,添加字段isSignIn,用于标识用户签到状态。
2.使用定时任务,每天凌晨更新用户的签到状态
3.主要通过注解@Scheduled(cron = "0 0 0 * * ?")去实现签到状态重置功能,还是比较简单的
📱实现演示
4.爵位升级
✨实现说明
1.通过签到获得的经验,对爵位进行升级。 2.个人的经验回显修改,显示成 [当前经验/下个等级所需经验] |
💡相关实现
爵位的升级,实现起来还是比较简单的,无非就是拿到现在的经验和爵位表的经验值进行一个对比,然后获得相应的爵位即可。视频中演示了两种比较的方法,一种是普通的for循环比较。一种是采用二分法的方式进行比较处理。没什么特别之处,这里就不贴代码了📱实现演示
5.签到及菜单优化
✨实现说明
1.代码优化,指令表添加指令类型 2.指令优化,对指令修改归类。同时将签到指令添加到了指令表中 3.签到优化,追加了签到赠送金币 4.个人中心优化,追加显示了金币和魅力值 |
💡相关实现
这一期视频主要是对之前的指令进行优化,修改了指令的返回内容。同时呢改了下签到,在签到的时候追加了金币的获取。主要用于之后的物品购买。6.金币商城实现
✨实现说明
1.物品添加维护 2.金币商城展示 |
📱实现演示
7.我的背包
✨实现说明
1.物品购买 2.背包物品展示 3.背包物品详情查看 |
🎟️使用指令
指令名 | 说明 |
购买# | 购买商城物品 |
我的背包 | 查看背包物品 |
查看# | 查看物品详情 |
📱实现演示
8.农场-土地购买
✨实现说明
1.农场设计说明 2.土地 购买实现 |
💡相关实现
土地购买存在上限,随着农场等级的提升,可以购买更多的土地🎟️使用指令
指令名 | 说明 |
小窝农场 | 查看农场情况 |
购买土地 | 购买土地 |
📱实现演示
9.农场-作物品维护
✨实现说明
1.维护种植物与对应的采集物关系 2.种植物的成熟时间维护 以及采集物数量维护 3.将采集物维护到物品表中 |
10.农场-作物种植
✨实现说明
种植作物 |
🎟️使用指令
种植# | 说明 |
📱实现演示
11.农场-作物成长
✨实现说明
对作物进行成熟处理 |