本文整理汇总了C++中Plan::moveToLocation方法的典型用法代码示例。如果您正苦于以下问题:C++ Plan::moveToLocation方法的具体用法?C++ Plan::moveToLocation怎么用?C++ Plan::moveToLocation使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Plan
的用法示例。
在下文中一共展示了Plan::moveToLocation方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Action
lionheart::Action lionheart::MathewWarenski::playSmartCharge(
Unit const &u, SituationReport report, Plan p)
{
if (u.getType() == CROWN)
{
// if (p.movesToEnemy() < 6) return p.moveToLocation(15, 15);
return Action();
}
if (p.movesToEnemyCrown() <= u.getMoveSpeed())
{
if (!p.hasAttack())
{
return p.moveToEnemyCrown();
}
}
if (u.getType() == ARCHER)
{
if (!p.hasAttack())
{
if (enemyWaiting)
{
bool kingOnWall = false;
for (int i = 0; i < 30; i++)
{
for (int j = 1; j <= 2; j++)
{
auto backwall = flipIfWest(ENEMY_EAST_WALL - j, 29);
if (report.things[i][backwall].unit == CROWN)
{
kingY = i;
kingX = backwall;
kingOnWall = true;
}
}
}
if (kingOnWall)
{
auto col = flipIfWest(29, 29);
auto loc = u.getLocation();
if (loc.row == kingY && loc.col == col)
{
if (facingEast && u.getFacing() != lionheart::Direction::WEST)
{
return turn(lionheart::Direction::WEST);
}
else if (!facingEast && u.getFacing() != lionheart::Direction::EAST)
{
return turn(lionheart::Direction::EAST);
}
return lionheart::attack({ kingY, kingX });
}
else if (report.things[kingY][col].unit == ARCHER)
{
return p.attackEnemy();
}
return p.moveToLocation(kingY, col);
}
}
return p.moveToEnemyCrown();
}
}
if (p.hasAttack())
{
return p.attackEnemy();
}
return p.moveToEnemyCrown();
}
示例2: turn
// function for game play
lionheart::Action lionheart::BrandonSmith::recommendAction(
Unit const& u, SituationReport report, Plan p)
{
++numberofturns;
auto loc = u.getLocation();
find_kings(report);
if (akingloc.col < 15) west = true;
if (akingloc.col > 15) west = false;
defpos(u, report);
setdefdir(u, report);
auto row = loc.row;
auto col = loc.col;
auto drow = defloc.row;
auto dcol = defloc.col;
if (u.getId() ==
44) // give king bodyguard and prevents draw with non attacking armies
{
if (p.hasAttack()) return p.attackEnemy();
if ((p.movesToAllyCrown() > 2) && (p.movesToEnemy() < 2))
return p.moveToEnemy();
if (p.movesToAllyCrown() > 2) return p.moveToAllyCrown();
}
if (u.getType() == CROWN) // rules for the king
{
if (p.hasAttack())
{
return p.attackEnemy();
}
if (mykingstupid(report))
{
if (west)
{
defloc.row = 14;
defloc.col = 4;
if ((row != 14) || (col != 4))
{
return p.moveToLocation(14, 4);
}
}
if (!west)
{
defloc.row = 14;
defloc.col = 25;
if ((row != 14) || (col != 25))
{
return p.moveToLocation(14, 25);
}
}
}
if ((safe(row, col, report)) && (numberofturns < 300))
{
return turn(defdir);
}
if ((!safe(row, col, report)) || (enemyinthebox(report)))
{
++whattodo;
switch (whattodo)
{
case 0:
case 1:
case 2:
case 3:
if ((west) &&
(report.things[19][3].type == lionheart::SituationReport::ALLY))
{
return p.moveToLocation(19, 2);
}
if ((west) &&
(report.things[10][3].type == lionheart::SituationReport::ALLY))
{
return p.moveToLocation(10, 2);
}
if ((west))
{
return p.moveToLocation(19, 2);
}
if ((!west) &&
(report.things[19][26].type == lionheart::SituationReport::ALLY))
{
return p.moveToLocation(19, 27);
}
if ((!west) &&
(report.things[10][26].type == lionheart::SituationReport::ALLY))
{
return p.moveToLocation(10, 27);
}
if (!west)
{
return p.moveToLocation(19, 27);
}
break;
case 4:
if (akingloc.row > 15)
{
if (p.hasAttack())
//.........这里部分代码省略.........