関数へのポインタ

関数へのポインタ

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;
}

 

コメントを残す

あなたのメールアドレスは公開されません。必須項目には印がついています *