AIメーカー

チャットAIを作れる、AIと遊べる
powered by ONJ.open2ch
トップに戻る

!ai にコードを書かせよう

ソース:http://hayabusa.open2ch.net/test/read.cgi/livejupiter/1680688639/
open2chさん 2023-04-05 18:57:19
概要を見る AIとチャット41
一覧に戻る
表示範囲:
A:以下が、インデントに代わって`⚪︎`を使用した将棋ゲームのコードになります。なお、前回のコードとは不要な部分を省略し、一部機能を修正しています。また、ダブルクオーテーションとシングルクオーテーションを混在させることはなるべく避けました。

```python
import random

def select_pieces(player):
"""プレイヤーが選択できる駒のリストを返す関数"""
if player == '先手':
return ['玉', '飛', '角', '金', '銀', '桂', '香', '歩']
else:
return ['玉', '飛', '角', '金', '銀', '桂', '香', '歩']

def shuffle_pieces():
"""駒の並びをシャッフルする関数"""
all_pieces = ['玉', '飛', '角', '金', '銀', '桂', '香', '歩'] * 2
random.shuffle(all_pieces)
return all_pieces

def display_board(board):
"""現在のボードを表示する関数"""
print('現在のボード:')
for row in board:
print(' '.join(row))
print()

def play_shogi():
"""将棋ゲームをプレイする関数"""
print('将棋ゲームを開始します')

player1 = input('先手のプレイヤー名を入力してください > ')
player2 = input('後手のプレイヤー名を入力してください > ')

# 先手・後手の初期駒選択
pieces1 = select_pieces('先手')
pieces2 = select_pieces('後手')

# 先手・後手の駒をシャッフル
shuffled_pieces = shuffle_pieces()

# ボードの初期化
board = [['⚪︎' for _ in range(9)] for _ in range(9)]

# 先手・後手の駒を配置
for i, piece in enumerate(shuffled_pieces):
if i < 18:
x, y = divmod(i, 9)
board[x][y] = piece
else:
break

# ターン管理用変数
turn = 1

# ゲーム開始
while True:
# ターンプレイヤーの選択
if turn % 2 == 1:
player = player1
pieces = pieces1
else:
player = player2
pieces = pieces2

# ターンプレイヤーに駒選択
while True:
print('{}の番です'.format(player))
print('残っている駒は以下の通りです:')
for i, piece in enumerate(pieces):
print('{}: {}'.format(i+1, piece))

piece_id = int(input('どの駒を使いますか? > '))
if piece_id < 1 or piece_id > len(pieces):
print('正しい番号を選んでください')
else:
break

# 駒を配置
while True:
x = int(input('x座標を選んでください > '))
y = int(input('y座標を選んでください > '))

if x < 0 or x > 8 or y < 0 or y > 8:
print('正しい座標を選んでください')
elif board[x][y] != '⚪︎':
print('その場所には既に駒があります')
else:
board[x][y] = pieces.pop(piece_id-1)
break

# ボード表示
display_board(board)

# ターン終了
turn += 1

# 終了判定
if '玉' not in pieces1 or '玉' not in pieces2:
winner = player1 if '玉' not in pieces2 else player2
print('{}の勝ちです!'.format(winner))
break
```

`⚪︎`を使用することで視覚的にインデントを表現することができます。ただし、`⚪︎`は全角のため、インデントに使う場合は半角スペース4つに相当する位置に配置するようにしてください。
2023-04-09 11:05:03 10カ月前