本文整理汇总了C++中WorldModel::existKickableTeammate方法的典型用法代码示例。如果您正苦于以下问题:C++ WorldModel::existKickableTeammate方法的具体用法?C++ WorldModel::existKickableTeammate怎么用?C++ WorldModel::existKickableTeammate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WorldModel
的用法示例。
在下文中一共展示了WorldModel::existKickableTeammate方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: min
/*!
*/
double
Strategy::get_normal_dash_power( const WorldModel & wm )
{
static bool s_recover_mode = false;
if ( wm.self().staminaModel().capacityIsEmpty() )
{
return std::min( ServerParam::i().maxDashPower(),
wm.self().stamina() + wm.self().playerType().extraStamina() );
}
const int self_min = wm.interceptTable()->selfReachCycle();
const int mate_min = wm.interceptTable()->teammateReachCycle();
const int opp_min = wm.interceptTable()->opponentReachCycle();
// check recover
if ( wm.self().staminaModel().capacityIsEmpty() )
{
s_recover_mode = false;
}
else if ( wm.self().stamina() < ServerParam::i().staminaMax() * 0.5 )
{
s_recover_mode = true;
}
else if ( wm.self().stamina() > ServerParam::i().staminaMax() * 0.7 )
{
s_recover_mode = false;
}
/*--------------------------------------------------------*/
double dash_power = ServerParam::i().maxDashPower();
const double my_inc
= wm.self().playerType().staminaIncMax()
* wm.self().recovery();
if ( wm.ourDefenseLineX() > wm.self().pos().x
&& wm.ball().pos().x < wm.ourDefenseLineX() + 20.0 )
{
dlog.addText( Logger::TEAM,
__FILE__": (get_normal_dash_power) correct DF line. keep max power" );
// keep max power
dash_power = ServerParam::i().maxDashPower();
}
else if ( s_recover_mode )
{
dash_power = my_inc - 25.0; // preffered recover value
if ( dash_power < 0.0 ) dash_power = 0.0;
dlog.addText( Logger::TEAM,
__FILE__": (get_normal_dash_power) recovering" );
}
// exist kickable teammate
else if ( wm.existKickableTeammate()
&& wm.ball().distFromSelf() < 20.0 )
{
dash_power = std::min( my_inc * 1.1,
ServerParam::i().maxDashPower() );
dlog.addText( Logger::TEAM,
__FILE__": (get_normal_dash_power) exist kickable teammate. dash_power=%.1f",
dash_power );
}
// in offside area
else if ( wm.self().pos().x > wm.offsideLineX() )
{
dash_power = ServerParam::i().maxDashPower();
dlog.addText( Logger::TEAM,
__FILE__": in offside area. dash_power=%.1f",
dash_power );
}
else if ( wm.ball().pos().x > 25.0
&& wm.ball().pos().x > wm.self().pos().x + 10.0
&& self_min < opp_min - 6
&& mate_min < opp_min - 6 )
{
dash_power = bound( ServerParam::i().maxDashPower() * 0.1,
my_inc * 0.5,
ServerParam::i().maxDashPower() );
dlog.addText( Logger::TEAM,
__FILE__": (get_normal_dash_power) opponent ball dash_power=%.1f",
dash_power );
}
// normal
else
{
dash_power = std::min( my_inc * 1.7,
ServerParam::i().maxDashPower() );
dlog.addText( Logger::TEAM,
__FILE__": (get_normal_dash_power) normal mode dash_power=%.1f",
dash_power );
}
return dash_power;
}