BOOL COseroView::CanDropDown( int x, int y, int vect_x, int vect_y )
{
int put_stone;
if( m_FlagForWhite )put_stone = WHITE_STONE;
else put_stone = BLACK_STONE;
x += vect_x;
y += vect_y;
if( x < 0 || x >= MASU_NUM || y < 0 || y >= MASU_NUM )return( FALSE );
if( m_Board[x][y] == put_stone )return( FALSE );
if( m_Board[x][y] == BLANK )return( FALSE );
x += vect_x;
y += vect_y;
while( x >= 0 && x < MASU_NUM && y >= 0 && y < MASU_NUM )
{
if( m_Board[x][y] == BLANK )return( FALSE );
if( m_Board[x][y] == put_stone )return( TRUE );
x += vect_x;
y += vect_y;
}
return( FALSE );
}
BOOL COseroView::CanDropDown( int x, int y )
{
if( x >= MASU_NUM || y >= MASU_NUM )return( FALSE );
if( m_Board[x][y] != BLANK )return( FALSE );
if( CanDropDown( x, y, 1, 0 ) )return( TRUE ); //右
if( CanDropDown( x, y, 0, 1 ) )return( TRUE ); //下
if( CanDropDown( x, y, -1, 0 ) )return( TRUE ); //左
if( CanDropDown( x, y, 0, -1 ) )return( TRUE ); //上
if( CanDropDown( x, y, 1, 1 ) )return( TRUE ); //右下
if( CanDropDown( x, y, -1, -1 ) )return( TRUE ); //左上
if( CanDropDown( x, y, 1, -1 ) )return( TRUE ); //右上
if( CanDropDown( x, y, -1, 1 ) )return( TRUE ); //左下
return( FALSE );
}
なんですが戻り値にはTRUEかFALSEか2通りありますよね。何故両方ともFALSEになるのかがわかりません。以前バグさんにはTRUEのときだけ実行されると教えていただきましたが、TRUEのときだけ実行されるなら
返す値はTRUEでは?と思いました。実際TRUEにすると正常に動かないんですが戻り値に関してまだちゃんと
理解していないのでそこの所を教えてください。