Closed. This question is opinion-based。它当前不接受答案。
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
4年前关闭。
我正在尝试从玩家的位置找到最近的医疗包或敌人。我这样写:
现在我想知道,这实际上是不合适的。是否有更好的专业方法来改进我的代码? (Lambda,...)?
最终代码如下所示:
您还应该将q重命名为更清晰的名称,以供将来参考。
想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
4年前关闭。
我正在尝试从玩家的位置找到最近的医疗包或敌人。我这样写:
for(auto &hp : model->getAllHealthPacks()){
if(!hp->getUsed()){
int x = hp->getXPos();
int y = hp->getYPos();
int q = (x*x)+(y*y);
if(q < smallest){
smallest = z;
hpfound = hp;
foundAHp++;
}
}
}
现在我想知道,这实际上是不合适的。是否有更好的专业方法来改进我的代码? (Lambda,...)?
最佳答案
总体而言,代码还不错,但是仍有一些改进的空间。首先,您可以使变量hp为常数,因为您没有修改变量的内容。
您还可以创建一个类来将坐标存储在这样的单个对象中
class Coordinate{
std::pair<int,int> coords;
...
};
最终代码如下所示:
for(const auto &hp : model->getAllHealthPacks()){
if(!hp->getUsed()){
Coordinate coord(hp->getCoord());
int q = coord.getX()*coord.getX()+coord.getY()*coord.getY();
if(q < smallest){
smallest = z;
hpfound = hp;
foundAHp++;
}
}
}
您还应该将q重命名为更清晰的名称,以供将来参考。
10-08 05:03