您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ GetChanceAgainst函数代码示例

51自学网 2021-06-01 21:04:49
  C++
这篇教程C++ GetChanceAgainst函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中GetChanceAgainst函数的典型用法代码示例。如果您正苦于以下问题:C++ GetChanceAgainst函数的具体用法?C++ GetChanceAgainst怎么用?C++ GetChanceAgainst使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了GetChanceAgainst函数的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: GetChanceAgainst

void ArenaTeam::MemberLost(Player * plr, uint32 againstRating){    // called for each participant of a match after losing    for(MemberList::iterator itr = m_members.begin(); itr !=  m_members.end(); ++itr)    {        if (itr->guid == plr->GetObjectGuid())        {            // update personal rating            float chance = GetChanceAgainst(itr->personal_rating, againstRating);            float K = (itr->personal_rating < 1000) ? 48.0f : 32.0f;            // calculate the rating modification (ELO system with k=32 or k=48 if rating<1000)            int32 mod = (int32)ceil(K * (0.0f - chance));                        if(againstRating <= sWorld.getConfig(CONFIG_UINT32_LOSERNOCHANGE) || itr->personal_rating <= sWorld.getConfig(CONFIG_UINT32_LOSERNOCHANGE))                mod = 0;            else if (itr->personal_rating <= sWorld.getConfig(CONFIG_UINT32_LOSERHALFCHANGE))                mod /= 2;            itr->ModifyPersonalRating(plr, mod, GetSlot());            // update matchmaker rating             chance = GetChanceAgainst(itr->matchmaker_rating, againstRating);            K = (itr->matchmaker_rating < 1000) ? 48.0f : 32.0f;            // calculate the rating modification (ELO system with k=32 or k=48 if rating<1000)            mod = (int32)ceil(K * (0.0f - chance));            itr->ModifyMatchmakerRating(plr,mod,GetType());            // update personal played stats            itr->games_week += 1;            itr->games_season += 1;            // update the unit fields            plr->SetArenaTeamInfoField(GetSlot(), ARENA_TEAM_GAMES_WEEK,  itr->games_week);            plr->SetArenaTeamInfoField(GetSlot(), ARENA_TEAM_GAMES_SEASON,  itr->games_season);            return;        }    }}
开发者ID:Archives,项目名称:easy-mangos,代码行数:37,


示例2: GetChanceAgainst

int32 ArenaTeam::WonAgainst(uint32 againstRating){    // called when the team has won    // 'chance' calculation - to beat the opponent    float chance = GetChanceAgainst(m_stats.rating, againstRating);    // calculate the rating modification (ELO system with k=32)    int32 mod = (int32)floor(32.0f * (1.0f - chance));    // modify the team stats accordingly    FinishGame(mod);    m_stats.wins_week += 1;    m_stats.wins_season += 1;    // return the rating change, used to display it on the results screen    return mod;}
开发者ID:1thew,项目名称:mangos,代码行数:15,


示例3: ChatHandler

void ArenaTeam::MemberWon(Player * plr, uint32 againstRating){    // called for each participant after winning a match    for(MemberList::iterator itr = m_members.begin(); itr !=  m_members.end(); ++itr)    {        if (itr->guid == plr->GetObjectGuid())        {            // FG: attempt to prevent "win trading" - dont give reward to winner if player with same IP is in opposite team            Map::PlayerList const& plist = plr->GetMap()->GetPlayers();            for(Map::PlayerList::const_iterator pit = plist.begin(); pit != plist.end(); ++pit)            {                Player *pp = pit->getSource();                if( !(pp && pp->IsSessionValid() && plr->IsSessionValid()) )                    return; // something wrong                if(pp->GetSession()->GetIP() == plr->GetSession()->GetIP() && pp->IsHostileTo(plr))                {                    ChatHandler(plr).PSendSysMessage(11110, pp->GetName());                    return;                }            }            // FG: -end-            // update personal rating            float chance = GetChanceAgainst(itr->personal_rating, againstRating);            float K = (itr->personal_rating < 1000) ? 48.0f : 32.0f;            // calculate the rating modification (ELO system with k=32 or k=48 if rating<1000)            int32 mod = (int32)floor(K* (1.0f - chance));            itr->ModifyPersonalRating(plr, mod, GetSlot());            // update personal stats            itr->games_week += 1;            itr->games_season += 1;            itr->wins_season += 1;            itr->wins_week += 1;            // update unit fields            plr->SetArenaTeamInfoField(GetSlot(), ARENA_TEAM_GAMES_WEEK, itr->games_week);            plr->SetArenaTeamInfoField(GetSlot(), ARENA_TEAM_GAMES_SEASON, itr->games_season);            return;        }    }}
开发者ID:Aldrealia,项目名称:mangos,代码行数:41,


示例4: GetChanceAgainst

void ArenaTeam::MemberWon(Player * plr, uint32 againstRating){    // We handle personal rating for Solo Queue in Arena Team win or lost function    if (GetType() == ARENA_TEAM_5v5)        return;    // called for each participant after winning a match    for (MemberList::iterator itr = m_members.begin(); itr != m_members.end(); ++itr)    {        if (itr->guid == plr->GetGUID())        {            // update personal rating            float chance = GetChanceAgainst(itr->personal_rating, againstRating);            int32 mod = (int32)floor(32.0f * (1.0f - chance));            if (GetType() == ARENA_TEAM_2v2)            {                if (m_stats.rating < 1850)                    mod += 2;                if (mod == 30)                    mod++;                if (mod < 3)                    mod = 3;            }            itr->ModifyPersonalRating(plr, mod, GetSlot());            // update personal stats            itr->games_week +=1;            itr->games_season +=1;            itr->wins_season += 1;            itr->wins_week += 1;            // update unit fields            plr->SetArenaTeamInfoField(GetSlot(), ARENA_TEAM_GAMES_WEEK, itr->games_week);            plr->SetArenaTeamInfoField(GetSlot(), ARENA_TEAM_GAMES_SEASON, itr->games_season);            return;        }    }}
开发者ID:Blumfield,项目名称:TBCPvP,代码行数:38,


示例5: GetChanceAgainst

int32 ArenaTeam::OfflineMemberLost(uint64 guid, uint32 againstRating){    // called for offline player after ending rated arena match!    for(MemberList::iterator itr = m_members.begin(); itr !=  m_members.end(); ++itr)    {        if (itr->guid == guid)        {            // update personal rating            float chance = GetChanceAgainst(itr->personal_rating, againstRating);            float K = (itr->personal_rating < 1000) ? 48.0f : 32.0f;            // calculate the rating modification (ELO system with k=32 or k=48 if rating<1000)            int32 mod = (int32)ceil(K * (0.0f - chance));            if (int32(itr->personal_rating) + mod < 0)                itr->personal_rating = 0;            else                itr->personal_rating += mod;            // update personal played stats            itr->games_week += 1;            itr->games_season += 1;            return mod;        }    }return 0;}
开发者ID:Archives,项目名称:try,代码行数:23,


示例6: GetChanceAgainst

void ArenaTeam::MemberWon(Player* plr, uint32 againstRating){    // called for each participant after winning a match    for (MemberList::iterator itr = m_members.begin(); itr !=  m_members.end(); ++itr)    {        if (itr->guid == plr->GetObjectGuid())        {            // update personal rating            float chance = GetChanceAgainst(itr->personal_rating, againstRating);            int32 mod = (int32)floor(32.0f * (1.0f - chance));            itr->ModifyPersonalRating(plr, mod, GetSlot());            // update personal stats            itr->games_week += 1;            itr->games_season += 1;            itr->wins_season += 1;            itr->wins_week += 1;            // update unit fields            plr->SetArenaTeamInfoField(GetSlot(), ARENA_TEAM_GAMES_WEEK, itr->games_week);            plr->SetArenaTeamInfoField(GetSlot(), ARENA_TEAM_GAMES_SEASON, itr->games_season);            return;        }    }}
开发者ID:AlexHjelm,项目名称:Core,代码行数:23,


示例7: GetChanceAgainst

void ArenaTeam::MemberLost(Player * plr, uint32 againstRating){    // called for each participant of a match after losing    for(MemberList::iterator itr = m_members.begin(); itr !=  m_members.end(); ++itr)    {        if(itr->guid == plr->GetGUID())        {            // update personal rating            float chance = GetChanceAgainst(itr->personal_rating, againstRating);            float K = (itr->personal_rating < 1000) ? 48.0f : 32.0f;            // calculate the rating modification (ELO system with k=32 or k=48 if rating<1000)            int32 mod = (int32)ceil(K * (0.0f - chance));            itr->ModifyPersonalRating(plr, mod, GetSlot());            // update personal played stats            itr->games_week += 1;            itr->games_season += 1;            // update the unit fields            plr->SetArenaTeamInfoField(GetSlot(), ARENA_TEAM_GAMES_WEEK,  itr->games_week);            plr->SetArenaTeamInfoField(GetSlot(), ARENA_TEAM_GAMES_SEASON,  itr->games_season);            return;        }    }}
开发者ID:xruell,项目名称:mangos,代码行数:23,


示例8: GetChanceAgainst

void ArenaTeam::MemberWon(Player * plr, uint32 againstRating){    // called for each participant after winning a match    for(MemberList::iterator itr = members.begin(); itr !=  members.end(); ++itr)    {        if(itr->guid == plr->GetGUID())        {            // update personal rating            float chance = GetChanceAgainst(itr->personal_rating, againstRating);            int32 mod = (int32)floor(32.0f * (1.0f - chance));            itr->ModifyPersonalRating(plr, mod, GetSlot());            // update personal stats            itr->games_week +=1;            itr->games_season +=1;            itr->wins_season += 1;            itr->wins_week += 1;            // update unit fields            plr->SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + 6 * GetSlot() + 2, itr->games_week);            plr->SetUInt32Value(PLAYER_FIELD_ARENA_TEAM_INFO_1_1 + 6 * GetSlot() + 3, itr->games_season);            return;        }    }}
开发者ID:Trizzor,项目名称:uecore,代码行数:23,


示例9: GetChanceAgainst

int32 ArenaTeam::GetRatingMod(uint32 ownRating, uint32 opponentRating, bool won /*, float confidence_factor*/){    // 'Chance' calculation - to beat the opponent    // This is a simulation. Not much info on how it really works    float chance = GetChanceAgainst(ownRating, opponentRating);    float won_mod = (won) ? 1.0f : 0.0f;    // Calculate the rating modification    float mod;    // TODO: Replace this hack with using the confidence factor (limiting the factor to 2.0f)    if (won && ownRating < 1300)    {        if (ownRating < 1000)            mod = 48.0f * (won_mod - chance);        else            mod = (24.0f + (24.0f * (1300.0f - float(ownRating)) / 300.0f)) * (won_mod - chance);    }    else        mod = 24.0f * (won_mod - chance);    return (int32)ceil(mod);}
开发者ID:Crash911,项目名称:RaptoredSkyFire,代码行数:23,


示例10: GetChanceAgainst

int32 ArenaTeam::GetRatingMod(uint32 own_rating, uint32 enemy_rating, bool won, bool calculating_mmr){    // 'chance' calculation - to beat the opponent    float chance = GetChanceAgainst(own_rating, enemy_rating);    float won_mod = (won) ? 1.0f : 0.0f;    // calculate the rating modification    // simulation on how it works. Not much info on how it really works    float mod;    if (won && !calculating_mmr)    {        if (own_rating < 1000)            mod = 48.0f * (won_mod - chance);        else if (own_rating < 1300)            mod = (24.0f + (24.0f * (1300.0f - int32(own_rating)) / 300.0f)) * (won_mod - chance);        else            mod = 24.0f * (won_mod - chance);    }    else        mod = 24.0f * (won_mod - chance);    return (int32)ceil(mod);}
开发者ID:Ballwinkle,项目名称:SkyFireEMU,代码行数:24,


示例11: GetChanceAgainst

int32 ArenaTeam::LostAgainst(uint32 againstRating){    // called when the team has lost    //'chance' calculation - to loose to the opponent    float chance = GetChanceAgainst(stats.rating,againstRating);    // calculate the rating modification (ELO system with k=32)    int32 mod = (int32)ceil(32.0f * (0.0f - chance));    // modify the team stats accordingly    stats.rating += mod;    stats.games_week += 1;    stats.games_season += 1;    //update team's rank    stats.rank = 1;    ObjectMgr::ArenaTeamMap::iterator i = objmgr.GetArenaTeamMapBegin();    for ( ; i != objmgr.GetArenaTeamMapEnd(); ++i)    {        if (i->second->GetType() == this->Type && i->second->GetStats().rating > stats.rating)            ++stats.rank;    }    // return the rating change, used to display it on the results screen    return mod;}
开发者ID:CWN,项目名称:mangos,代码行数:24,


示例12: GetChanceAgainst

int32 ArenaTeam::GetPersonalRatingMod(int32 base_rating, uint32 own_rating, uint32 enemy_rating){    float chance = GetChanceAgainst(own_rating, enemy_rating);    chance *= 2.0f;    return (int32)ceil(float(base_rating) * chance);}
开发者ID:sensibob,项目名称:tempestcore,代码行数:6,



注:本文中的GetChanceAgainst函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ GetChar函数代码示例
C++ GetCenter函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。