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

建设银行网站一直打不开seox

建设银行网站一直打不开,seox,网站的推广优化,浏览器哪个好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/240671.html

相关文章:

  • 中石油网页设计与网站建设十大最靠谱it培训机构
  • 广州平台网站建设seo营销策划
  • 河南省建设厅执业资格注册中心网站南昌seo全网营销
  • 做全景图有哪些网站企业网站优化服务
  • 手机做任务的网站有哪些内容湖南优化电商服务有限公司
  • 有没有做丝网的网站呀让顾客心动的句子
  • 腾讯学生云服务器如何做网站百度推广代理商
  • 2018网站内容和备案网络营销推广策划的步骤是什么
  • 给人做网站赚钱在线刷seo
  • 西宁网站建设的公司哪家好郑州百度推广公司地址
  • 中国广东手机网站建设手机关键词seo排名优化
  • 武汉专业做网站深圳推广系统
  • 建站代理平台seo搜索引擎优化就业指导
  • 做不锈钢百度网站哪个比较好如何做网络营销推广
  • 西樵网站制作公司互联网营销专业
  • wordpress 大型网站吗微信广告投放平台
  • 如何获取网站访客qq百度官方认证
  • 仿政府网站关键词排名优化公司哪家强
  • 效果图网站源码北京seo供应商
  • 外贸客户管理软件排名网站seo属于什么专业
  • 抖抈app软件下载seo技术中心
  • 网站推广公司推广宣传文案
  • 苹果软件做ppt下载网站有哪些内容淘宝seo搜索引擎优化
  • 建设网站必须要配置apache吗展示型网站设计公司
  • 网站定制开发四大基本原则yahoo搜索引擎入口
  • Md5(Wordpress)解密seo是搜索引擎优化
  • 中小企业网站建设示范平台百度关键词的费用是多少
  • 社保在哪个网站做增员热搜词排行榜
  • 山东企业网站备案西安seo哪家好
  • 杭州哪家公司做网站最基本的网站设计