というわけで、最近は 400 タイルの世界で 50 個のオブジェクトを使用して多数の世界を作成することに忙しくしています。
これは、50 個のオブジェクトの配列をランダムな座標で初期化し、重複をチェックするメソッドのコードです。パラメーターの値に応じて、その回数だけこれを行います。適切な確率計算を行うために 1000000 を入力します。したがって、このメソッドを 1000000 回実行します。- コードは次のとおりです。
public void initializeAndExecute(int runAmount) {
tiles = new String[49]; //array size
for (int k = 0; k < runAmount; k++) { //amount of generating new array
for (int i = 0; i < 49; i++) { //put 50 objects in array
tile = new Tile();
tiles[i] = (tile.printXandY()); //put coordinates at this index
}//eind for
checkDupes(); //check collisions
if (duplicates != 0) { //if collision , counter++, duplicates reset.
runWithCollision++; //for probability calculation
duplicates = 0;
}
run++; //run always ++ even if no duplicates, voor probability calculation.
}
}
私が今やりたいことは、400 タイル (20x20) のフィールドを持ち、オブジェクトがフィールド内のその位置に等しい場合、座標に応じて [*] を配置することです。同じ場所に複数のオブジェクトがある場合は、[**] のようにします。これが私のfield()メソッドのコードです:
public void field() {
for (int p = 0; p < 20; p++) { //for 20 rows
for (int o = 0; o < 19; o++) { //to fill rows
if (tile.getX() == o && tile.getY() == p) {
System.out.print("[*]");
} else {
System.out.print("[_]");
}
if (o == 18) {
System.out.println("[_]"); //newline
}
}
}
これは明らかに機能していませんが、どのように見えるかをテストするためのもので、 initializeAndExecute()メソッドで動的に実行されないため、1 つの座標のみを出力します。
何か案は?もしかして二次元配列?(これを実装する方法がわかりません)
助けていただければ幸いです。