1

私は Python の初心者で、マインスイーパ ゲームのコーディングを試みています。基本的に、リストのリストを使用してセルの 5x5 グリッドを作成し、このグリッドに 3 つの地雷をランダムに配置し、各セルの近隣の地雷の数をカウントするようにクラスを設定する方法について少し迷っています。

__init__他の 2 つのメソッドを呼び出すメソッドを使用すると考えました。1 つは地雷を配置するためのもので、もう 1 つは各セルの近傍をカウントするためのものです。

それらを設定する方法について少し迷っていますが、何か提案はありますか?

4

3 に答える 3

5

開始するための小さなコードを次に示します。

>>> import random
>>> cells = [['empty'] * 5 for i in range(5)]
>>> for i in range(3):
        x = random.randrange(5)
        y = random.randrange(5)
        cells[x][y] = 'mine'


>>> import pprint
>>> pprint.pprint(cells)
[['empty', 'empty', 'empty', 'empty', 'empty'],
 ['mine', 'empty', 'mine', 'empty', 'empty'],
 ['empty', 'empty', 'empty', 'empty', 'mine'],
 ['empty', 'empty', 'empty', 'empty', 'empty'],
 ['empty', 'empty', 'empty', 'empty', 'empty']]
于 2011-12-10T04:46:41.310 に答える
1

各セルは、2d リスト内の単なる座標 (x, y) です。したがって、私が正しく理解している場合は、3 つのランダムな座標を考え出し、それらを board[x][y] に割り当てる必要があります。

私ならこうするかも。

x = range(5)
y = range(5)

coord1_x = x.pop(randrange(5))
coord1_y = y.pop(randrange(5))

coord2_x = x.pop(randrange(4))
coord2_y = y.pop(randrange(4))

coord3_x = x.pop(randrange(3))
coord2_y = y.pop(randrange(4))

さらに鉱山が必要な場合は、これらのコード行をループに一般化し、座標をリストに入れることができます。ただし、これを行うにはもっと簡潔な方法があるかもしれません。

頭のてっぺんから隣接するセルを数える簡単な方法がわかりません。

于 2011-12-10T04:48:59.673 に答える
0

ランダムなリストを作成するには、これを行うのが最善です -

import random

x = range(10)
random.shuffle(x)

これにより、リストがその場でランダムにシャッフルされます。

または、リストからランダムに要素を取得したい場合は、試してください-

random.choice(x)
于 2011-12-10T04:50:29.593 に答える