lib.shogi
クラス Kyokumen

java.lang.Object
  上位を拡張 lib.shogi.Kyokumen

public class Kyokumen
extends java.lang.Object

局面(盤面・持駒・手番)を表すクラス。

導入されたバージョン:
1.0
バージョン:
1.0
作成者:
森岡 祐一 ( Morioka Yuichi )

入れ子のクラスの概要
static interface Kyokumen.View
          「先手の視点」「後手の視点」から見た局面を取得する為のクラス。
 
フィールドの概要
static int EDGE
          そのマスが"盤の外側"である事を示す定数。
static int EMPTY
          そのマスに駒が無い事を示す定数。
 
コンストラクタの概要
Kyokumen()
           
 
メソッドの概要
 void apply(Te te)
          引数で指定した手を指す。
 java.util.List<Te> getApplicableTeList()
          現在の局面で指せる手のリストを返す。
 void getApplicableTeList(java.util.List<Te> resultList)
          現在の局面で指せる手のリストを返す。
 int getMasuInfo(int x, int y)
          引数で指定したマスの情報を取得する。
 int getMochigomaNumber(boolean sente, int komaType)
          引数で指定した持駒の数を取得する。
 int getOuX(boolean sente)
          王の位置(筋)を取得する。
 int getOuY(boolean sente)
          王の位置(筋)を取得する。
 boolean getTeban()
          本インスタンスの手番を取得する。
 Kyokumen.View getViewInstance(boolean sente)
          引数で指定した側から見るViewインスタンスを生成する。
 int[][] getZOCInfo_old(boolean sente)
          引数senteで指定した方のプレイヤーのZOC(Zone Of Control)の情報を取得する。
 int[][] getZOCInfo(boolean sente)
          引数senteで指定した方のプレイヤーのZOC(Zone Of Control)の情報を取得する。
 boolean isApplicable(Te te)
          引数で指定した手が現在の局面で指せるか否かを返す。
 boolean isItteTsumi()
          この局面で詰んでいるかどうかを返す。
 boolean isOute()
          手番で無い側が王手をかけているかどうかチェック。
static void main(java.lang.String[] args)
           
 void rollback()
          インスタンスの保持する情報を一手前の局面に戻す。
 java.lang.String toString()
           
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

フィールドの詳細

EMPTY

public static final int EMPTY
そのマスに駒が無い事を示す定数。

関連項目:
定数フィールド値

EDGE

public static final int EDGE
そのマスが"盤の外側"である事を示す定数。

関連項目:
定数フィールド値
コンストラクタの詳細

Kyokumen

public Kyokumen()
メソッドの詳細

getViewInstance

public Kyokumen.View getViewInstance(boolean sente)
引数で指定した側から見るViewインスタンスを生成する。

パラメータ:
sente - 先手側ならtrue、後手側ならfalse。
戻り値:
生成したViewインスタンス。

getMasuInfo

public int getMasuInfo(int x,
                       int y)
引数で指定したマスの情報を取得する。 駒があるときは駒情報を、そうでないときは本クラスの定数のいずれかを返す。

パラメータ:
x - 筋。
y - 段。
戻り値:
指定したマスの情報。駒の場合は先手・後手、成り・不成の情報も含む。

getMochigomaNumber

public int getMochigomaNumber(boolean sente,
                              int komaType)
引数で指定した持駒の数を取得する。

パラメータ:
sente - 先手の持駒を取得するときはtrue、後手のときはfalse。
komaType - 持駒の種類。KomaUtilクラスのフィールドで指定する。
戻り値:
持駒の数。

getTeban

public boolean getTeban()
本インスタンスの手番を取得する。

戻り値:
先手ならtrue、後手ならfalse。

getApplicableTeList

public java.util.List<Te> getApplicableTeList()
現在の局面で指せる手のリストを返す。

戻り値:
指せる手のリスト。各要素はTeクラスのインスタンス。

getApplicableTeList

public void getApplicableTeList(java.util.List<Te> resultList)
現在の局面で指せる手のリストを返す。 getApplicableTeList()と違い、既存のListに指せる手を格納するので、インスタンス生成のコストを無くす事が出来る。

パラメータ:
resultList - このリストに指せる手を格納する。 このリストに何らかの要素が格納されていた場合は、それらはクリアされる。

isApplicable

public boolean isApplicable(Te te)
引数で指定した手が現在の局面で指せるか否かを返す。

パラメータ:
te - 指せるか否かを判定したい手。
戻り値:
指せるならtrue、指せないならfalse。

getZOCInfo

public int[][] getZOCInfo(boolean sente)
引数senteで指定した方のプレイヤーのZOC(Zone Of Control)の情報を取得する。 返り値の[x][y]要素にはx筋y段のマスに移動可能な駒の数が保存されている。

パラメータ:
sente - 先手ならtrue、後手ならfalse。
戻り値:
ZOC情報。要素数は9x9。

getZOCInfo_old

public int[][] getZOCInfo_old(boolean sente)
引数senteで指定した方のプレイヤーのZOC(Zone Of Control)の情報を取得する。 返り値の[x][y]要素にはx筋y段のマスに移動可能な駒の数が保存されている。

本メソッドは古い実装なので、使用を推奨しない。

パラメータ:
sente - 先手ならtrue、後手ならfalse。
戻り値:
ZOC情報。要素数は9x9。

apply

public void apply(Te te)
引数で指定した手を指す。

パラメータ:
te - 指し手。

rollback

public void rollback()
インスタンスの保持する情報を一手前の局面に戻す。


getOuX

public int getOuX(boolean sente)
王の位置(筋)を取得する。

パラメータ:
sente - 先手の王の位置を取得するならtrue、後手ならfalse。
戻り値:
王の筋。
導入されたバージョン:
1.0

getOuY

public int getOuY(boolean sente)
王の位置(筋)を取得する。

パラメータ:
sente - 先手の王の位置を取得するならtrue、後手ならfalse。
戻り値:
王の筋。
導入されたバージョン:
1.0

isOute

public boolean isOute()
手番で無い側が王手をかけているかどうかチェック。

戻り値:
王手ならtrue、それ以外ならfalse。
導入されたバージョン:
1.0

isItteTsumi

public boolean isItteTsumi()
この局面で詰んでいるかどうかを返す。 (次の一手で王が取れるかどうかしか見ないので、3手詰み以上は検索するなどの必要あり。)

戻り値:
詰んでいればtrue、それ以外ならfalse。
導入されたバージョン:
1.0

toString

public java.lang.String toString()
オーバーライド:
クラス java.lang.Object 内の toString

main

public static void main(java.lang.String[] args)
                 throws java.lang.Exception
例外:
java.lang.Exception