簡體   English   中英

C ++ 2D矢量地圖

[英]C++ 2D vector maps

首先,我知道這個問題已經問了很多,但是我需要澄清和理解一些事情。 另外,我仍在學習c ++,目前正在從一本書和教程中學習,所以不要苛刻:)

如何為用代碼定義和修改的平台游戲制作2D地圖? 我了解基本的多維數組,但是我真的不能使用它們,因為地圖的大小將不斷變化。 我可以使用向量的向量,但是據我所知,這不再是矩形網格,更像是...

x x x x x x x x x x   
x       x . . . . .
x       x . . . . .
x x x x x x x x x x

其中x是圖塊,空間是空氣圖塊,並且未分配點。 不是網格!

我也對數組指針的工作方式感到困惑。

很抱歉在這里成為菜鳥,我仍在努力解決問題。

任何幫助將不勝感激!

如果您需要一個簡單的可調整大小的矩陣類,我肯定會選擇向量的向量。 您總是可以自己將其包裝到Matrix類中(也許通過模板化尺寸/類型)

struct Tile {
    int whatever = 0;
};

int main() {
    std::vector<std::vector<Tile>> m;
    m.resize(10);
    for(auto& v : m)
        v.resize(10);

    // Print a 10x10 0-initialized matrix
    for(auto& v : m) {
        for(auto& elements : v)
            std::cout << elements.whatever << " ";
        std::cout << std::endl;
    }
}

現場例子

向量中的內存是連續分配的,沒有“空洞”。 無論如何,如果您要調整內部向量的大小,則必須使其保持同步。

如果您認為這對您的想法來說工作量太大,請使用Matrix的 Boost BLAS功能。

暫無
暫無

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

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