2017-06-15 5 views
-2

私はJavaの初心者ですが、私はDFSアルゴリズムに基づいて迷路ジェネレータを作成しようとしていますが、私は開始に問題があります。ここでArrayListを使ったJava開始インスタンス

はコードです:

class MazeCell { 
    int x, y; 
    boolean visited, onStack; 
} 

class MazeGenerator { 
    Stack stack = new Stack(); 
    Random myRand = new Random(); 
    int columns = 80; 
    int rows = 25; 

    public void Generate() { 
     ArrayList <MazeCell> cells = new ArrayList <MazeCell> (columns*rows); 
     int x, i = 0, y = 0; 
     for (y = 0; y < rows; ++y) { 
      for (x = 0; x < columns; ++x) { 
       cells.set(i) = new MazeCell; 
       cells.set(i).visited = false; 
       cells.set(i).onStack = false; 
       cells.set(i).x = x; 
       cells.set(i).y = y; 
       ++i; 
      } 
     } 
    } 
} 

誰もがそれを行うための最善の方法がどうなるか助けと教えてもらえますか?私は正しい方法でそれを試していますか?

+3

「開始に問題がありますか」を明確にすることはできますか?どのように[*動作しません](http://importblogkit.com/2015/07/does-not-work/)ですか? – Pshemo

+1

私は、必要なset(int index、E element)関数の要素として何を使うべきかわかりません – whtkj

+1

ここで 'set'を使う理由を説明できますか?状況に適した方法は 'add'です。 – Tom

答えて

0

、あなたがcellsのArrayListを初期化してきました。したがって、初期化後、空のArrayListになります。注:

ArrayList.set(int index, E element)は、このリストの指定された位置にある要素を、指定された要素で置き換えます。

したがって、空のArrayListに要素を設定することは意味がありません。

ArrayList.add(E e)リストの末尾に指定された要素Eが追加される必要があります。

for(y = 0; y > rows; ++y)およびfor(x = 0; x > columns; ++x)のようなforループ条件を持つことも意味がありません。彼の答えは@shmoselの提案に従ってください。

+0

大変ありがとうございます – whtkj

2

コードにはかなりの論理的および構文的なエラーがあります。代わりにこれを試してみてください、とミスを確認するためにそれらを比較:あなたのGenerate()機能で

for (int y = 0; y < rows; ++y) { 
    for (int x = 0; x < columns; ++x) { 
     MazeCell cell = new MazeCell(); 
     cell.visited = false; 
     cell.onStack = false; 
     cell.x = x; 
     cell.y = y; 
     cells.add(cell); 
    } 
} 
関連する問題