擅长:python、mysql、java
<p>使用数组进行存储可以节省一些CPU时间,但这种差异可能是可以忽略的。</p>
<p>但是,您错过了管理这样一个地图的非常简单的方法。假设它是行和列,只是单元格的形状略有不同。</p>
<pre><code>+--+--+--+--+--+--+--+
\/ \/ \/ \/ \/ \/ \/ Even row
/\ /\ /\ /\ /\ /\ /\ Odd row
+--+--+--+--+--+--+--+
</code></pre>
<p>对于六边形:</p>
<pre><code> __ __ __ __
/ \__/ \__/ \__/ \__ Even row
\__/ \__/ A\__/ \__/ Odd row
/ \__/ F\__/ B\__/ \__ Even row
\__/ \__/ X\__/ \__/ Odd row
/ \__/ E\__/ C\__/ \__ Even row
\__/ \__/ D\__/ \__/ Odd row
/ \__/ \__/ \__/ \__ Even row
\__/ \__/ \__/ \__/ Odd row
</code></pre>
<p>然后可以将数据存储为一个常规的二维数组。奇数行向右偏移.5,您需要找出<code>X</code>的相邻步骤:上面:<code>A = (0,-2)</code>,右上:<code>B = (1,-1)</code>,右下:<code>C = (1,1)</code>,下面:<code>D = (0,2),</code>,左下:<code>E = (0,1)</code>,左上:<code>F = (0,-1)</code></p>
<p>如果您可以浪费一点内存,那么您还可以将其他每一列都保留为空,这样邻域关系就变得更简单了:<code>(0,-2), (1,-1), (1,-1), (0,-2), (-1,-1), (-1,1)</code></p>