8

2Dマップが次のように表されるプロジェクトでNumpyとPythonを使用していますndarray:

map = [[1,2,3,4,5],
       [2,3,4,2,3],
       [2,2,2,1,2],
       [3,2,1,2,3],
       [4,6,5,7,4]]
MAP_WIDTH = 5, MAP_HEIGHT = 5

オブジェクトにはタプルの場所があります:

actor.location = (3,3)

およびビュー範囲:

actor.range = 2

関数をどのように記述すればactor.view_map(map)、マップがアクターの位置を囲む領域を範囲まで返すようになりますか? たとえば(上のマップを使用)、

range = 1
location = (3, 2)
=>
[[2,3,4],
 [3,4,2],
 [2,2,1]]

しかし、アクターの範囲が広すぎる場合は、マップを -1 で塗りつぶします。

range = 1
location = (1,1)
[[-1,-1,-1],
 [-1, 1, 2],
 [-1, 2, 3]]

最も簡単なケースは範囲が 0 で、現在の正方形を返します。

range = 0
location = (1, 2)
[[2]]

特定の境界までマップをスライスするにはどうすればよいですか?

4

2 に答える 2

4

そこで、Joe Kington のおかげで、マップの周りに境界線を追加しました (-1 で塗りつぶしました)。

これが私がやった方法ですが、言語/ライブラリを使い始めたばかりなので、これはあまりPythonicではないかもしれません:

map = numpy.random.randint(10, size=(2 * World.MAP_WIDTH, 2 * World.MAP_HEIGHT))
map[0 : World.MAP_WIDTH / 4, :] = -1
map[7 * World.MAP_WIDTH / 4 : 2 * World.MAP_WIDTH, :] = -1
map[:, 0 : World.MAP_HEIGHT / 4] = -1
map[:, 7 * World.MAP_HEIGHT / 4 : 2 * World.MAP_WIDTH] = -1
于 2013-04-07T21:28:51.450 に答える