2016-11-04 66 views
1

我正在使用繼承,我沒有問題。 我有這個向量的字符串(基本上是一個二維數組的char)。C++發現二維數組中兩點之間的距離

確切的中間是鯊魚的位置,鯊魚 的性格根據其他魚的位置而變化。

例如

..... 
..... 
^.l.. 
..... 
..... 

的箭頭是其中所述魚是並且由於魚是向左。鯊魚變成'l'

.>... 
..... 
..u.. 
..... 
..... 

箭是魚的地方,因爲魚是起來。鯊魚變成一個「U」

我不得不這樣做正確的代碼是這樣的:

void Shark::point(std::vector<std::string>& map){ 

if (map[0][0] != '.' || map[1][0] != '.' || map[2][0] != '.' || map[3][0] != '.' || map[4][0] != '.' || map[1][1] != '.' || map[2][1] != '.' || map[3][1] != '.'){ 
ProtoFish::m_direction = Direction::left; 
} 
if (map[0][1] != '.' || map[0][2] != '.' || map[0][3] != '.' || map[1][2] != '.'){ 
ProtoFish::m_direction = Direction::up; 
} 
if (map[4][1] != '.' || map[4][2] != '.' || map[4][3] != '.' || map[3][2] != '.'){ 
ProtoFish::m_direction = Direction::down; 
} 
if (map[0][4] != '.' || map[1][4] != '.' || map[2][4] != '.' || map[3][4] != '.' || map[4][4] != '.' || map[1][3] != '.' || map[2][3] != '.' || map[3][3] != '.'){ 
ProtoFish::m_direction = Direction::right; 
} 
} 

我基本上只是檢查,如果魚在這個地圖:

l u u u r 
    l l u r r 
    l l . r r 
    l l d r r 
    l d d d r 

哪裏如果'。' char不存在,這是魚的位置,所以鯊魚應該指向這個方向。

問題發生在有多條魚的地方。

>.... 
..>.. 
..*.. 
.>... 
..^>. 

我明白我應該做什麼,但我不知道該怎麼做,或者如何開始。目標只是讓鯊魚面臨與最近魚類相同的方向。所以基本上箭頭「最接近」中間。 有人可以幫我解決這個問題嗎? 也許就像一個單獨的函數,可以計算每個元素距中心的距離?

+1

如何開始的問題有點超出了這裏的範圍。作爲程序員從這樣一個稍大的問題開始做的第一件事是考慮每個子問題。你如何得到你的意見?你應該寫一些樣板文件代碼來閱讀某些內容嗎?你如何創建輸出?首先了解問題的界面,這些部分需要哪些信息?從小處着手,打印出來。如果你遇到困難,請寫下這樣的問題。你寫了一個很好的問題,而不是正確的問題。 – theWanderer4865

回答

0

您需要計算每條魚的距離 - 要做到這一點,您需要將魚的位置轉換爲(x,y)座標。鯊魚的位置是(0,0)座標。

..... 
..... 
^.l.. 
..... 
..... 

would be (-2,0) for the fish^

.>... 
..... 
..u.. 
..... 
..... 

would be (-1,3) for the fish > 

所以從2D座標轉換很容易做到。 對於距離,可以使用2維的pythagoros定理 - 在這種情況下,它只是 x平方的平方根+ y座標的平方。 然後,您需要另一個新陣列來存儲每條魚的距離。 然後,您需要搜索新的距離數組,以獲得最小值,其中數組的索引是魚索引(如魚的ID)。 這將給你最近的魚給鯊魚,因此你可以得到鯊魚面對正確的方式,如果有一個拳頭。 但是,如果有多條魚距離相同,則需要在這種情況下考慮一條新規則(例如,如果左邊的魚比右邊的魚多,左邊的和右邊的魚的距離相同離開 - 然後面對左邊因爲有更多的魚?或鯊魚食物 - 是一個建議)。

+0

好的,謝謝,所以我找到了每條魚從鯊魚的距離,並將它們放在一個向量中。 –

+0

我已經通過向量搜索,並找到該向量距離的最小距離的索引。我的下一個問題是:我如何將該索引與二維數組中的索引相關聯?所以我知道我的鯊魚將面對哪個方向。 –

+1

您正在尋找的鏈接是當您計算從pythag定理的距離時,您知道x和y的位置,並且您可以在x和y處調用該魚的id數組(這裏的數組意味着新的距離)。或者換一種說法 - 爲了簡化事情,你可以設置另一個新的二維數組(這樣就增加了答案),它將x,y位置作爲輸入並給出魚索引(對於距離陣列)作爲輸出。 –