「Kyokumen::Kyokumen(int tesu,KomaInf board[9][9],int Motigoma[])」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
Kyokumen::Kyokumen(int tesu,KomaInf board[9][9],int Motigoma[])
*概要
-[[kyokumen.cpp]]にて定義
-局面のコンストラクタ
*引数
-tesu
-board
-Motigoma
*実装
-盤面および盤面パディングを壁で埋める
--盤面パディングは桂馬の聴き用(とコメントにあるが後で確認)
-ループ(全位置)
--引数boardからbanを生成
---boardは二次元配列で、棋譜と同じインデクシング
---banのインデックスは一次元配列で、段の中の並びが棋譜と左右が逆
---(なんでわざわざ逆にしたのか)
--局面ハッシュ値の更新
---ハッシュ値^=[[HashSeed>Kyokumen::HashInit()]][駒の種類][位置]
--自玉、敵玉の位置を記憶
--駒の価値を積算
---価値はKomaValue[駒種類]
-ループ(駒種類)
--MotigomaからHandを生成
---Hand[駒種類]は持ち駒の数
--持ち駒の価値を積算
---価値はHandValue[種類]*数
---ループ(その駒種類の持ち駒の数)
---→持ち駒ハッシュ値の更新
-局面ハッシュ値と持ち駒ハッシュ値からハッシュ値を計算
--(局面ハッシュ値という名前だが、盤面ハッシュもしくは盤上ハッシュと呼びたい)
-履歴初期化
--Tesuより前の履歴を0で初期化
--HashHistory[Tesu]=HashVal;
--OuteHistory[Tesu]=((Tesu%2)==0)?controlS[kingE]:controlE[kingS];
-InitControl();
*呼出元