0

C++ で (コードブロックを使用して) 迷路ゲームを作成するように依頼されました。私はそれのほとんどを理解しましたが、Maze クラスの 1 つのメソッドに行き詰まりました。壁にぶつからない方向(上下左右)に移動すると言うこの機能があります。

int Maze::mazeTraversal(int a, int b)
{
    // If a,b is outside maze, return false.
    if ( a < 0 || a > MCOLS - 1 || b < 0 || b > NROWS - 1 ) return FALSE;

    // If a,b is the goal, return true.
    if ( maze[b][a] == 'G' ) return TRUE;

    // If a,b is not open, return false.
    if ( maze[b][a] != '0' && maze[b][a] != 'S' ) return FALSE;

    // Mark a,b part of solution path.
    maze[b][a] = 'x';

    // If find_path North of a,b is true, return true.
    if ( mazeTraversal(a, b - 1) == TRUE ) return TRUE;

    // If find_path East of a,b is true, return true.
    if ( mazeTraversal(a + 1, b) == TRUE ) return TRUE;

    // If find_path South of a,b is true, return true.
    if ( mazeTraversal(a, b + 1) == TRUE ) return TRUE;

    // If find_path West of a,b is true, return true.
    if ( mazeTraversal(a - 1, b) == TRUE ) return TRUE;

    // Unmark a,b as part of solution path.
    maze[b][a] = '0';

    return FALSE;
}

この関数を次のように呼び出しています。

Maze mo(maze,12); //creating maze game with 12/12 array
mo. mazeTraversal(0,2) // because the entry point is in 0,2 position of the game.

この mazeTraversal を として持つように求められていることに気付きましたvoid。ノーリターン。私の心は爆発しています。いくつかの創造的なアイデアを除いてください。

4

4 に答える 4

1

使用する:

void Maze::mazeTraversal(int a, int b, bool& Status)

そして、return関数内の使用の代わりに:-

Status = false; // or true

またはクラス内でデータメンバーを使用してbool Statusその値を更新します

class Maze{

public :
   bool Status;
   //..

   void Maze::mazeTraversal(int a, int b);
   //...
};
于 2013-09-09T16:45:20.473 に答える