盤面表示機能実装

盤面表示機能

盤面表示機能では、8×8の2次元配列に格納された石配置の情報(0:石なし、1:黒石、2:白石)を画面に表示するものです。それほど本質的な機能ではないかもしれませんが、そもそもオセロプログラムが正しく動作しているか確認するのに有効と思いましたので、簡易的なものを実装しました。

#盤面描画
def show_position(column, row, positions):
sentence = '    '
for c in column:
sentence += c + '   '
print(sentence)
print('  ---------------------------------')
for i in range(0, len(row)):
sentence = str(row[i])+' | '
for p in positions[i,:]:
if p == 0:
sentence += ' '
elif p == 1:
sentence += '●'
elif p == 2:
sentence += '○'
elif p == 3:
sentence += '-'
elif p == 4:
sentence += '-'
elif p == 5:
sentence += '■'
elif p == 6:
sentence += '□'
sentence += ' | '
print(sentence)
print('  ---------------------------------')

上記でcolumn及びrowは座標を示すもので、固定配列の以下を渡します。

columnArray = np.array(['a','b','c','d','e','f','g','h'])
rowArray = np.array(['1','2','3','4','5','6','7','8']).transpose()

またpositions[行、列]が8×8の2次元配列です。この情報を読み取り、1行ごとにsentenceに入力してprintしていきます(p=3~6の意味はいずれご説明します)。

実行画面

例として、以下のような配列を与えてみます。

diagram
Out[10]:
array([[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
[ 0.,  0.,  0.,  1.,  2.,  0.,  0.,  0.],
[ 0.,  0.,  0.,  2.,  1.,  0.,  0.,  0.],
[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.],
[ 0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.]])

結果はこちら。うまく動いているようです。

>>>show_position(columnArray, rowArray, diagram)
    a   b   c   d   e   f   g   h
---------------------------------
1 |   |   |   |   |   |   |   |   |
---------------------------------
2 |   |   |   |   |   |   |   |   |
---------------------------------
3 |   |   |   |   |   |   |   |   |
---------------------------------
4 |   |   |   | ● | ○ |   |   |   |
---------------------------------
5 |   |   |   | ○ | ● |   |   |   |
---------------------------------
6 |   |   |   |   |   |   |   |   |
---------------------------------
7 |   |   |   |   |   |   |   |   |
---------------------------------
8 |   |   |   |   |   |   |   |   |
---------------------------------

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA