From f3c056f84e7c36d4daa859c2666f04cc3a56b236 Mon Sep 17 00:00:00 2001 From: Huangzj Date: Thu, 31 Dec 2020 14:25:25 +0800 Subject: [PATCH] =?UTF-8?q?feat(Go-Tool)=EF=BC=9A=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=20=202020/12/31=EF=BC=9A=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=A1=88=E4=BE=8B=EF=BC=88=E8=A7=92=E8=89=B2?= =?UTF-8?q?=E6=8A=80=E8=83=BD=E6=A0=91=EF=BC=89=20=20=20=20=20=20=20=20=20?= =?UTF-8?q?=20=20=20=20=20=20=202020/12/31:=20=E4=BF=AE=E6=94=B9diliver?= =?UTF-8?q?=E5=8C=85=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ProgressTest/SkillTopology/Business_test.go | 32 ++++ ProgressTest/SkillTopology/Bussiness.go | 19 +++ .../SkillTopology/SimulationTopologyer.go | 151 ++++++++++++++++++ ProgressTest/SkillTopology/Skiller.go | 79 +++++++++ .../SkillTopology/SkillerTopologyMap.go | 22 +++ ProgressTest/SkillTopology/TopologyTool.go | 145 +++++++++++++++++ .../SkillTopology/TopologyTool_test.go | 106 ++++++++++++ .../SkillTopology/dbOperation/Counsellor.go | 28 ++++ .../SkillTopology/dbOperation/SkillPoint.go | 38 +++++ .../SkillTopology/model/Counsellor.go | 19 +++ .../SkillTopology/model/SimulationParam.go | 11 ++ ProgressTest/SkillTopology/model/SkillNode.go | 16 ++ ProgressTest/SkillTopology/model/Topology.go | 13 ++ ProgressTest/SkillTopology/readme.md | 9 ++ ProgressTest/SkillTopology/skill.json | 39 +++++ ProgressTest/SkillTopology/技能树说明.jpg | Bin 0 -> 108840 bytes ProgressTest/{ => diliver}/DataInit.go | 4 +- .../{ => diliver}/DeliverRule2_test.go | 2 +- .../{ => diliver}/DeliverRule_test.go | 2 +- ProgressTest/{ => diliver}/OrderRule.go | 2 +- ProgressTest/{ => diliver}/deliverData.json | 0 go.sum | 2 - readme.md | 8 +- 23 files changed, 738 insertions(+), 9 deletions(-) create mode 100644 ProgressTest/SkillTopology/Business_test.go create mode 100644 ProgressTest/SkillTopology/Bussiness.go create mode 100644 ProgressTest/SkillTopology/SimulationTopologyer.go create mode 100644 ProgressTest/SkillTopology/Skiller.go create mode 100644 ProgressTest/SkillTopology/SkillerTopologyMap.go create mode 100644 ProgressTest/SkillTopology/TopologyTool.go create mode 100644 ProgressTest/SkillTopology/TopologyTool_test.go create mode 100644 ProgressTest/SkillTopology/dbOperation/Counsellor.go create mode 100644 ProgressTest/SkillTopology/dbOperation/SkillPoint.go create mode 100644 ProgressTest/SkillTopology/model/Counsellor.go create mode 100644 ProgressTest/SkillTopology/model/SimulationParam.go create mode 100644 ProgressTest/SkillTopology/model/SkillNode.go create mode 100644 ProgressTest/SkillTopology/model/Topology.go create mode 100644 ProgressTest/SkillTopology/readme.md create mode 100644 ProgressTest/SkillTopology/skill.json create mode 100644 ProgressTest/SkillTopology/技能树说明.jpg rename ProgressTest/{ => diliver}/DataInit.go (88%) rename ProgressTest/{ => diliver}/DeliverRule2_test.go (99%) rename ProgressTest/{ => diliver}/DeliverRule_test.go (99%) rename ProgressTest/{ => diliver}/OrderRule.go (98%) rename ProgressTest/{ => diliver}/deliverData.json (100%) diff --git a/ProgressTest/SkillTopology/Business_test.go b/ProgressTest/SkillTopology/Business_test.go new file mode 100644 index 0000000..cab5e5e --- /dev/null +++ b/ProgressTest/SkillTopology/Business_test.go @@ -0,0 +1,32 @@ +/* + * @Author : huangzj + * @Time : 2020/12/29 17:39 + * @Description: + */ + +package SkillTopology + +import ( + "Go-Tool/ProgressTest/SkillTopology/model" + "fmt" + "testing" +) + +func TestDrawSkill(t *testing.T) { + topology := GetCounsellorSkillByDb(NewSkilledWorker(), model.CounsellorId) + DealWithUnLockSkill(topology) +} + +func TestUpdateSkill(t *testing.T) { + //测试一个没有达到升级条件的节点7 + topology := GetCounsellorSkillByDb(NewSkilledWorker(), model.CounsellorId) + ok := CheckSkillUpdate(topology, 7) + + fmt.Println(fmt.Sprintf("技能7是否满足升级条件:%v", ok)) + + //测试一个可以升级的节点:11 + ok = CheckSkillUpdate(topology, 11) + + fmt.Println(fmt.Sprintf("技能11是否满足升级条件:%v", ok)) + +} diff --git a/ProgressTest/SkillTopology/Bussiness.go b/ProgressTest/SkillTopology/Bussiness.go new file mode 100644 index 0000000..b6af95f --- /dev/null +++ b/ProgressTest/SkillTopology/Bussiness.go @@ -0,0 +1,19 @@ +/* + * @Author : huangzj + * @Time : 2020/12/29 17:25 + * @Description:业务场景 + */ + +package SkillTopology + +import "Go-Tool/ProgressTest/SkillTopology/model" + +//获取根据大臣的数据获取一个大臣对应的技能树拓扑的等级对应关系 +func GetCounsellorSkillByDb(worker *SkilledWorker, counsellorId int) *model.Topology { + counsellor := worker.CounsellorSrv.GetCounsellorSkill(counsellorId) + //根据大臣Id获取大臣技能树拓扑 + topology := SkillTopologyMap[counsellorId] + //根据大臣当前等级信息,组合技能树技能等级 + topology = MakeSimulationSkillsWithLevel(topology, counsellor.Skill) + return topology +} diff --git a/ProgressTest/SkillTopology/SimulationTopologyer.go b/ProgressTest/SkillTopology/SimulationTopologyer.go new file mode 100644 index 0000000..c5da6ab --- /dev/null +++ b/ProgressTest/SkillTopology/SimulationTopologyer.go @@ -0,0 +1,151 @@ +/* + * @Author : huangzj + * @Time : 2020/12/29 14:22 + * @Description:模拟的一个大臣的技能树拓扑关系 + */ + +package SkillTopology + +import "Go-Tool/ProgressTest/SkillTopology/model" + +type NodeRelation struct { + ParentId int + ChildrenId []int +} + +var ( + //拓扑父子关系,模拟读配置 + topologyConfig = map[int][]int{ + 1: {2, 3, 4}, + 2: {8}, + 3: {5, 6}, + 4: {10, 11}, + 5: {7}, + 6: {7}, + 8: {9}, + 10: {12}, + 11: {12}, + } + + headNodeId = 1 +) + +//模拟其中一个大臣获取技能拓扑 +func SimulationParamGetTopology(worker *SkilledWorker) *model.Topology { + //模拟获取技能链 + skill1 := SimulationSkills(worker) + //拓扑父关系 + skill1 = BackSteppingHeadWithChildren(skill1) + + topology := &model.Topology{ + HeadSkillNode: skill1, + CounsellorId: model.CounsellorId, + SkillIdMap: GetTopologyHeadMap(skill1), //获取技能Id和节点的对应关系,方便查找 + } + + return topology +} + +func SimulationSkills(worker *SkilledWorker) *model.SkillNode { + //根节点技能 + skill1 := &model.SkillNode{ + SkillId: 1, + SkillFunc: worker.SkillId1, + Parent: nil, //第一个技能的父节点应该是空的 + } + skill2 := model.SkillNode{ + SkillId: 2, + SkillFunc: worker.SkillId2, + } + skill3 := model.SkillNode{ + SkillId: 3, + SkillFunc: worker.SkillId3, + } + skill4 := model.SkillNode{ + SkillId: 4, + SkillFunc: worker.SkillId4, + } + skill5 := model.SkillNode{ + SkillId: 5, + SkillFunc: worker.SkillId5, + } + skill6 := model.SkillNode{ + SkillId: 6, + SkillFunc: worker.SkillId6, + } + skill7 := model.SkillNode{ + SkillId: 7, + SkillFunc: worker.SkillId7, + } + skill8 := model.SkillNode{ + SkillId: 8, + SkillFunc: worker.SkillId8, + } + skill9 := model.SkillNode{ + SkillId: 9, + SkillFunc: worker.SkillId9, + } + skill10 := model.SkillNode{ + SkillId: 10, + SkillFunc: worker.SkillId10, + } + skill11 := model.SkillNode{ + SkillId: 11, + SkillFunc: worker.SkillId11, + } + skill12 := model.SkillNode{ + SkillId: 12, + SkillFunc: worker.SkillId12, + } + skillMap := map[int]*model.SkillNode{ + 1: skill1, + 2: &skill2, + 3: &skill3, + 4: &skill4, + 5: &skill5, + 6: &skill6, + 7: &skill7, + 8: &skill8, + 9: &skill9, + 10: &skill10, + 11: &skill11, + 12: &skill12, + } + + //拓扑父子关系 + return MakeTopologyByConfig(skillMap, topologyConfig, headNodeId) +} + +func MakeTopologyByConfig(nodes map[int]*model.SkillNode, config map[int][]int, headNodeId int) *model.SkillNode { + headNode := nodes[headNodeId] + if headNode == nil { + return nil + } + for nodeId, childrenId := range config { + childrenNodes := make([]*model.SkillNode, 0) + for _, childId := range childrenId { + if node := nodes[childId]; node != nil { + childrenNodes = append(childrenNodes, node) + } + } + nodes[nodeId].Children = childrenNodes + } + + return headNode +} + +//组装技能所对应的Map节点 +func MakeSimulationSkillsWithLevel(topology *model.Topology, skillList []*model.Skill) *model.Topology { + if topology == nil || topology.HeadSkillNode == nil || len(skillList) == 0 { + return topology + } + skillIdMap := topology.SkillIdMap + for _, skill := range skillList { + if v, ok := skillIdMap[skill.Id]; ok { + v.Level = skill.Level + skillIdMap[skill.Id] = v + } + } + + return topology +} diff --git a/ProgressTest/SkillTopology/Skiller.go b/ProgressTest/SkillTopology/Skiller.go new file mode 100644 index 0000000..5e9e66d --- /dev/null +++ b/ProgressTest/SkillTopology/Skiller.go @@ -0,0 +1,79 @@ +/* + * @Author : huangzj + * @Time : 2020/12/29 14:21 + * @Description: + */ + +package SkillTopology + +import ( + "Go-Tool/ProgressTest/SkillTopology/dbOperation" + "fmt" +) + +type Session int + +type SkilledWorker struct { + TX Session //在实际的程序中,这个地方应该是事务,这边示例只用int暂且表示^_^ + CounsellorSrv *dbOperation.CounsellorSrv //在实际的程序中,这个地方是大臣的Srv,以此从数据库中获取大臣信息,这边示例只用int暂且表示 + SkillPointSrv *dbOperation.SkillPointSrv //在实际的程序中,这个地方应该是技能点的Srv,以此获得数据库数据,这边示例只用int暂且表示 + + //...... 其他相关的属性srv +} + +func NewSkilledWorker() *SkilledWorker { + return &SkilledWorker{ + TX: 0, + CounsellorSrv: dbOperation.NewCounsellorSrv(), + SkillPointSrv: dbOperation.NewSkillPointSrv(), + } +} + +//这边的技能模拟对应实际技能,示例只做输出 +func (*SkilledWorker) SkillId1() { + fmt.Println("我是技能1") +} + +func (*SkilledWorker) SkillId2() { + fmt.Println("我是技能2") +} + +func (*SkilledWorker) SkillId3() { + fmt.Println("我是技能3") +} + +func (*SkilledWorker) SkillId4() { + fmt.Println("我是技能4") +} + +func (*SkilledWorker) SkillId5() { + fmt.Println("我是技能5") +} + +func (*SkilledWorker) SkillId6() { + fmt.Println("我是技能6") +} + +func (*SkilledWorker) SkillId7() { + fmt.Println("我是技能7") +} + +func (*SkilledWorker) SkillId8() { + fmt.Println("我是技能8") +} + +func (*SkilledWorker) SkillId9() { + fmt.Println("我是技能9") +} + +func (*SkilledWorker) SkillId10() { + fmt.Println("我是技能10") +} + +func (*SkilledWorker) SkillId11() { + fmt.Println("我是技能11") +} + +func (*SkilledWorker) SkillId12() { + fmt.Println("我是技能12") +} diff --git a/ProgressTest/SkillTopology/SkillerTopologyMap.go b/ProgressTest/SkillTopology/SkillerTopologyMap.go new file mode 100644 index 0000000..4ba53ac --- /dev/null +++ b/ProgressTest/SkillTopology/SkillerTopologyMap.go @@ -0,0 +1,22 @@ +/* + * @Author : huangzj + * @Time : 2020/12/29 15:46 + * @Description: + */ + +package SkillTopology + +import "Go-Tool/ProgressTest/SkillTopology/model" + +var SkillTopologyMap map[int]*model.Topology + +func GetSkillTopologyMapById(counsellorId int) *model.Topology { + return SkillTopologyMap[counsellorId] +} + +func init() { + SkillTopologyMap = make(map[int]*model.Topology, 0) + + SkillTopologyMap[model.CounsellorId] = SimulationParamGetTopology(NewSkilledWorker()) + //....下面是不同大臣的初始化技能树链 +} diff --git a/ProgressTest/SkillTopology/TopologyTool.go b/ProgressTest/SkillTopology/TopologyTool.go new file mode 100644 index 0000000..dd41875 --- /dev/null +++ b/ProgressTest/SkillTopology/TopologyTool.go @@ -0,0 +1,145 @@ +/* + * @Author : huangzj + * @Time : 2020/12/29 16:20 + * @Description:拓扑工具 + */ + +package SkillTopology + +import "Go-Tool/ProgressTest/SkillTopology/model" + +//设置技能提升,执行对应的方法 +func SkillUpdate(topology *model.Topology, skillId int) { + //如果技能满足提升的条件 + if CheckSkillUpdate(topology, skillId) { + skill := topology.SkillIdMap[skillId] + skill.Level = skill.Level + 1 + //执行技能方法 + skill.SkillFunc() + //更新节点信息 + topology.SkillIdMap[skillId] = skill + //刷新对应父节点的属性 + RefreshParent(skill) + //刷新对应子节点的属性 + RefreshChildren(skill) + return + } + + panic("技能未达到解锁要求") +} + +//当技能发生变化的时候,刷新父节点对应的该技能的属性 +func RefreshParent(skill *model.SkillNode) { + for _, parent := range skill.Parent { + children := make([]*model.SkillNode, 0) + for _, child := range parent.Children { + if child.SkillId != skill.SkillId { + children = append(children, child) + } else { + children = append(children, skill) + } + } + parent.Children = children + } +} + +//当技能发生变化的时候,刷新子节点对应的技能的属性 +func RefreshChildren(skill *model.SkillNode) { + for _, child := range skill.Children { + parent := make([]*model.SkillNode, 0) + for _, p := range child.Parent { + if child.SkillId != skill.SkillId { + parent = append(parent, p) + } else { + parent = append(parent, skill) + } + } + child.Parent = parent + } +} + +//校验技能升级是否合法 +func CheckSkillUpdate(topology *model.Topology, skillId int) bool { + skill := topology.SkillIdMap[skillId] + if topology == nil || topology.HeadSkillNode == nil || skill == nil { + return false + } + //父节点升级,直接返回true + if skill.Parent == nil { + return true + } + for _, parent := range skill.Parent { + if parent.Level == 0 { + return false + } + } + + return true +} + +//执行所有等级大于0的技能效果 +func DealWithUnLockSkill(topology *model.Topology) { + if topology == nil || topology.HeadSkillNode == nil { + return + } + node := topology.HeadSkillNode + travelDealSkillNode(node) +} + +//获取技能Id对应的技能节点 +func GetTopologyHeadMap(node *model.SkillNode) map[int]*model.SkillNode { + skillIdMap := make(map[int]*model.SkillNode, 0) + if node == nil { + return skillIdMap + } + //头节点的处理 + skillIdMap[node.SkillId] = node + //遍历所有的子节点 + travelSkillNode(node, skillIdMap) + return skillIdMap +} + +//已经设置好子节点属性(Children),反推父节点属性(Parent) +func BackSteppingHeadWithChildren(node *model.SkillNode) *model.SkillNode { + if node == nil { + return node + } + //头节点的处理 + travelNodeSetParent(node) + return node +} + +func travelDealSkillNode(node *model.SkillNode) { + //执行对应的方法 + if node.SkillFunc != nil && node.Level > 0 { + node.SkillFunc() + } + //递归遍历所有的子节点 + for _, child := range node.Children { + travelDealSkillNode(child) + } +} + +func travelNodeSetParent(node *model.SkillNode) { + for _, child := range node.Children { + if child != nil { + //有多个父的情况 + if child.Parent != nil || len(child.Parent) != 0 { + child.Parent = append(child.Parent, node) + } else { + child.Parent = []*model.SkillNode{node} + } + //再深入到子节点的内部 + travelNodeSetParent(child) + } + } +} + +func travelSkillNode(node *model.SkillNode, skillIdMap map[int]*model.SkillNode) { + for _, child := range node.Children { + if child != nil { + skillIdMap[child.SkillId] = child + travelSkillNode(child, skillIdMap) + } + } +} diff --git a/ProgressTest/SkillTopology/TopologyTool_test.go b/ProgressTest/SkillTopology/TopologyTool_test.go new file mode 100644 index 0000000..bc00a51 --- /dev/null +++ b/ProgressTest/SkillTopology/TopologyTool_test.go @@ -0,0 +1,106 @@ +/* + * @Author : huangzj + * @Time : 2020/12/29 16:59 + * @Description: + */ + +package SkillTopology + +import ( + "Go-Tool/ProgressTest/SkillTopology/model" + "fmt" + "testing" +) + +//正确的输出应该是: +//SkillId:1,Parent:[],Children:[2 3 4] + +//SkillId:2,Parent:[1],Children:[8] +//SkillId:3,Parent:[1],Children:[5 6] +//SkillId:4,Parent:[1],Children:[10 11] + +//SkillId:5,Parent:[3],Children:[7] +//SkillId:6,Parent:[3],Children:[7] + +//SkillId:10,Parent:[4],Children:[12] +//SkillId:11,Parent:[4],Children:[12] + +//SkillId:8,Parent:[2],Children:[9] +//SkillId:9,Parent:[8],Children:[] + +//SkillId:12,Parent:[10 11],Children:[] +//SkillId:7,Parent:[5 6],Children:[] +func TestGetTopologyHeadMap(t *testing.T) { + + worker := NewSkilledWorker() + skill1 := SimulationSkills(worker) + //拓扑父关系 + skill1 = BackSteppingHeadWithChildren(skill1) + for _, skill := range GetTopologyHeadMap(skill1) { + var pId []int + for _, p := range skill.Parent { + pId = append(pId, p.SkillId) + } + var cId []int + for _, c := range skill.Children { + cId = append(cId, c.SkillId) + } + + fmt.Println(fmt.Sprintf("SkillId:%v,Parent:%v,Children:%v", skill.SkillId, pId, cId)) + } +} + +//正确的输出应该是: +//SkillId:1,Parent:[] + +//SkillId:2,Parent:[1] +//SkillId:3,Parent:[1] +//SkillId:4,Parent:[1] + +//SkillId:5,Parent:[3] +//SkillId:6,Parent:[3] + +//SkillId:11,Parent:[4] +//SkillId:10,Parent:[4] + +//SkillId:8,Parent:[2] +//SkillId:9,Parent:[8] + +//SkillId:7,Parent:[5 6] +//SkillId:12,Parent:[10 11] +func TestBackSteppingHeadWithChildren(t *testing.T) { + worker := NewSkilledWorker() + skill1 := SimulationSkills(worker) + //拓扑父关系 + skill1 = BackSteppingHeadWithChildren(skill1) + for _, skill := range GetTopologyHeadMap(skill1) { + var pId []int + for _, p := range skill.Parent { + pId = append(pId, p.SkillId) + } + fmt.Println(fmt.Sprintf("SkillId:%v,Parent:%v", skill.SkillId, pId)) + } +} + +//正确的输出为: +// +//我是技能11 +//父节点Id为4,对应的Update的子节点的Id为:11,Level为:4 +//子节点Id为12,对应的Update的父节点的Id为:11,Level为:4 +func TestSkillUpdate(t *testing.T) { + topology := GetCounsellorSkillByDb(NewSkilledWorker(), model.CounsellorId) + SkillUpdate(topology, 11) + + for _, skill := range GetTopologyHeadMap(topology.HeadSkillNode) { + for _, child := range skill.Children { + if child.SkillId == 11 { + fmt.Println(fmt.Sprintf("父节点Id为%v,对应的Update的子节点的Id为:%v,Level为:%v", skill.SkillId, child.SkillId, child.Level)) + } + } + for _, p := range skill.Parent { + if p.SkillId == 11 { + fmt.Println(fmt.Sprintf("子节点Id为%v,对应的Update的父节点的Id为:%v,Level为:%v", skill.SkillId, p.SkillId, p.Level)) + } + } + } +} diff --git a/ProgressTest/SkillTopology/dbOperation/Counsellor.go b/ProgressTest/SkillTopology/dbOperation/Counsellor.go new file mode 100644 index 0000000..548c482 --- /dev/null +++ b/ProgressTest/SkillTopology/dbOperation/Counsellor.go @@ -0,0 +1,28 @@ +/* + * @Author : huangzj + * @Time : 2020/12/29 14:49 + * @Description: + */ + +package dbOperation + +import ( + "Go-Tool/ProgressTest/SkillTopology/model" +) + +type CounsellorSrv struct { +} + +func NewCounsellorSrv() *CounsellorSrv { + return &CounsellorSrv{} +} + +//通过模拟的Id来获取对应的技能 +func (*CounsellorSrv) GetCounsellorSkill(counsellorId int) *model.Counsellor { + skillPoint := NewSkillPointSrv() + return &model.Counsellor{ + Id: model.CounsellorId, + Name: "测试的大臣", + Skill: skillPoint.GetAllSkillByCounsellorId(model.CounsellorId), + } +} diff --git a/ProgressTest/SkillTopology/dbOperation/SkillPoint.go b/ProgressTest/SkillTopology/dbOperation/SkillPoint.go new file mode 100644 index 0000000..4b79ee6 --- /dev/null +++ b/ProgressTest/SkillTopology/dbOperation/SkillPoint.go @@ -0,0 +1,38 @@ +/* + * @Author : huangzj + * @Time : 2020/12/29 14:48 + * @Description: + */ + +package dbOperation + +import ( + "Go-Tool/ProgressTest/SkillTopology/model" + "Go-Tool/util/file" + "encoding/json" +) + +type SkillPointSrv struct { + //.... 需要的所有属性 +} + +func NewSkillPointSrv() *SkillPointSrv { + return &SkillPointSrv{} +} + +func (*SkillPointSrv) RacePoint() { + +} + +type tmp struct { + Skills []*model.Skill +} + +//模拟数据,未激活的技能(Level = 0 )技能设置为:6、7、8、10、12,其他为激活的技能,没有等级的技能在数据库不体现 +func (*SkillPointSrv) GetAllSkillByCounsellorId(counsellorId int) []*model.Skill { + var tmp tmp + content, _ := file.ReadJsonFile("F://Go_BySelf//src//Go-Tool//ProgressTest//SkillTopology//skill.json") + _ = json.Unmarshal([]byte(content), &tmp) + + return tmp.Skills +} diff --git a/ProgressTest/SkillTopology/model/Counsellor.go b/ProgressTest/SkillTopology/model/Counsellor.go new file mode 100644 index 0000000..6ee37ee --- /dev/null +++ b/ProgressTest/SkillTopology/model/Counsellor.go @@ -0,0 +1,19 @@ +/* + * @Author : huangzj + * @Time : 2020/12/29 15:08 + * @Description: + */ + +package model + +type Counsellor struct { + Id int + Name string + Skill []*Skill +} + +type Skill struct { + Id int + Level int + Description string +} diff --git a/ProgressTest/SkillTopology/model/SimulationParam.go b/ProgressTest/SkillTopology/model/SimulationParam.go new file mode 100644 index 0000000..d6ce750 --- /dev/null +++ b/ProgressTest/SkillTopology/model/SimulationParam.go @@ -0,0 +1,11 @@ +/* + * @Author : huangzj + * @Time : 2020/12/29 15:56 + * @Description:模拟数据 + */ + +package model + +const ( + CounsellorId = 10 +) diff --git a/ProgressTest/SkillTopology/model/SkillNode.go b/ProgressTest/SkillTopology/model/SkillNode.go new file mode 100644 index 0000000..16fd120 --- /dev/null +++ b/ProgressTest/SkillTopology/model/SkillNode.go @@ -0,0 +1,16 @@ +/* + * @Author : huangzj + * @Time : 2020/12/29 15:00 + * @Description:技能树节点 + */ + +package model + +type SkillNode struct { + SkillId int //技能Id,对应数据库技能Id字段 和 Skiller技能func + Parent []*SkillNode //对应父关系节点,根节点是nil + Children []*SkillNode //对应子关系节点,没有则为nil + Level int //技能等级,通过技能等级判断该技能是否解锁,省去UnLock字段 + + SkillFunc func() //技能节点对应的技能提升效果 +} diff --git a/ProgressTest/SkillTopology/model/Topology.go b/ProgressTest/SkillTopology/model/Topology.go new file mode 100644 index 0000000..5c32828 --- /dev/null +++ b/ProgressTest/SkillTopology/model/Topology.go @@ -0,0 +1,13 @@ +/* + * @Author : huangzj + * @Time : 2020/12/29 15:52 + * @Description: + */ + +package model + +type Topology struct { + HeadSkillNode *SkillNode //拓扑头结点 + CounsellorId int //拓扑对应的大臣Id + SkillIdMap map[int]*SkillNode //技能ID对应的技能节点,方便查找 +} diff --git a/ProgressTest/SkillTopology/readme.md b/ProgressTest/SkillTopology/readme.md new file mode 100644 index 0000000..c2394b7 --- /dev/null +++ b/ProgressTest/SkillTopology/readme.md @@ -0,0 +1,9 @@ +##情景说明 + + +程序需要实现对应的大臣对应的技能树功能,技能树解锁有前置条件,在程序启动的时候,对所有该大臣技能进行执行。 + +可支持技能升级等. + +这边只是简单的设计通过一个类似拓扑的方式来处理大臣技能的框架。 +![image](技能树说明.jpg) \ No newline at end of file diff --git a/ProgressTest/SkillTopology/skill.json b/ProgressTest/SkillTopology/skill.json new file mode 100644 index 0000000..d5e5fed --- /dev/null +++ b/ProgressTest/SkillTopology/skill.json @@ -0,0 +1,39 @@ +{ + "Skills": [ + { + "Id": 1, + "Level": 1, + "Description": "技能1" + }, + { + "Id": 2, + "Level": 1, + "Description": "技能2" + }, + { + "Id": 3, + "Level": 1, + "Description": "技能3" + }, + { + "Id": 4, + "Level": 1, + "Description": "技能4" + }, + { + "Id": 5, + "Level": 1, + "Description": "技能5" + }, + { + "Id": 9, + "Level": 1, + "Description": "技能9" + }, + { + "Id": 11, + "Level": 3, + "Description": "技能11" + } + ] +} \ No newline at end of file diff --git a/ProgressTest/SkillTopology/技能树说明.jpg b/ProgressTest/SkillTopology/技能树说明.jpg new file mode 100644 index 0000000000000000000000000000000000000000..185f28668938fd55a70ffb7e9c83c5f24eb8a6e1 GIT binary patch literal 108840 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�ocN%SmGo* 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%0DkF)p-l|g{kA| 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 ZkDn<~%k*uM%JvBS<>waWbYv^{{tJ#$Sug+q literal 0 HcmV?d00001 diff --git a/ProgressTest/DataInit.go b/ProgressTest/diliver/DataInit.go similarity index 88% rename from ProgressTest/DataInit.go rename to ProgressTest/diliver/DataInit.go index 7a85a49..142baf8 100644 --- a/ProgressTest/DataInit.go +++ b/ProgressTest/diliver/DataInit.go @@ -4,7 +4,7 @@ * @Description: */ -package ProgressTest +package diliver import ( "Go-Tool/util/file" @@ -23,7 +23,7 @@ type Deliver struct { func MakeData() DeliverList { var deliver DeliverList - content, _ := file.ReadJsonFile("F:\\Go_BySelf\\src\\Go-Tool\\ProgressTest\\deliverData.json") + content, _ := file.ReadJsonFile("F:\\Go_BySelf\\src\\Go-Tool\\ProgressTest\\diliver\\deliverData.json") _ = json.Unmarshal([]byte(content), &deliver) return deliver } diff --git a/ProgressTest/DeliverRule2_test.go b/ProgressTest/diliver/DeliverRule2_test.go similarity index 99% rename from ProgressTest/DeliverRule2_test.go rename to ProgressTest/diliver/DeliverRule2_test.go index 71556bb..2a295ca 100644 --- a/ProgressTest/DeliverRule2_test.go +++ b/ProgressTest/diliver/DeliverRule2_test.go @@ -4,7 +4,7 @@ * @Description: */ -package ProgressTest +package diliver import ( "Go-Tool/util/rand" diff --git a/ProgressTest/DeliverRule_test.go b/ProgressTest/diliver/DeliverRule_test.go similarity index 99% rename from ProgressTest/DeliverRule_test.go rename to ProgressTest/diliver/DeliverRule_test.go index a3ac009..447976a 100644 --- a/ProgressTest/DeliverRule_test.go +++ b/ProgressTest/diliver/DeliverRule_test.go @@ -4,7 +4,7 @@ * @Description:在工程中有一个需求是对 指定数量的数组进行划分,按照每一层的规则分成对应数量,这边做一个测试.(这种方式写的代码太麻烦了,直接废弃,后面有机会再弄) */ -package ProgressTest +package diliver import ( "Go-Tool/util/rand" diff --git a/ProgressTest/OrderRule.go b/ProgressTest/diliver/OrderRule.go similarity index 98% rename from ProgressTest/OrderRule.go rename to ProgressTest/diliver/OrderRule.go index fbecf09..044ad7d 100644 --- a/ProgressTest/OrderRule.go +++ b/ProgressTest/diliver/OrderRule.go @@ -4,7 +4,7 @@ * @Description: */ -package ProgressTest +package diliver import "github.com/ahmetb/go-linq" diff --git a/ProgressTest/deliverData.json b/ProgressTest/diliver/deliverData.json similarity index 100% rename from ProgressTest/deliverData.json rename to ProgressTest/diliver/deliverData.json diff --git a/go.sum b/go.sum index ac95bd2..d571b8c 100644 --- a/go.sum +++ b/go.sum @@ -39,7 +39,5 @@ gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= diff --git a/readme.md b/readme.md index aca102b..d6a9e43 100644 --- a/readme.md +++ b/readme.md @@ -58,8 +58,6 @@ 2020/11/16:新增项目案例(按照一定规则对一组数据进行排序分组) -2020/11/23:修改项目案例(按照一定规则对一组数据进行排序分组) - 2020/11/25:完善linq包使用示例 2020/12/7 :更新bit位操作工作 BitTool @@ -72,9 +70,15 @@ 2020/12/16: 添加YAML和结构体转换工具 +2020/12/31:新增项目案例(角色技能树) + # 修复日志 +2020/11/23:修改项目案例(按照一定规则对一组数据进行排序分组) + 2020/12/16: 修复bitStore越位溢出的问题 +2020/12/31: 修改diliver包结构 + # mod vendor模式加载包 通过go mod的方式加载的github上面的包会有报红的问题,但是包本身是可以运行的,这样就是会有一个问题,如果你想要点击去看方法的内容,没办法做到