osl::move_classifier::KingOpenMove< P > Struct Template Reference

Pの王をopen checkにする手でないことをチェック. More...

`#include <kingOpenMove.h>`

## Static Public Member Functions

static bool | isMember (const NumEffectState &state, Ptype, Square from, Square to)
| king が59 rookが51->61の時，差は OFFSET -8 -> U OFFSET +8 -> D とはなるので，一直線のような気がする．ただし，そもとも， 59 - 51はpinにはならないし，今は U -> DはopenではないとしているのでOK
static bool | isMember (const NumEffectState &state, Ptype ptype, Square from, Square to, Square exceptFor)

## Static Private Member Functions

template<bool hasException>
static bool | isMemberMain (const NumEffectState &state, Ptype ptype, Square from, Square to, Square exceptFor)

## Detailed Description

template<Player P>
struct osl::move_classifier::KingOpenMove< P >

Pの王をopen checkにする手でないことをチェック.

- P==move playerの時は自殺手かどうかのチェックに使う. 王が動く場合には呼べない
- P!=move playerの時は通常のopen checkかどうかに使う.
- DropMoveの時には呼べない

Definition at line 21 of file kingOpenMove.h.

## Member Function Documentation

## isMember() [1/2]

template<Player P>

bool osl::move_classifier::KingOpenMove< P >::isMember | ( | const NumEffectState & | state,
|  | Ptype | ptype,
|  | Square | from,
|  | Square | to,
|  | Square | exceptFor )

inline static

Parameters

  exceptFor | ここからの利きは除外

Definition at line 45 of file kingOpenMove.h.

References isMemberMain().

## isMember() [2/2]

template<Player P>

bool osl::move_classifier::KingOpenMove< P >::isMember | ( | const NumEffectState & | state,
|  | Ptype | ,
|  | Square | from,
|  | Square | to )

inline static

king が59 rookが51->61の時，差は OFFSET -8 -> U OFFSET +8 -> D とはなるので，一直線のような気がする．ただし，そもとも， 59 - 51はpinにはならないし，今は U -> DはopenではないとしているのでOK

Definition at line 31 of file kingOpenMove.h.

References osl::Board_Table, osl::Piece::isPieceNum(), osl::SimpleState::kingSquare(), osl::Piece::number(), osl::SimpleState::pieceAt(), osl::NumEffectState::pinOrOpen(), and osl::PieceMask::test().

Referenced by osl::move_classifier::SafeMove< P >::isMember(), and osl::move_action::NotKingOpenFilter< P, OrigAction >::isNotKingOpenMove().

## isMemberMain()

template<osl::Player P>
template<bool hasException>

template bool osl::move_classifier::KingOpenMove< P >::isMemberMain< false > | ( | const NumEffectState & | state,
|  | Ptype | ptype,
|  | Square | from,
|  | Square | to,
|  | Square | exceptFor )

static private

守っている玉が動く状況では呼ばない

openになってしまうかどうかのチェック

移動元が王の8方向でないか openにならない

そのptypeoがそのoffsetを動きとして持つか 注: 持つ => safe でない => false を返す

Definition at line 6 of file kingOpenMove.cc.

References osl::alt(), osl::Board_Table, osl::Piece::isEmpty(), osl::SimpleState::isEmptyBetween(), osl::Square::isOnBoard(), osl::Piece::isOnBoardByOwner(), osl::Square::isPieceStand(), osl::SimpleState::pieceAt(), osl::Ptype_Table, osl::Piece::ptypeO(), and osl::Offset::zero().

Referenced by isMember().

The documentation for this struct was generated from the following files:

- kingOpenMove.h
- kingOpenMove.cc