当前位置: 首页 > wzjs >正文

建设银行网站一直打不开app拉新怎么对接渠道

建设银行网站一直打不开,app拉新怎么对接渠道,网络培训视频如何快速完成,网站图片轮播怎么做1. 前言 LOL-Ranklysis 已经更新到 1.4 版本了,感觉大家的使用和反馈, https://github.com/wnzzer/lol-rank-record-analysis 对于一个英雄联盟战绩查询软件,对预组队(双排,乃至车队)的判断是至关重要的&am…

1. 前言

LOL-Ranklysis 已经更新到 1.4 版本了,感觉大家的使用和反馈, https://github.com/wnzzer/lol-rank-record-analysis

对于一个英雄联盟战绩查询软件,对预组队(双排,乃至车队)的判断是至关重要的,对于对喷的理由(bushi),对于预组队的针对配合有个提前量的判断,是个非常重要的功能。

在这里插入图片描述

2. 功能实现:

首先我们需要知道,通过LOL LCU 接口不提供相关的数据,因此,我们只能通过我们自己判断是否是预组队的逻辑预判他们是不是为预组队。

我们需要知道预组队的前置条件

  1. 组队最多为 2 - 5 人
  2. 最多有 4 个队伍
  3. 好友组队的概率很高

2.1. 判断好友:

我们可以把每局遇到的玩家的 puuid 提取出来,如果在同一局,在同一个队伍超过某个次数,则判断为好友

  1. 提取对局
func getOneGamePlayers(matchHistory *client.MatchHistory) map[string][]OneGamePlayer {oneGamePlayerMap := make(map[string][]OneGamePlayer)for index, games := range matchHistory.Games.Games {myTeamId := games.Participants[0].TeamIdfor i := 0; i < len(games.GameDetail.ParticipantIdentities); i++ {oneGamePlayerMap[games.GameDetail.ParticipantIdentities[i].Player.Puuid] = append(oneGamePlayerMap[games.GameDetail.ParticipantIdentities[i].Player.Puuid], OneGamePlayer{Index:          index,GameId:         games.GameId,GameCreatedAt:  games.GameCreationDate,IsMyTeam:       myTeamId == games.GameDetail.Participants[i].TeamId,GameName:       games.GameDetail.ParticipantIdentities[i].Player.SummonerName,TagLine:        games.GameDetail.ParticipantIdentities[i].Player.TagLine,ChampionId:     games.GameDetail.Participants[i].ChampionId,ChampionBase64: client.GetChampionBase64ById(games.GameDetail.Participants[i].ChampionId),Kills:          games.GameDetail.Participants[i].Stats.Kills,Deaths:         games.GameDetail.Participants[i].Stats.Deaths,Assists:        games.GameDetail.Participants[i].Stats.Assists,Win:            games.GameDetail.Participants[i].Stats.Win,QueueIdCn:      client.QueueIdToCn[games.QueueId],})}}return oneGamePlayerMap
}
  1. 添加到好友队列,比如大于 3 局为队友的数量
				if teamCount >= friendThreshold {theTeams = append(theTeams, puuid)}

2.3. 过滤好友队列:

  1. 我们可以查询本局的十个玩家,每个人的可以的好友队列提取出来之后
  2. 再与当前对局的玩家取交集,去掉不是该对局的玩家
	// 统一处理 TeamOne 和 TeamTwo 的逻辑,把可能的队伍存入 allMaybeTeamsprocessTeamForMarkers := func(team []SessionSummoner) {for _, sessionSummoner := range team {var theTeams []stringfor puuid, playRecordArr := range sessionSummoner.UserTag.RecentData.OneGamePlayersMap {// 如果不在当前对局中,跳过这个玩家的统计if !currentGamePuuids[puuid] {continue}teamCount := 0for _, playRecord := range playRecordArr {if playRecord.IsMyTeam {teamCount++}}if teamCount >= friendThreshold {theTeams = append(theTeams, puuid)}}allMaybeTeams = append(allMaybeTeams, theTeams)}}// 分别处理 TeamOne 和 TeamTwoprocessTeamForMarkers(sessionData.TeamOne)processTeamForMarkers(sessionData.TeamTwo)

2.4. 合并子区间

如果两个都是好友,一个人玩的多,一个人玩的少,玩的多的人提供的数据范围可能更大,对于多人组队识别的准确率会更高,因此要合并子区间,保留较大的区间

func removeSubsets(arrays [][]string) [][]string {// 按数组长度排序,确保先处理较大的数组sort.Slice(arrays, func(i, j int) bool {return len(arrays[i]) > len(arrays[j])})// 存储去重后的结果var result [][]stringfor _, arr := range arrays {// 判断当前数组是否被其他数组包含isSubsetFlag := falsefor _, resArr := range result {if isSubset(arr, resArr) {isSubsetFlag = truebreak}}// 如果当前数组没有被包含,就加入结果if !isSubsetFlag {result = append(result, arr)}}return result
}

2.5. 与当前对局同一队伍取交集

虽然我们前面过滤了一遍,但是并不是很严谨,只是粗过滤,实际上,好友也可能排到对面去,因此,我们需要把待映射好友队列,与红蓝两队取交集,理论上交集的结果最多有一队大于 2 个人。就把结果映射上去。

	var mergedTeams [][]stringmergedTeams = removeSubsets(allMaybeTeams)// 标记预组队信息constIndex := 0preGroupMakerConsts := []PreGroupMaker{{Name: "队伍1", Type: "success"},{Name: "队伍2", Type: "warning"},{Name: "队伍3", Type: "error"},{Name: "队伍4", Type: "info"},}for _, team := range mergedTeams {marked := falseintersectionTeamOne := intersection(team, teamOnePuuids)intersectionTeamTwo := intersection(team, teamTwoPuuids)if len(intersectionTeamOne) >= theTeamMinSum {for i := range sessionData.TeamOne {sessionSummoner := &sessionData.TeamOne[i]if oneInArr(sessionSummoner.Summoner.Puuid, intersectionTeamOne) && sessionSummoner.PreGroupMarkers.Name == "" {sessionSummoner.PreGroupMarkers = preGroupMakerConsts[constIndex]marked = true}}} else if len(intersectionTeamTwo) >= theTeamMinSum {for i := range sessionData.TeamTwo {sessionSummoner := &sessionData.TeamTwo[i]if oneInArr(sessionSummoner.Summoner.Puuid, intersectionTeamTwo) && sessionSummoner.PreGroupMarkers.Name == "" {sessionSummoner.PreGroupMarkers = preGroupMakerConsts[constIndex]marked = true}}}if marked {constIndex++}}
}

这里的 type 用于区分前端显示颜色,无其他用途

3. 后记:

预组队识别是很好用且项目组较繁琐的功能,旨在一步步拆解功能的实现即可,如果想更深的了解这个 lcu 的项目,请前往 https://github.com/wnzzer/lol-rank-record-analysis 了解更多详情哦!

http://www.dtcms.com/wzjs/512323.html

相关文章:

  • 专业做网站哪家强线上免费推广平台都有哪些
  • java web做网站盘多多网盘搜索
  • 南充网站建设费用最新热点新闻
  • 成品网站w灬源码三叶草谷歌搜索引擎大全
  • 网站seo的优化怎么做上海网站seo策划
  • 游戏开发需要学什么编程seo搜索引擎优化入门
  • 网站建设优化服务如何手机百度关键词优化
  • 开发网站实时监控上海最新政策
  • 网站项目名称seo站长综合查询
  • 彩页设计网站网络营销制度课完整版
  • 哪个做砍价活动的网站好搭建网站的步骤
  • 建电子商务网站多少钱网站策划书模板
  • 什么样的网站可以做外链象山seo外包服务优化
  • 广州五屏网站建设竞价推广出价多少合适
  • 上海网站开发一对一培训价格合肥seo管理
  • 咋做黄页网站温州网站建设开发
  • 抓取网站访客qq号码seo是啥
  • 网站备案拍照背景图企业员工培训课程
  • 怎么做视频网站美橙互联建站
  • 游戏ui设计最好的培训机构seo sem是什么职位
  • 企业信息管理系统的组成不包括东莞网站seo优化托管
  • 苹果手机做电影网站有哪些浙江网站建设推广
  • 网站建设与开发论文百度推广开户2400
  • 免费的企业建站系统百度关键词优化有效果吗
  • 网站建设维护工作关键词搜索挖掘爱网站
  • 怎么做简单的网站首页网站优化设计的基础是网站基本要素及每个细节的优化
  • 网站怎么开通微信支付百度推广优化工具
  • 代做网站的公司北京朝阳区
  • 增城微信网站建设自助建站网站模板
  • 票务网站开发端口小程序如何推广运营