どうもーASN48です。
今回もPython学習のアウトプットをしていきます!
前回同様「退屈なことはPythonにやらせよう」の本に沿って進めていきます!
こちらの辞書型データ構造の項目にある「〇×ゲーム」のコードを書いていきます。
「スポンサーリンク」
プログラムコード
#フィールド(リスト)作成
play_field = {'上左' : ' ' , '上中' : ' ' , '上右' : ' ',
'中左' : ' ' , '中中' : ' ' , '中右' : ' ',
'下左' : ' ' , '下中' : ' ' , '下右' : ' ',}
#フィールド表示を定義
def print_field(field):
print(field['上左'] + '|' + field['上中'] + '|' + field['上右'])
print('-+-+-')
print(field['中左'] + '|' + field['中中'] + '|' + field['中右'])
print('-+-+-')
print(field['下左'] + '|' + field['下中'] + '|' + field['下右'])
turn = 'X'
for i in range(9):
print_field(play_field)
print(turn + 'の番です。どこに打ちますか?')
print('上左 上中 上右')
print('中左 中中 中右')
print('下左 下中 下右')
print('上記より選択してください。')
move = input()
play_field[move] = turn
if turn =='X':
turn ='O'
else:
turn ='X'
上記のようになります。
では実際に動かしてみます!
| |
-+-+-
| |
-+-+-
| |
Xの番です。どこに打ちますか?
上左 上中 上右
中左 中中 中右
下左 下中 下右
上記より選択してください。
中中
| |
-+-+-
|X|
-+-+-
| |
Oの番です。どこに打ちますか?
上左 上中 上右
中左 中中 中右
下左 下中 下右
上記より選択してください。
上左
O| |
-+-+-
|X|
-+-+-
| |
Xの番です。どこに打ちますか?
上左 上中 上右
中左 中中 中右
下左 下中 下右
上記より選択してください。
下右
O| |
-+-+-
|X|
-+-+-
| |X
Oの番です。どこに打ちますか?
上左 上中 上右
中左 中中 中右
下左 下中 下右
上記より選択してください。
上中
O|O|
-+-+-
|X|
-+-+-
| |X
Xの番です。どこに打ちますか?
上左 上中 上右
中左 中中 中右
下左 下中 下右
上記より選択してください。
上右
O|O|X
-+-+-
|X|
-+-+-
| |X
Oの番です。どこに打ちますか?
上左 上中 上右
中左 中中 中右
下左 下中 下右
上記より選択してください。
中右
O|O|X
-+-+-
|X|O
-+-+-
| |X
Xの番です。どこに打ちますか?
上左 上中 上右
中左 中中 中右
下左 下中 下右
上記より選択してください。
下左
O|O|X
-+-+-
|X|O
-+-+-
X| |X
Oの番です。どこに打ちますか?
上左 上中 上右
中左 中中 中右
下左 下中 下右
上記より選択してください。
若干表示がズレていて見づらいですが・・・
先行がX、後攻がOで交互に打っていき、先行のXが3つ並べて勝利しました。
しかし勝ち負けの判定までは今回できませんでした。ネット上に勝ち負けの判定までは加えたプログラムコードが載ってますので興味があれば・・・
サイトリンク:https://github.com/oreilly-japan/automatestuff-ja
上記サイトの「ch05」の中にある「fullTicTacToe2.py」です。
ではアデュー。