首先,讓我說我是初學者,這個程序是我第一次嘗試「獨奏」,所以如果我聽起來像個傻瓜,請耐心等待。使用hexes實現A-Star算法
我有一個網格的格,我想用A *找到一個路徑從一個到另一個。
六角瓷磚適合一個80×80正方形內,由這些2D座標(即,十六進制[0,0],十六進制[1,0內部存儲爲2維陣列,並在代碼中引用]等)。
它們顯示在屏幕上用「驚人」的轉變:
if (X % 2 == 0)
{
X = (X/2) * 120;
Y = Y * 80;
}
else
{
X = ((X/2) * 120);
Y = (Y * 80) + 40;
}
我有我的A *的實現設置了,但很明顯,二不吉利的東西了相鄰的十六進制6的計數爲2而不是1,而哪兩個取決於X是奇數還是偶數而不同。
我試圖就如何計算出正確的差異讀了,但我不知道從哪裏開始實施的任何變化的方法,我周圍看到。是否有一個簡單的轉換,我可以對座標系統進行簡單的轉換,我已經純粹爲了計算十六進制之間的距離,或者我可以使用的公式?
謝謝。
這個問題很混亂。任何兩個相鄰格的中心之間的距離是*相同*。這是使用hexes的全部*點*。你爲什麼會把他們中的兩個算作兩個單位?你說「顯然」就像你在說什麼一樣明顯,但我向你保證它不是。 – 2011-12-21 18:22:57
繪製其數組座標的圖片將有助於大量顯示您的問題。 – 2011-12-21 18:26:24
我覺得這裏缺少一些東西。 X在兩個分支中獲得相同的值。 – Dialecticus 2011-12-21 18:29:26