游戏任务系统实现思路

文章目录

  • 一、需求介绍
  • 二、数据库设计
  • 3、代码部分实现


一、需求介绍

1、首先任务的类型不同,可以分为:日常任务、成长任务、活动任务等等。
2、当达到任务目标时,自动发放任务奖励。
3、任务需要后台可配置,例如:任务名称、完成条件、奖励内容等等。

二、数据库设计

1、任务表

字段名称注释
task_id任务id
type任务类型(日常、成长、活动等)
task_describe任务描述
reward_describe奖励描述
unlock_rule解锁条件
finish_rule完成条件
reward_rule完成奖励
number每日可完成次数
start_time任务开始时间
end_time任务结束时间

2、解锁条件配置表

字段名称注释
unlock_id解锁条件id
describe解锁条件描述
unlock_rule解锁条件规则

在unlock表中,我们配置一些任务解锁的条件:

INSERT INTO `sys_task_unlock_config` (`unlock_id `, `describe`, `unlock_rule `) VALUES (11000, '邀请%d个好友', 'type=11000&num=%d');
INSERT INTO `sys_task_unlock_config` (`unlock_id `, `describe`, `unlock_rule `) VALUES (12101, '累计拿到%d次SSS成绩', 'type=12101&num=%d');

比如:累计拿到3次SSS成绩的解锁条件为累计拿到1次SSS成绩,那么在任务表中,unlock_rule 解锁条件配置为 type=12101&num=1

3、完成条件配置表

字段名称注释
finish_id完成条件id
describe完成条件描述
finish_rule完成条件规则

与解锁表相同,我们插入两条演示数据:

INSERT INTO `sys_task_finish_config` (`finish_id`, `describe`, `finish_rule `) VALUES (21000, '邀请%d个好友', 'type=21000&num=%d');
INSERT INTO `sys_task_finish_config` (`finish_id`, `describe`, `finish_rule `) VALUES (22101, '累计拿到%d次SSS成绩', 'type=22101&num=%d');

那么拿到3次SSS成绩的完成配置:type=22101&num=3

4、奖励条件配置表

字段名称注释
reward_id奖励条件id
describe奖励条件描述
reward_rule奖励条件规则

同上,插入两条演示数据:

INSERT INTO `sys_task_rewaed_config` (`reward_id`, `describe`, `reward_rule `) VALUES (31000, '奖励%d个宝石', 'type=31000&num=%d');

那么,奖励条件配置为:type=31000&num=3,即为完成任务奖励3个宝石

5、个人任务表

字段名称注释
task_record_id任务记录id
user_id用户id
task_id任务id
type任务类型
status任务完成情况
completed_times已完成次数
number每日可完成次数

3、代码部分实现

首先需要监听游戏中发生的各种事件,比如:在线10分钟、杀死一个野怪等等。这些时间会触发我们的任务。
在触发任务后,需要统计角色的信息,然后用这些信息去遍历任务表,看看哪些任务可以解锁,将其添加至个人任务表。
随后遍历个人任务,查看哪些符合完成条件,对符合条件的发放奖励。

大致流程:

在这里插入图片描述
另外,我们在创建角色时,需要将一些没有解锁条件的任务添加至数据库。
我们在添加有时间期限的任务时,需要添加定时任务,在活动到期时将任务从个人任务表删除。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/587234.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

访问公网视频监控平台,看不到实时视频的问题查处

一、实时监控视频看不到了的问题出现 今天在给客户演示实时视频监控,通过公网平台能够正常查看各个品牌IPC的实时视频(在浏览器页面输入“http://公网平台IP地址”,关于IP地址详细介绍,可以看以前文章),如下…

Python集成开发工具

第二章、IDE(PyCharm) 一、设置py文件模板 设置模版 二、格式化代码设置 三、PyCharm运行python源文件的模式 第一次按照何种模式执行测试用例,后续都会按照这种方式去执行 普通模式,unittest模式,pytest模式介绍 四…

记录DevEco Studio 模拟器启动失败问题

启动模拟器报错 解决步骤 1、“启用或关闭windows功能"勾选"hyper-v”、“windows虚拟机监控程序平台”、“虚拟机平台” 2、打开cpu虚拟化 打开bios,打开Intel Virtualization Technology 这样就可以了 在任务管理器可以看到已开启,编辑器…

牛客网SQL训练4—SQL进阶挑战

文章目录 一、增删改操作1. 插入记录2. 更新记录3. 删除记录 二、表与索引操作1. 表的创建、修改与删除2. 索引的创建、删除 三、聚合分组查询1. 聚合函数2. 分组查询 四、多表查询1. 嵌套子查询2. 合并查询3. 连接查询 五、窗口函数1. 专用窗口函数2. 聚合窗口函数 六、其他常…

Redis:原理速成+项目实战——Redis的Java客户端

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:Redis:原理速成项目实战——Redis常见命令(数据结构、常见命令总结) 📚订阅专栏&…

数据治理:释放数据价值的关键

随着数字化时代的到来,数据已成为组织和企业最重要的资产之一。然而,数据的快速增长和复杂性也给数据管理带来了巨大的挑战。为了确保数据的质量、安全性和合规性,数据治理已成为组织和企业必须面对的重要问题。数据治理是数据要素市场建设的…

机器学习(一) -- 概述

系列文章目录 机器学习(一) -- 概述 机器学习(二) -- 数据预处理 未完待续…… 目录 系列文章目录 前言 一、机器学习定义(是什么) 二、机器学习的应用(能做什么) 三、***机器…

Paste在开发过程中的效率提升

1. 引言 在开发过程中,剪贴板管理工具是程序员日常工作中的得力助手。Paste作为一款专为Mac用户设计的剪贴板管理工具,不仅可以提高复制粘贴的效率,还通过一系列强大的功能为开发者带来更多便利。 Paste是一款专为Mac用户设计的剪贴板管理工…

leetcode链表小练(1.反转链表2.链表的中间节点3.合并两个有序链表4.环形链表①5.环形链表②)详解 (୨୧• ᴗ •͈)◞︎ᶫᵒᵛᵉ ♡

目录 一.反转链表 思路一反转指针反向: 思路二头插法: 二.链表的中间节点: 三.合并两个有序数组: 思路一:从头开始,取两个链表中小的那个尾插到新链表。定义指针head,tail指向空,代表新链表的头结点。…

Linux:不同计算机使用NFS共享资源

一,安装NFS文件系统 NFS即网络文件系统(network file system),它允许网络中的计算机之间通过网络共享资源。目前,NFS只用于在Linux和UNIX主机间共享文件系统。 #使用mount命令可以将远程主机的文件系统 安装到 本地: #将远程主机…

1、aigc图像相关

aigc图像相关 一、Diffusion webui 在autodl上部署一些问题二、lora和kohyass(1)角色模型(2)风格模型(3)dreambooth(4)模型合并(5)Lora加Adetail其他 三、sd …

模型复杂推理-思维链COT基础和进阶玩法

COT基础用法 Few-shot COT Chain of Thought Prompting Elicits Reasoning in Large Language Models 开篇自然是COT小王子的成名作,也是COT的开山之作,单看引用量已经是一骑绝尘。 论文的核心是通过Few-shot的方案,来引导模型生成中间推理过…

vue3全网最全教程-----(3)

目录 4. 路由 4.1. 【对路由的理解】 4.2. 【基本切换效果】 4.3. 【两个注意点】 4.4.【路由器工作模式】 4.5. 【to的两种写法】 4.6. 【命名路由】 4.7. 【嵌套路由】 4.8. 【路由传参】 query参数 params参数 4.9. 【路由的props配置】 4.10. 【 replace属性】…

Java基层医院信息化管理系统云HIS源码

医院信息系统(HIS)经历了从手工到单机再到局域网的两个阶段,随着云计算、大数据新技术迅猛发展,基于云计算的医院信息系统将逐步取代传统局域网HIS,以适应人们对医疗卫生服务越来越高的要求。 云HIS分系统功能 一、医疗业务子系统…

Kasada p.js (x-kpsdk-cd、x-kpsdk-cd、integrity)

提供x-kpsdk-cd的API服务 详细请私信~ 可试用~ 一、简述 integrity是通过身份验证Kasada检测机器人流量后获得的一个检测结果(数据完整性) x-kpsdk-cd 是经过编码计算等等获得。当你得到正确的解决验证码值之后,解码会看到如下图 二、cook…

C/C++ BM4 合并两个排序的链表

文章目录 前言题目1. 解决方案一1.1 思路概述1.2 源码 2. 解决方案二2.1 思路阐述2.2 源码 总结 前言 这道题采用两种方式,一种是直接插入法,还有一种就是递归调用。 题目 输入两个递增的链表,单个链表的长度为n,合并这两个链表…

用IDEA创建/同步到gitee(码云)远程仓库(保姆级详细)

前言: 笔者最近在学习java,最开始在用很笨的方法:先克隆远程仓库到本地,再把自己练习的代码从本地仓库上传到远程仓库,很是繁琐。后发现可以IDEA只需要做些操作可以直接把代码上传到远程仓库,也在网上搜了些…

【linux】head的用法 输出文件开头的内容

在linux可以用find查找一个文件,可以用grep查找符合要求的文件内容,但是有的时候希望查看文件的前几行或者后几行(其实这种场景经常可以遇到,比如接触到日志分析的时候),那就应该使用head和tail这两个工具了…

Redis 数据库,忘记密码如何找回或重置

对于 Redis 数据库,如果忘记了密码,可以通过以下步骤进行密码重置: 找到 Redis 配置文件 redis.conf。通常情况下,该文件位于 Redis 安装目录下的 etc 或 conf 文件夹中。使用任意文本编辑器打开 redis.conf 文件。在文件中找到 …

Qt Creator可视化交互界面exe快速入门5

上一期介绍了加法计算器,本期介绍QObject定时器。 首先一样先建个工程,比如我这项目名为QObject 本期的任务就是制作图片在界面上显示,然后每秒定时切换,点击另一个暂停按钮,可以定格当前图片,即取消定时切换功能。 显示图片的我们可以使用显示里面的label 这个用于显示…