Python独学#9(将棋)
Pythonでシンプルな将棋アプリを作るには、まずGUI(例えばtkinter)を使った盤面表示と、駒の移動処理の基本から始めるのがおすすめです。以下は、9×9の将棋盤を表示し、駒を簡易的に動かせる入門版コードです。
【将棋アプリ(初級版)Pythonコード】
import tkinter as tk
CELL_SIZE = 60
BOARD_SIZE = 9
# 駒の初期配置(簡略化版:歩と王のみ)
initial_board = [
["", "", "", "", "玉", "", "", "", ""],
["歩", "歩", "歩", "歩", "歩", "歩", "歩", "歩", "歩"],
] + [[""] * BOARD_SIZE for _ in range(7)]
class ShogiApp:
def __init__(self, root):
self.root = root
self.root.title("将棋アプリ")
self.canvas = tk.Canvas(root, width=BOARD_SIZE*CELL_SIZE, height=BOARD_SIZE*CELL_SIZE)
self.canvas.pack()
self.board = [row[:] for row in initial_board]
self.selected = None
self.canvas.bind("<Button-1>", self.on_click)
self.draw_board()
def draw_board(self):
self.canvas.delete("all")
for i in range(BOARD_SIZE):
for j in range(BOARD_SIZE):
x1 = j * CELL_SIZE
y1 = i * CELL_SIZE
x2 = x1 + CELL_SIZE
y2 = y1 + CELL_SIZE
self.canvas.create_rectangle(x1, y1, x2, y2, fill="burlywood")
piece = self.board[i][j]
if piece:
self.canvas.create_text((x1+x2)//2, (y1+y2)//2, text=piece, font=("Arial", 20))
def on_click(self, event):
col = event.x // CELL_SIZE
row = event.y // CELL_SIZE
if self.selected:
prev_row, prev_col = self.selected
if (prev_row, prev_col) != (row, col):
self.board[row][col] = self.board[prev_row][prev_col]
self.board[prev_row][prev_col] = ""
self.selected = None
else:
if self.board[row][col]:
self.selected = (row, col)
self.draw_board()
if __name__ == "__main__":
root = tk.Tk()
app = ShogiApp(root)
root.mainloop()【このアプリでできること】
• 将棋盤(9×9マス)の表示
• 歩と王の初期配置
• 駒の選択・移動(ドラッグなし、クリックで移動)
• ルールなしの自由移動(本格的な将棋ルールは未実装)
【将棋アプリ拡張プラン】
◆ 段階1:本格的な将棋ルール対応
• 駒の種類(歩・香・桂・銀・金・角・飛・玉)
• 駒の成り(例:成銀・と金など)
• 各駒の移動ルール
• 打ち駒処理(持ち駒管理)
• 王手・詰み判定
• 千日手・連続王手禁止(簡易版でもOK)
◆ 段階2:2人対戦(ローカル)
• プレイヤー交代(先手/後手)
• 先手・後手の駒の向きや色の違い
• ターン管理表示
◆ 段階3:AI対戦モード
• ミニマックス法 + αβ枝刈り(中級レベル)
• 評価関数による盤面評価
• 難易度設定(初級・中級)
• ランダム性を少し混ぜる(自然な動き)
【開発スタイル提案】
Pythonでは以下のライブラリを併用するのが効果的です。
ライブラリ
用途
tkinter
GUI(盤面・駒表示)
shogiライブラリ
本格将棋ルール(合法手生成など)
pygame
アニメーション・音声追加
【はじめに:shogiライブラリ+tkinter版】
以下のようなコード構成で、本格将棋アプリを作れます:
shogi_app/
├─ main.py # tkinterベースの盤面・UI表示
├─ ai_engine.py # AI思考(MiniMaxなど)
├─ board_logic.py # 駒移動・合法手生成(shogiライブラリ)
├─ assets/ # 駒画像、効果音「本格ルール+2人対戦」対応の将棋アプリ(Python / tkinter)の完成版ベースコードを以下からダウンロードできます:
【内容】
• main.py: GUIとプレイヤー交代管理
• board_logic.py: 駒の初期配置と簡易移動ロジック
• 本格的な将棋の駒配置・2人で交互にプレイ可能
• 成り・持ち駒・AI未対応(今後追加可能)
【実行方法】
cd shogi_app
python main.pyAI対戦対応の将棋アプリ(Python / tkinter)完成版はこちらからダウンロードできます:
【このバージョンの機能】
• 先手:人間、後手:AI(ランダム移動)
• 本格的な駒の初期配置
• 駒の合法移動を簡易ロジックで制限
• ターン制&AIの自動応答(約0.5秒後に指す)
【実行方法】
cd shogi_app
python main.py将棋アプリも作成できるとはPython恐るべし
ご精読ありがとうございました😊
