2012-10-16 30 views
0

我正在一個c + +項目,我卡住了。我試圖從一個矢量生成一個網格,該矢量包含網格中的元素。最初,這個矢量將持有類似(3,3)的東西,我只需創建一個看起來像這個XXX的網格。如果它是(3,2,1),那將是XX | X。括號中的第一個數字表示在我的網格中的X的總數(即使在X已被移除之後),並且隨後的數字表示如上所示的每列的X的數量。代一個遊戲矢量網格

我在創造一個網格,還跟蹤的去除X的,所以當我想要重建它,對於去除X的空間是存在的,沒有被覆蓋的問題。

例如:初始網格 = XXX | XX =>(5,3,2) 後來網格 = OOX | XX =>(3,1,2)

生成從電網「初始網格」很簡單,但生成後面的網格很難(對我而言)。例如,我的新向量將爲「後面的網格」保留(3,1,2)。如果我想用(3,1,2)表示法生成「後期網格」,我該怎麼做。任何幫助是極大的讚賞。

這不是一項家庭作業,這是我正在開展的一個側面項目。

+0

你在這方面做了什麼嘗試?請張貼一些代碼並解釋它的輸出是什麼以及它與你想要的不同。 –

+0

你的問題很難理解。 (3,1,2)並不唯一標識OOX | XX,除非在刪除之後有某種邏輯。 –

回答

0

二維數組是否不足以滿足您的程序要求?假設你聲明瞭最大地圖尺寸的二維數組,然後使用兩個獨立變量來表示之後的最大網格尺寸?

char Map[15][15] = {//...} 
int Width = 15; 
int Height = 15; 

//Map decreases in size... 
Width--; 
Height--; 
//all calculations are now based off of width and height(not the initial size of the array) 

if(xpos < Width) 
//do stuff 
0

聽起來像你正在處理持久性問題。我不能完全理解你正在嘗試做的,但它聽起來像是你將在形式(x:int, y:int, z:int)
被閱讀的一系列元組,其中

x = total number of 'X' 
y = 'X' before vertical bar 
z = 'X' after vertical bar 

那麼你要墊失蹤「O「X」 」。

看來問題是,你正在失去你的網格的初始狀態信息,因此不知道多少「O」與墊。

如果我是你,我只是添加另一個值來跟蹤初始狀態。這個值永遠不會改變,並且當網格第一次生成時將用「X」的初始數量填充。

所以在你的榜樣,你有:

初始網格 = XXX | XX =>(5,3,2)後來網格 = OOX | XX =>(3,1,2)

代替嘗試添加的初始狀態值的元組這樣

初始網格 = XXX | XX =>(5,3,2,)後來網格 = OOX | XX =>(3,1,2,)

現在您在形式(x:int, y:int, z:int, n:int)的元組,其中

x = total number of 'X' 
y = 'X' before vertical bar 
z = 'X' after vertical bar 
n = 'X' in initial state 

現在我們可以通過評估

確定與 'O' 至襯墊的數量
n - x = number of 'O' to pad with 

假設'X'的初始數量因元組而不同,您需要跟蹤最初的'X'狀態。跟蹤「X」的初始數量將允許您始終識別您需要爲網格的每次連續迭代填充多少「O」

+0

我想到了。所以在幾分鐘之前,我嘗試使用一個存儲我的網格的初始狀態的向量,例如當函數被調用時,向量以1'實例化。當我從原始網格中移除X時,我更改了剛剛創建的向量。我只是希望能夠重新知道O的位置。 –

+0

@ k.ken我認爲你正在推翻這一點。如果你想模擬一個網格,那爲什麼不有一個字符串向量,即'{「OOX」,「XX」}? – jrok

+0

是的,取決於你正在嘗試做什麼我認爲jrok的想法需要在這一個 –