簡體   English   中英

c ++坐標網格地圖標記坐標

[英]c++ coordinate grid map marking coordinates

ifstream myfile;
myfile.open("config.txt");

if (myfile.fail())
{
    cerr << "Error opening config file" << endl;
    myfile.close();
}

int line_no = 0;
while (line_no != 3 && getline(myfile, line3)) {
    ++line_no;
}


while (line_no != 7 && getline(myfile, line7)) {
    ++line_no;
}


while (line_no != 10 && getline(myfile, line10)) {
    ++line_no;
}


while (line_no != 14 && getline(myfile, line14)) {
    ++line_no;
}


while (line_no != 18 && getline(myfile, line18)) {
    ++line_no;
}
cout << line3 << endl;
cout << line7 << endl;
cout << line10 << endl;
cout << line14 << endl;
cout << line18 << endl;

gridXIdxA = stoi(ExtractString(line3, "=", "-"));
gridXIdxB = stoi(ExtractString(line3, "-", "\n"));
gridYIdxA = stoi(ExtractString(line7, "=", "-"));
gridYIdxB = stoi(ExtractString(line7, "-", "\n"));


cout << gridXIdxA << endl;
cout << gridXIdxB << endl;
cout << gridYIdxA << endl;
cout << gridYIdxB << endl;


int y = gridYIdxB + 1;
y > -1;
mapBoundaryX = gridXIdxB + 6;                                                           // dynamic array to print out boundary of city map
mapBoundaryY = gridYIdxB + 4;

int** dMapBoundaryArray;
dMapBoundaryArray = new int*[mapBoundaryX]();

for (int i = 0; i < mapBoundaryX; i++)
{
    dMapBoundaryArray[i] = new int[mapBoundaryY];
}


for (int i = 0; i < mapBoundaryX; i++)
{
    cout << endl;
    for (int j = 0; j < mapBoundaryY; j++)
    {
        dMapBoundaryArray[i][j] = i;
        if (i == 0 && j > 0 && j < gridXIdxB+4)
        {
            cout << "# "; // top
        }
        if (i == 0 && j == 0)
        {
            cout << " ";
        }

        if (i == (gridYIdxB+2) && j > 0 && j < gridXIdxB+4)
        {
            cout << "# "; // bottom
        }
        if (i == (gridYIdxB + 2) && j == 0)
        {
            cout << " ";
        }

        if (i>0 && i<12 && j==1)
        {
            cout << "#"; // left 
        }

        else if (i == 6 && j == 3)
        {
            cout << "  ";
            cout << 3;
        }

        else if (i == 6 && j == 4)
        {
            cout << " ";
            cout << 3;
        }

        else if (i == 7 && j == 4)
        {
            cout << " ";
            cout << 3;
        }

        else if (i > 0 && i < 12 && j == 13)   //right
        {
            cout << setw(24)<<right << "#";
        }

        if (i == 13 && j > -1 && j < 2)   //x axis 
        {
            cout << " ";
        }
        if (i == 13 && j > 1 && j < 13) 
        {
            x = x++; 
            cout <<" " << x;              //x axis 
        }

        if (j == 0 && i <= gridYIdxB+1  && i >= 1)  // y axis
        { 
            y = --y;
            cout << y;  //y axis
        }



    }
}

嗨,有一些我需要幫助的問題,目前是 C++ 的初學者,所以如果可以用簡單的術語解釋內容,我絕對感激。 我可以設法創建坐標圖的邊緣,但我還需要在地圖中查明某些坐標並將它們標記為例如。 帶有'3'。 無論如何,是否可以在不移動右側的“#”列的情況下確定坐標?

輸出在標記坐標之前

在標記坐標之前

標記坐標后

標記坐標后

您可能已經注意到,C++ 本身沒有能力在屏幕上的某個位置設置字符。 curses 是一個相當廣泛的庫,可以幫助解決這個問題。 但是,如果您想繼續使用自己的代碼,您仍然可以從 curses 處理輸出的方式中獲得一些靈感。 屏幕內容緩存在內存中,只有在您請求時才會更新所有內容。 您可以在自己的代碼中執行類似操作。 將要在屏幕上打印的內容存儲在std::vector<std::vector<char>std::vector<std::string> 根據需要修改內容,打印時您不必再擔心對齊和格式,這只是一個簡單的循環:

for (const auto& line : screen) {
    for (const auto& character : line) std::cout << character; 
    std::cout << "\n";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM