2016-12-21 7 views
-3
public bool Solve_Maze(int X_Pos, int Y_Pos) 
    { 
     bool Move = false; 

     //Checking if the position isnt on the finish 
     if (maze_board[X_Pos,Y_Pos] == 'e') 
     { 
      Move = true; 
      maze_board[X_Pos,Y_Pos] = '+'; 
      return Move; 
     } 

     // Check for a wall 
     if (maze_board[X_Pos, Y_Pos] == '1') 
      return false; 

     if (maze_board[X_Pos, Y_Pos] == 'X') 
      return false; 

     maze_board[X_Pos, Y_Pos] = 'X'; 

     Move = Solve_Maze(X_Pos + 1, Y_Pos); 
     Move = Solve_Maze(X_Pos, Y_Pos + 1); 
     Move = Solve_Maze(X_Pos - 1, Y_Pos); 
     Move = Solve_Maze(X_Pos, Y_Pos - 1); 

     maze_board[X_Pos, Y_Pos] = '+'; 

     return Move; 

    } 

これは、それがプログラミングに来るとき、私は完全な初心者です、私にエラー私は境界エラーのうちのインデックスを取得しておくと

if (maze_board[X_Pos,Y_Pos] == 'e') 

を与えているコードの一部であるとした理由を知りませんどんな助けにも大いに感謝されるでしょう。

+1

ようこそStackOverflow。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [最小、完全で検証可能な例](http://stackoverflow.com/help/mcve)がここに適用されます。コードを投稿してから(最小限ではなく)、問題を正確に記述するまで、効果的にあなたを助けることはできません。エラーメッセージ全体、特にトレースバック(特定のエラー行を表示)を含めます。 – Prune

+2

この素敵な[デバッグ](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)のブログを参照してください。とりわけ、** X_Pos **と** Y_Pos **の値をトレースする1つまたは2つのプリントを挿入することから始めます。 – Prune

+0

コードのどの行が範囲外の例外をスローしますか?コード全体を読むのは難しいです。具体的にする。 – Prabu

答えて

-2

このエラーを取得するには、そのメソッドの外で変数として既にmaze_board[]を宣言しているに違いありません。代わりに、maze_boardをこのメソッドにパラメータとして渡して、初期化され、現在の迷路を保持していることを確認します。 maze_board変数の元の宣言を見ることができないので、これは当時の推測です。コードファイル全体を投稿できますか?

+0

ここで下降投票は驚くべきことです。提供されたコードでは宣言されていません。範囲外のエラー(およびコードをコンパイルするため)を得るためには、ここには表示されていないmaze_boardのスコープの高い宣言が必要です - Programクラスの静的メンバーコンソールアプリ。メインメソッドでも宣言されているので、混乱します。 –

+1

'ここで下降投票は驚くべきことです。なぜですか? SOはコードデバッグサービスではありません。問題のコメントを読んで.... –

+0

私はそれがデバッグサービスではないことを認識しているので、私は質問の下投票を得るが、これはOPとしての学習練習であり、なぜ問題を働かせないのですか? –

関連する問題