我正在开发一个小蛇和梯子游戏,其中我正在生成蛇生成器类,该类验证蛇是否在逻辑上构造蛇。
我已经为蛇的头部和尾部采取了头部和尾部阵列。
蛇类具有返回对象在棋盘上的位置的getTail()
,方法。getHead()
position.getPositionNumber()
返回从 1 到 100 的整数值。
我在班板上有蛇的排列清单。
蛇生成器是一个验证蛇在逻辑上是否正确的类(它必须删除构造错误的蛇)。
如果两条蛇的头相同,则它必须忽略一条蛇(最新的蛇)并与其他蛇一起给棋盘。
这是板级:
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());
}
}
}
下面给出了蛇生成器类..
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;
}
}
我只能删除一个重复项并且程序正在终止。
我认为我在使用 try catch 块时遇到了问题。