クラス osl::state::SimpleState

#include <simpleState.h>

osl::state::SimpleStateに対する継承グラフ
Inheritance graph
[凡例]
osl::state::SimpleStateのコラボレーション図
Collaboration graph
[凡例]

すべてのメンバ一覧

Public メソッド

 SimpleState ()
 SimpleState (Handicap h)
virtual ~SimpleState ()
void init ()
 盤面が空の状態に初期化
void init (Handicap h)
 ハンディに応じた初期状態に初期化
void initPawnMask ()
const Piece getPieceOf (int num) const
void setPieceOf (int num, Piece p)
template<Player P>
const Piece getKingPiece () const
const Piece getKingPiece (Player P) const
template<Player P>
Position getKingPosition () const
Position getKingPosition (Player player) const
void setBoard (Position pos, Piece piece)
const PieceMask & standMask (Player p) const
const PieceMask & usedMask () const
bool isOffBoard (int num) const
void clearPawn (Player pl, Position pos)
 (internal)
void setPawn (Player pl, Position pos)
 (internal)
bool isPawnMaskSet (Player player, int x) const
template<Player P>
bool isPawnMaskSet (int x) const
void setPiece (Player player, Position pos, Ptype ptype)
void setPieceAll (Player player)
const Piece getPieceAt (Position pos) const
const PiecegetPiecePtr (Position pos) const
const Piece getPieceOnBoard (Position pos) const
bool isOnBoard (int num) const
int countPiecesOnStand (Player pl, Ptype ptype) const
 持駒の枚数を数える
template<Ptype Type>
int countPiecesOnStand (Player pl) const
 後方互換
bool hasPieceOnStand (Player player, Ptype ptype) const
template<Ptype T>
bool hasPieceOnStand (Player P) const
Piece nextPiece (Position cur, Offset diff) const
 diff方向にあるPiece を求める.
void setTurn (Player player)
Player getTurn () const
void changeTurn ()
 手番を変更する
void makeMovePass ()
bool isConsistent (bool showError=true) const
template<bool showError>
bool isAlmostValidMove (Move move) const
 エラー表示をするかどうかをtemplateパラメータにした高速化版
bool isAlmostValidMove (Move move, bool showError=true) const
 合法手かどうかを簡単に検査する.局面に依存するチェックのみ. ルール上指せない手である可能性がある場合は,isValidMove を用いる.
bool isValidMove (Move move, bool showError=true) const
 合法手かどうかを検査する. isValidMoveByRule, isAlmostValidMove をおこなう. 玉の素抜きや王手を防いでいるか, 千日手,打歩詰かどうかは検査しない.
bool isValidMoveByRule (Move move, bool showError) const
 盤面以外の部分の反則のチェック
bool isEmptyBetween (Position from, Position to, Offset offset, bool pieceExistsAtTo=false) const
bool isEmptyBetween (Position from, Position to, bool noSpaceAtTo=false) const
bool dump () const
 dump: 自分を cerr に表示する。abort 前などにデバッグに使う
void doSimpleMove (Position from, Position to, int promoteMask)
void doDropMove (Position to, Ptype ptype)
void doCaptureMove (Position from, Position to, Piece target, int promoteMask)
const SimpleState emulateCapture (Piece from, Player new_owner) const
 from で表現されたPieceをnew_ownerの持駒にした局面を作る.
const SimpleState emulateHandPiece (Player from, Player to, Ptype ptype) const
 from からto に ptypeの持駒を一枚渡した局面を作る.
const SimpleState rotate180 () const
const SimpleState flipHorizontal () const
template<bool show_error>
bool isAlmostValidMove (Move move) const

Static Public 変数

static const bool hasPawnMask = true

Protected メソッド

PieceMask & standMask (Player p)

Protected 変数

CArray< Piece, Position::SIZE > board
CArray< Piece, Piece::SIZEpieces
 全てのpieceが登録されている
CArray< PieceMask, 2 > stand_mask
CArray< BitXmask, 2 > pawnMask
CArray< CArray< char,
PTYPE_SIZE-PTYPE_BASIC_MIN >, 2 > 
stand_count
Player turn
 手番
PieceMask used_mask

Private 型

typedef SimpleState state_t

Private メソッド

int countPiecesOnStandBit (Player pl, Ptype ptype) const

フレンド

class osl::apply_move::ApplyDoUndoSimpleMove< BLACK, SimpleState >
class osl::apply_move::ApplyDoUndoSimpleMove< WHITE, SimpleState >
class osl::apply_move::ApplyDoUndoCaptureMove< BLACK, SimpleState >
class osl::apply_move::ApplyDoUndoCaptureMove< WHITE, SimpleState >
class osl::apply_move::ApplyDoUndoDropMove< BLACK, SimpleState >
class osl::apply_move::ApplyDoUndoDropMove< WHITE, SimpleState >
class osl::misc::FastCopier
std::ostream & operator<< (std::ostream &os, const SimpleState &state)
bool operator== (const SimpleState &st1, const SimpleState &st2)
 盤上の駒のみを比較する(持ち駒は見ない).

説明

simpleState.h39 行で定義されています。


型定義

osl::state::NumEffectStateで再定義されています。

simpleState.h44 行で定義されています。


コンストラクタとデストラクタ

osl::state::SimpleState::SimpleState (  )  [explicit]
osl::state::SimpleState::SimpleState ( Handicap  h  )  [explicit]
virtual osl::state::SimpleState::~SimpleState (  )  [virtual]

関数

void osl::state::SimpleState::changeTurn (  )  [inline]
void osl::state::SimpleState::clearPawn ( Player  pl,
Position  pos 
) [inline]
template<Ptype Type>
int osl::state::SimpleState::countPiecesOnStand ( Player  pl  )  const [inline]

後方互換

simpleState.h180 行で定義されています。

参照先 countPiecesOnStand().

int osl::state::SimpleState::countPiecesOnStand ( Player  pl,
Ptype  ptype 
) const [inline]

持駒の枚数を数える

simpleState.h174 行で定義されています。

参照先 osl::isBasic(), osl::PTYPE_BASIC_MIN, と stand_count.

参照元 countPiecesOnStand(), hasPieceOnStand(), PieceStandPredicate::match(), と osl::record::KanjiPrint::print().

int osl::state::SimpleState::countPiecesOnStandBit ( Player  pl,
Ptype  ptype 
) const [inline, private]
void osl::state::SimpleState::doCaptureMove ( Position  from,
Position  to,
Piece  target,
int  promoteMask 
)

osl::state::NumEffectStateで再定義されています。

void osl::state::SimpleState::doDropMove ( Position  to,
Ptype  ptype 
)

osl::state::NumEffectStateで再定義されています。

void osl::state::SimpleState::doSimpleMove ( Position  from,
Position  to,
int  promoteMask 
)

osl::state::NumEffectStateで再定義されています。

bool osl::state::SimpleState::dump (  )  const

dump: 自分を cerr に表示する。abort 前などにデバッグに使う

参照元 osl::apply_move::ApplyDoUndoDropMove< P, state::SimpleState >::prologue().

const SimpleState osl::state::SimpleState::emulateCapture ( Piece  from,
Player  new_owner 
) const

from で表現されたPieceをnew_ownerの持駒にした局面を作る.

const SimpleState osl::state::SimpleState::emulateHandPiece ( Player  from,
Player  to,
Ptype  ptype 
) const

from からto に ptypeの持駒を一枚渡した局面を作る.

const osl::state::SimpleState osl::state::SimpleState::flipHorizontal (  )  const
const Piece osl::state::SimpleState::getKingPiece ( Player  P  )  const [inline]

simpleState.h99 行で定義されています。

参照先 osl::BLACK, と osl::isValid().

template<Player P>
const Piece osl::state::SimpleState::getKingPiece (  )  const [inline]

simpleState.h96 行で定義されています。

参照先 getPieceOf().

参照元 osl::eval::ml::King8Effect::eval().

Position osl::state::SimpleState::getKingPosition ( Player  player  )  const [inline]

simpleState.h110 行で定義されています。

参照先 osl::BLACK, と osl::isValid().

template<Player P>
Position osl::state::SimpleState::getKingPosition (  )  const [inline]
const Piece osl::state::SimpleState::getPieceAt ( Position  pos  )  const [inline]
const Piece osl::state::SimpleState::getPieceOf ( int  num  )  const [inline]
const Piece osl::state::SimpleState::getPieceOnBoard ( Position  pos  )  const [inline]
const Piece* osl::state::SimpleState::getPiecePtr ( Position  pos  )  const [inline]

simpleState.h161 行で定義されています。

参照先 board, と osl::Position::index().

Player osl::state::SimpleState::getTurn (  )  const [inline]
template<Ptype T>
bool osl::state::SimpleState::hasPieceOnStand ( Player  P  )  const [inline]

simpleState.h187 行で定義されています。

参照先 countPiecesOnStand().

bool osl::state::SimpleState::hasPieceOnStand ( Player  player,
Ptype  ptype 
) const [inline]

simpleState.h183 行で定義されています。

参照先 countPiecesOnStand().

参照元 isAlmostValidMove(), と osl::state::NumEffectState::isAlmostValidMove().

void osl::state::SimpleState::init ( Handicap  h  ) 

ハンディに応じた初期状態に初期化

void osl::state::SimpleState::init (  ) 

盤面が空の状態に初期化

void osl::state::SimpleState::initPawnMask (  ) 

参照元 flipHorizontal(), と rotate180().

template<bool show_error>
bool osl::state::SimpleState::isAlmostValidMove ( Move  move  )  const [inline]
bool osl::state::SimpleState::isAlmostValidMove ( Move  move,
bool  showError = true 
) const

合法手かどうかを簡単に検査する.局面に依存するチェックのみ. ルール上指せない手である可能性がある場合は,isValidMove を用いる.

局面に依存する検査でも,玉の素抜きや王手を防いでいるか, 千日手,打歩詰かどうかは検査しない.

osl::state::NumEffectStateで再定義されています。

template<bool showError>
bool osl::state::SimpleState::isAlmostValidMove ( Move  move  )  const [inline]

エラー表示をするかどうかをtemplateパラメータにした高速化版

osl::state::NumEffectStateで再定義されています。

bool osl::state::SimpleState::isConsistent ( bool  showError = true  )  const
bool osl::state::SimpleState::isEmptyBetween ( Position  from,
Position  to,
bool  noSpaceAtTo = false 
) const [inline]
引数:
from - マスの位置
to - マスの位置 fromとtoがクイーンで利きがある位置関係にあるという前提 で,間が全部空白かをチェック

simpleState.h278 行で定義されています。

参照先 osl::Board_Table, osl::BoardTable::getShortOffset(), isEmptyBetween(), と osl::Position::isOnBoard().

bool osl::state::SimpleState::isEmptyBetween ( Position  from,
Position  to,
Offset  offset,
bool  pieceExistsAtTo = false 
) const [inline]
引数:
from - マスの位置
to - マスの位置
offset - fromからtoへのshort offset fromとtoがクイーンで利きがある位置関係にあるという前提 で,間が全部空白かをチェック
pieceExistsAtTo - toに必ず駒がある (toが空白でも動く)

simpleState.h259 行で定義されています。

参照先 osl::Board_Table, getPieceAt(), osl::BoardTable::getShortOffset(), osl::Piece::isEmpty(), osl::Position::isOnBoard(), と osl::Offset::zero().

参照元 osl::state::NumEffectState::hasEffectFromTo(), isEmptyBetween(), osl::search::StateElements::validCaptureMove(), と osl::search::StateElements::validSimpleMove().

bool osl::state::SimpleState::isOffBoard ( int  num  )  const [inline]

simpleState.h131 行で定義されています。

参照先 osl::BLACK, standMask(), と osl::WHITE.

bool osl::state::SimpleState::isOnBoard ( int  num  )  const [inline]

simpleState.h168 行で定義されています。

参照先 getPieceOf(), と osl::Piece::isOnBoard().

参照元 osl::state::NumEffectState::NumEffectState().

template<Player P>
bool osl::state::SimpleState::isPawnMaskSet ( int  x  )  const [inline]

simpleState.h151 行で定義されています。

参照先 isPawnMaskSet().

参照元 isPawnMaskSet().

bool osl::state::SimpleState::isPawnMaskSet ( Player  player,
int  x 
) const [inline]

simpleState.h145 行で定義されています。

参照先 pawnMask.

参照元 isAlmostValidMove(), と osl::state::NumEffectState::isAlmostValidMove().

bool osl::state::SimpleState::isValidMove ( Move  move,
bool  showError = true 
) const

合法手かどうかを検査する. isValidMoveByRule, isAlmostValidMove をおこなう. 玉の素抜きや王手を防いでいるか, 千日手,打歩詰かどうかは検査しない.

参照元 osl::ntesuki::NtesukiSimulationSearcher::isSafeMove().

bool osl::state::SimpleState::isValidMoveByRule ( Move  move,
bool  showError 
) const

盤面以外の部分の反則のチェック

本来はstatic にできるが,急いでいるので後回し

参照元 isAlmostValidMove(), と osl::state::NumEffectState::isAlmostValidMove().

void osl::state::SimpleState::makeMovePass (  )  [inline]

osl::state::NumEffectStateで再定義されています。

simpleState.h221 行で定義されています。

参照先 changeTurn().

Piece osl::state::SimpleState::nextPiece ( Position  cur,
Offset  diff 
) const [inline]

diff方向にあるPiece を求める.

戻り値:
盤外ならPTYPE_EDGE

simpleState.h200 行で定義されています。

参照先 osl::Piece::EMPTY(), getPieceAt(), と osl::Offset::zero().

const osl::state::SimpleState osl::state::SimpleState::rotate180 (  )  const
void osl::state::SimpleState::setBoard ( Position  pos,
Piece  piece 
) [inline]
void osl::state::SimpleState::setPawn ( Player  pl,
Position  pos 
) [inline]
void osl::state::SimpleState::setPiece ( Player  player,
Position  pos,
Ptype  ptype 
)

参照元 flipHorizontal(), と rotate180().

void osl::state::SimpleState::setPieceAll ( Player  player  ) 
void osl::state::SimpleState::setPieceOf ( int  num,
Piece  p 
) [inline]
void osl::state::SimpleState::setTurn ( Player  player  )  [inline]

simpleState.h209 行で定義されています。

参照先 turn.

参照元 flipHorizontal(), と rotate180().

const PieceMask& osl::state::SimpleState::standMask ( Player  p  )  const [inline]

simpleState.h127 行で定義されています。

参照先 stand_mask.

PieceMask& osl::state::SimpleState::standMask ( Player  p  )  [inline, protected]
const PieceMask& osl::state::SimpleState::usedMask (  )  const [inline]

simpleState.h130 行で定義されています。

参照先 used_mask.


フレンドと関連する関数

std::ostream& operator<< ( std::ostream &  os,
const SimpleState state 
) [friend]
bool operator== ( const SimpleState st1,
const SimpleState st2 
) [friend]

盤上の駒のみを比較する(持ち駒は見ない).

なお、駒番に非依存な局面比較をしたい場合は、oslrecord::CompactBoardや osl::hash::HashKeyを用いる.

friend class osl::apply_move::ApplyDoUndoCaptureMove< BLACK, SimpleState > [friend]

simpleState.h71 行で定義されています。

friend class osl::apply_move::ApplyDoUndoCaptureMove< WHITE, SimpleState > [friend]

simpleState.h72 行で定義されています。

friend class osl::apply_move::ApplyDoUndoDropMove< BLACK, SimpleState > [friend]

simpleState.h73 行で定義されています。

friend class osl::apply_move::ApplyDoUndoDropMove< WHITE, SimpleState > [friend]

simpleState.h74 行で定義されています。

friend class osl::apply_move::ApplyDoUndoSimpleMove< BLACK, SimpleState > [friend]

simpleState.h69 行で定義されています。

friend class osl::apply_move::ApplyDoUndoSimpleMove< WHITE, SimpleState > [friend]

simpleState.h70 行で定義されています。

friend class osl::misc::FastCopier [friend]

osl::state::NumEffectStateで再定義されています。

simpleState.h75 行で定義されています。


変数

CArray<Piece,Position::SIZE> osl::state::SimpleState::board [protected]

simpleState.h52 行で定義されています。

参照元 getPieceAt(), getPiecePtr(), と setBoard().

const bool osl::state::SimpleState::hasPawnMask = true [static]

simpleState.h46 行で定義されています。

CArray<BitXmask,2> osl::state::SimpleState::pawnMask [protected]

simpleState.h62 行で定義されています。

参照元 clearPawn(), isPawnMaskSet(), osl::state::operator==(), と setPawn().

CArray<CArray<char,PTYPE_SIZE-PTYPE_BASIC_MIN>,2> osl::state::SimpleState::stand_count [protected]
CArray<PieceMask,2> osl::state::SimpleState::stand_mask [protected]

simpleState.h61 行で定義されています。

参照元 standMask().

PieceMask osl::state::SimpleState::used_mask [protected]

simpleState.h67 行で定義されています。

参照元 usedMask().


このクラスの説明は次のファイルから生成されました:
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義
Sun May 16 09:59:00 2010に生成されました。  doxygen 1.6.3