-5

すべての位置が3つの座標(x =幅、y =高さ、床= z)で構築される2Dゲームがあります。

開始位置から終了位置までのすべてのフロアタイルのリストをスローする関数を作成しようとしました。

そして、次のコードは「不正な命令」をスローしています-例外。私は困惑しています:

std::list<Tile*> Map::getTileArea(Position positionStart, Position positionEnd)
{
    std::list<Tile*> tileAreaList;

if(positionStart.x > positionEnd.x) {
    std::swap(positionStart.x, positionEnd.x);
}

if(positionStart.y > positionEnd.y) {
    std::swap(positionStart.y, positionEnd.y);
}

if(positionStart.z > positionEnd.z) {
    std::swap(positionStart.z, positionEnd.z);
}


    for(int _x = positionStart.x; _x < positionEnd.x; _x++) {//<-Exception occurs here.
        //Procedurestepping told me that but I cannot find an explanation for this.
        for(int _y = positionStart.y; _y < positionEnd.y; _y++) {
        for(int _z = positionStart.z; _z < positionEnd.z; _z++) {
            Tile* tile = getTileByPosition(Position(_x, _y, _z));
            if(tile != NULL) {
                tileAreaList.push_back(tile);
                }
            }
        }
    }

    return tileAreaList;
}

誰か助けてもらえますか?ありがとう。

4

1 に答える 1

2

切り貼りエラーのように見えます:

if(positionStart.y > positionEnd.y) {
     std::swap(positionStart.y, positionEnd.y);
}

if(positionStart.z > positionEnd.z) {
    std::swap(positionStart.z, positionEnd.z);
}
于 2012-11-07T13:40:32.707 に答える