0

さて、配列マップをtxtファイルに保存するコードがあります:

std::ofstream output("mapa.txt");
for(int y=0;y<worldHeight;y++) {
    for(int x=0;x<worldWidth;x++) {
        output<<scene[x][y];

        if(x<(worldWidth-1)){output<<",";}
    }
    if(y<(worldHeight-1)){output<<std::endl;}
}

while ループに統合したい:

std::ofstream output("mapa.txt");

while (true) {
    if (yPos == topOfTheWorld) {
        scene[xPos][yPos] = 2;
    } else if (yPos >= topOfTheWorld) {
        scene[xPos][yPos] = 1;
    } else if(yPos < topOfTheWorld) {
        scene[xPos][yPos] = 0;
    } else {
        scene[xPos][yPos] = 0;
    }

    output<<scene[xPos][yPos] << ",";

    //if(xPos<(worldWidth-1)){output<<",";}

    //if(yPos<(worldHeight-1)){output<<std::endl;}

    yPos++;

    if(yPos>worldHeight) {
        output<<std::endl;
        slope = random(5)-2;
        if(topOfTheWorld<(worldHeight/6)) {
            slope = 1;
        } else if(topOfTheWorld>(worldHeight-10)) {
            slope = -1;
        }
        topOfTheWorld += slope;
        yPos = 0;
        xPos++;
    }

    if (xPos>=worldWidth) {
        break;
    }

}

しかし、何らかの理由で「while」ループが無限になります... :/

私に何ができる?

4

1 に答える 1

1

コードはよさそうです。ただし、scene正しく割り当てられているかどうかはわかりません。これらを比較する方法がわからないことを示唆していyPos>worldHeightます。xPos>=worldWidth少なくとも 1 つは間違っていると思います。これにより、シーン変数の外に簡単に書き込み、yPos または xPos を上書きできます。

に変更してみてypos>=worldHeight、それが機能するかどうかを確認してください。割り当てるスペースの量を確認しない場合はscene、少し大きくしてみてください。

于 2013-09-22T13:56:06.483 に答える