bool CanMoveIt(Point _p, Board& _board) { Point blank = タイル番号がBLANK_POSのタイル位置を探す if(p.x == -1||blank.x) return false;//エラーならfalse int dist = blank と p のマンハッタン距離の2乗を計算; if (距離が1なら) return true;//空白の隣なので動かせる else return false;//空白の隣じゃなさそうだから動かせない } //SearchTileNumは、Position -> Pointにすることでほぼそのまま使える //この順番で書くならプロトタイプ宣言を、ソースコードの冒頭のほうでしておく Point SearchTileNum(int num, Board& _board) { for (int j = 0; j < BOARD_HEIGHT; j++) { for (int i = 0; i < BOARD_WIDTH; i++) { if (_board.tile[j][i] == num) { Point p = { i, j }; return(p); } } } //ここまでたどり着いたら、変な番号入れてエラー対応 -> -1,-1はエラー判定用 Point p = { -1,-1 }; return(p); }