以正确的方式从你的位置找到最接近的物体QT c ++

时间:2015-08-09 20:29:52

标签: c++ qt path-finding

我正在尝试从玩家的位置找到最接近的Healthpacks或敌人。我写了这样的话:

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++;
        }
    }
}

现在我想知道,这其实不合适。是否有更好和专业的方法来改进我的代码? (拉姆达)?

1 个答案:

答案 0 :(得分:1)

一般来说代码还不错,但还有一些改进空间。首先,您可以使变量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重命名为更清晰的内容以供将来参考。