擅长:python、mysql、java
<p>把@irrelephant的观点看得更进一步(你认为这是合乎逻辑的结论或荒谬的简化):</p>
<pre><code>d = (
( ( 0, 1), ( 1, 0), ( 0,-1), (-1, 0) ),
( ( 1, 1), ( 1,-1), (-1, 1), ( 1,-1) )
)
def getSurroundingTiles(self, tile, horizontal = True, vertical = True):
index = list(self.getTiles()).index(tile)
maxtile = self.sqrtnum - 1 # Offset for 0 indexing
fhv = (horizontal, vertical)
ij = ( int(math.floor(index / self.sqrtnum)),
int(index % self.sqrtnum) )
surroundingTiles = []
for ihv in range(2):
if fhv[ihv]:
for k in range(4):
n = [sum(p) for p in zip(ij, d[ihv][k])]
if all([0 <= n[i] <= maxtile for i in range(2)]):
surroundingTiles.append(self[n[0]][n[1]])
return surroundingTiles
</code></pre>
<p>请注意:此代码未经测试。你知道吗</p>