[英]Check value in array at specific index?
我遇到了一些麻煩...
基本上,我有一個用於存儲圖塊(帶有顏色等的基本div的二維數組)的數組,可以這樣做來更改特定圖塊的屬性;
world[x][y].style blabla somehting
現在,我開始做一些尋路,以便能夠在這些圖塊上四處走動,可以說我有一個10x10的圖塊網格,范圍從-5,-5到5.5(坐標)。
我坐在-5,-5磁貼上,然后單擊某處以“開始尋路”,尋路基本上只是找到8個相鄰的磁貼並返回它們,然后選擇一個使我靠近的磁貼,然后執行此操作直到我達到目標為止的X倍的時間。
如果我站在中間(0,0)並嘗試去某個地方,這沒問題,但是由於我處於“世界”的一角,因此在搜索相鄰的圖塊時會遇到一些問題;
-#ooo o--
--oooo o--
--oooo o--
--oooo o--
--oooo o--
可以說這是我的世界,#是角色,o是空瓦,-只是空深淵(我不能成為的地方)
現在我想去X。
-#ooo o--
--oooo o--
--oo X o o--
--oooo o--
--oooo o--
所以我開始了我的小尋路算法,但是當它從我所在的位置搜索相鄰的圖塊時,由於沒有從我的位置向左,向左,向下,向左或向上或向上的圖塊,它會返回錯誤。
-#+ oo o--
-+ + oo o--
--oooo o--
--oooo o--
--oooo o--
(+)是可用的圖塊,但它嘗試在我周圍搜索更多圖塊,這會導致錯誤。
我試圖通過使用來排除不存在的圖塊;
if (world[x][y] !== null) {}
if (world[x][y] != null) {}
if (world[x][y] !== 'undefined') {}
if (world[x][y] != 'undefined') {}
if (!world[x][y]) {}
但是然后在if語句中給出錯誤,而不是實際的“ tile returning” ...
那么,如何預先檢查特定索引處(或2個特定索引處)數組中是否有內容?
另外請注意,我的數組確實存在一些間隙,因為我的世界不僅是可行走的瓷磚。
你需要驗證的行/列world[x]
檢查前world[x][y]
if (!world[x] || !world[x][y]) {
// Tile does not exist
}else{
// Tile exists
}
如果您單獨將此行輸入到控制台中:
console.log(typeof x); //output: undefined
在沒有定義任何名為“ x”的元素的情況下,該語句的計算結果為“未定義”。
然后可能會在if ... else語句中使用typeof來檢查未定義的類型(這將是尚不存在的類型)。
解決此問題的一種有效方法是使世界更寬(12x12而不是10x10),並在所有外部圖塊中使用深淵標記。 現在,角色將永遠不會測試未定義的圖塊,並且您的算法將起作用。
我建議您在詢問“平鋪”之前檢查一下索引(x和y)。 如果您有能力要求返回一個圖塊,那么可以嘗試一點算法來檢查是否可以在什么方向上返回一個圖塊。
作為建議,您可以編寫一個函數,該函數返回實際的“相鄰/相鄰”磁貼_using_the_index_values_,同時考慮到沒有“ -5”的磁貼或“ +5的右磁貼”等。
這意味着並非所有“相鄰圖塊”陣列都將具有相同數量的圖塊,但是您可以輕松地操縱,遍歷,知道(of)長度和數組。
如果我有“尋路算法”的更多詳細信息,我也許可以編寫示例代碼。 (希望能幫助到你。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.