私は現在、大学向けの戦艦ゲームの作成を任されています。というわけで、グリッドの範囲内に船を降ろすことができました。私の唯一の問題は、船が他の船と衝突することに関して、船のレイアウトを検証することです。私は読んだことがありますが、おそらく最善の行動は2パス接続コンポーネントアルゴリズムですが、それをどのように実装するかは完全にはわかりません。
これは、現在 PlaceShips メソッド内にあるものです。
public void placeShips(){
for(int iter = 0; iter < 5; iter++){
size = shipSizes[iter];
rotation = randNum.nextInt(2)+1;
while(!valid){
rows = randNum.nextInt(10)+1;
cols = randNum.nextInt(10)+1;
if(rotation ==1){
if (cols > mGame.getmColumns()- size){
valid = false;
}
else{
//assumed that the connected component algorithm needs to go here
valid = true;
}
}
else if(rotation == 2){
if (rows > mGame.getmRows() - size){
valid = false;
}
else{
//assumed that the connected component algorithm needs to go here
valid = true;
}
}
}
valid = false;
//Draw ships
for(int i = 0; i < size; i++){
if(rotation == 1){
gridPos[cols-1][rows-1] = 1;
cols = cols + 1;
}
else if(rotation == 2){
gridPos[cols-1][rows-1] = 1;
rows = rows + 1;
}
}
}
}
}