関数へのポインタ
MovableArea create_movable_area(GameState game_state, BoardPoint board_point) {
MovableArea movable_area = { INVALID_BOARD_POINT,NULL,0 };
Cell cell;
MovableArea (*(func_table[]))(GameState, BoardPoint, Cell) = {
NULL,
get_movable_area_pwn,
NULL,
NULL,
NULL,
NULL,
NULL
};
//board_pointが有効な範囲かチェック
//有効だった場合、board_pointにどんな駒があるかチェック
if (is_boardpoint_valid(board_point)) {
cell = game_state.board[board_point.y][board_point.x];
if (func_table[cell.piece] != NULL) {
movable_area = func_table[cell.piece](game_state, board_point, cell);
}
//switch (cell.piece) {
// case EMP:
// break;
// case PWN:
// movable_area = get_movable_area_pwn(game_state, board_point, cell);
// break;
// case KNT:
// break;
// case BSP:
// break;
// case ROK:
// break;
// case QUN:
// break;
// case KNG:
// break;
// default:
// break;
//}
}
//駒の種類に応じた関数を呼んで移動範囲を取得
return movable_area;
}