私は小さなヘビとはしごゲームを開発しています。このゲームでは、ヘビが論理的にヘビを構築しているかどうかを確認するsnakesgeneratorクラスを生成しています。
ヘビの頭と尾の頭と尾の配列を取りました。
snakeクラスにはgetTail()
、getHead()
ボード上のオブジェクトの位置を返すメソッドがあります。
position.getPositionNumber()
1から100までの整数値の範囲を返します。
クラスボードにヘビのアレーリストがあります。
snakegeneratorは、ヘビが論理的に正しいかどうかを検証するクラスです(構造が間違っているヘビを削除する必要があります)。
2匹のヘビが同じ頭を持っている場合、1匹のヘビ(最新のヘビ)を無視し、他のヘビと一緒にボードを与える必要があります。
これはボードクラスです:
public class Board {
private int[] head = { 15,16,15,15};
private int[] tail = {3,4,5,6};
List<Snake> snakes = new ArrayList();
public void getBoard() {
Snake snake;
ListIterator<Snake> listIterator = snakes.listIterator();
while (listIterator.hasNext()) {
snake = listIterator.next();
System.out.println(snake.getHead().getPositionNumber());
}
SnakesGenerator snakesGenerator = new SnakesGenerator(snakes);
snakes=snakesGenerator.addSnakes();
listIterator = snakes.listIterator();
while (listIterator.hasNext()) {
snake = listIterator.next();
System.out.println(snake.getHead().getPositionNumber());
}
}
}
snakegeneratorクラスを以下に示します。
public class SnakesGenerator {
List<Snake> snakes = new ArrayList();
public SnakesGenerator(List<Snake> snakes) {
super();
this.snakes = snakes;
}
@SuppressWarnings("unchecked")
public List<Snake> addSnakes() {
Snake snake;
Snake snakePrevious = null;
Collections.sort(snakes, new SnakesCompator());
int i=0;
// ListIterator<Snake> listIterator = snakes.listIterator();
// System.out.println("hai this is addsnakes");
for (Snake s : snakes)
System.out.println(s.getTail().getPositionNumber());
snakePrevious =snakes.get(0);
System.out.println("before the method execution"
+ snakePrevious.getTail().getPositionNumber());
for(i=1;i<3;i++) {
snake=snakes.get(i);
System.out.println(snake.getTail().getPositionNumber());
try {
if (snakePrevious.getHead().getPositionNumber() == snake
.getHead().getPositionNumber()) {
snakes.remove(snake);
throw new Exception("two snakes have same head..");
}
} catch (Exception e) {
for (Snake s : snakes)
System.out.println(s.getTail().getPositionNumber());
}
snakePrevious = snake;
}
return snakes;
}
}
重複を1つだけ削除でき、プログラムは終了しています。
trycatchブロックの使用に問題があると思います。