コンピュータプログラミング(Python) 演習(C-3-D) 三目並べプログラムの改良
Copyright © kcg.edu. All Rights Reserved.
課題(C‐3-D)課題
Copyright By PowCoder代写 加微信 powcoder
三目並べのゲームボードが与えられた時に,最も有望 な次の一手を選ぶ関数を作成せよ。
提出されたプログラム(関数)の強さを評価するため に,提出されたプログラム同士を対戦させる。
提出する関数の名前には,自分の学籍番号を用いよ。 例: M22W0000(board, player)
プログラムを開発するために,Tic_Tac_Toe.py と いうライブラリから必要な関数を import して利用し ても良い。
2022/06/27 Copyright © kcg.edu. All Rights Reserved.
課題(C‐3-D) 注意
この関数が使う他のオブジェクト(関数やデータ)は, すべてこの関数の内部で定義すること。
対戦者が同じ名前の関数やデータを参照していると,エラーが発 生するからである。
2022/06/27 Copyright © kcg.edu. All Rights Reserved.
課題(C‐3-D)プログラムの評価方法
提出されたプログラムの強さを評価し,チャンピオンを決定す るために,トーナメントを行う。
トーナメントでは,先手と後手を入れかえて何回か対戦し,勝数 の多いプログラムを勝者とする。
プログラムが出来たら,提出して下さい。提出されたプログラ ムのテストと評価を順次行います。
その結果を見てさらに改良していただいても結構です。
プログラムの最終締め切りは,7月18日の午前0時とします。
対戦結果は,7月25日の授業で発表します。
2022/06/27 Copyright © kcg.edu. All Rights Reserved.
課題のヒント(ミニマックス法)
与えられた盤面の評価値を計算する関数 score(board, player)を作成せよ
関数 score の値は,
与えられた盤面 board が,player が勝ちであれば+10とする
盤面に空いている場所がない場合には,0 とする
それ以外の場合には,その盤面の空いている場所に相手の記号を配置して得 られる盤面の評価値の中で,自分にとって最も小さい評価値をその盤面の評 価値とする
Tic-Tac-Toeのプログラムでは,関数 score()の値が最大 となる場所を次の一手として選ぶと良い
2022/06/27 Copyright © kcg.edu. All Rights Reserved.
2022/06/27 Copyright © kcg.edu. All Rights Reserved. 8
ゲームの例(先手(〇)勝)
各セルの (0) 初期状態 (1) 先手0 (2) 後手4 (3) 先手8 インデックス
(4) 後手6 (5) 先手2 (6) 後手5 (7) 先手1 先手勝
2022/06/27 Copyright © kcg.edu. All Rights Reserved. 9
ゲームの例(引き分け)
(1) 先手0 (2) 後手4 (3) 先手8 (4) 後手1 (5) 先手7
(6) 後手6 (7) 先手2 (8) 後手5 (9) 先手3 引き分け
2022/06/27 Copyright © kcg.edu. All Rights Reserved. 10
2022/06/27 Copyright © kcg.edu. All Rights Reserved. 11
ゲーム木の探索(MIN-MAX法)
2022/06/27 Copyright © kcg.edu. All Rights Reserved. 12
改良するためのその他のヒント
https://ja.wikipedia.org/wiki/ミニマックス法
アルファ・ベータ法
アルファ・ベータ法はミニマックス法と同じ結果が得られるが,計
算効率はアルファ・ベータ法の方が良い
https://ja.wikipedia.org/wiki/アルファ・ベータ法
2022/06/27 Copyright © kcg.edu. All Rights Reserved.
程序代写 CS代考 加微信: powcoder QQ: 1823890830 Email: powcoder@163.com