Kyokumen::Kyokumen(int tesu,KomaInf board[9][9],int Motigoma[])


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

Kyokumen::Kyokumen(int tesu,KomaInf board[9][9],int Motigoma[])

概要

引数

  • tesu
  • board
  • Motigoma

実装

  • 盤面および盤面パディングを壁で埋める
    • 盤面パディングは桂馬の聴き用(とコメントにあるが後で確認)
  • ループ(全位置)
    • 引数boardからbanを生成
      • boardは二次元配列で、棋譜と同じインデクシング
      • banのインデックスは一次元配列で、段の中の並びが棋譜と左右が逆
      • (なんでわざわざ逆にしたのか)
    • 局面ハッシュ値の更新
      • ハッシュ値^=HashSeed[駒の種類][位置]
    • 自玉、敵玉の位置を記憶
    • 駒の価値を積算
      • 価値はKomaValue[駒種類]
  • ループ(駒種類)
    • MotigomaからHandを生成
      • Hand[駒種類]は持ち駒の数
    • 持ち駒の価値を積算
      • 価値はHandValue[種類]*数
      • ループ(その駒種類の持ち駒の数)
      • →持ち駒ハッシュ値の更新
  • 局面ハッシュ値と持ち駒ハッシュ値からハッシュ値を計算
    • (局面ハッシュ値という名前だが、盤面ハッシュもしくは盤上ハッシュと呼びたい)
  • 履歴初期化
    • Tesuより前の履歴を0で初期化
    • HashHistory[Tesu]=HashVal;
    • OuteHistory[Tesu]=((Tesu%2)==0)?controlS[kingE]:controlE[kingS];
  • InitControl();

呼出元