所以我在这里有一个简单地模仿跳棋的程序(但不是跳跃,而是一个棋子简单地“吃掉”另一棋子)。我有一个简单的类,它实现了一个“Checkers”类对象并创建了一个名为“chips”的 int 数组变量。有一个“WHILE”语句创建一个循环,而 chip[0] 和chips[1] 整数大于0。它看起来像这样:
public static void main(String [] args){
Checkers c = new Checkers();
c.init();
c.printBoard();
int[] chips = c.count();
Scanner kbd = new Scanner(System.in);
while(chips[0]>0 && chips[1]>0){
System.out.println("\nYour move? 4 ints: src row, src col, dest row, dest col separated by [SPACE]");
int srcR = kbd.nextInt();
int srcC = kbd.nextInt();
int destR = kbd.nextInt();
int destC = kbd.nextInt();
kbd.nextLine();
c.move(srcR,srcC,destR,destC);
c.printBoard();
System.out.println(c.getMessage());
c.count();
}
}
我在 Checkers 类中的 count 方法如下所示:
public int[] count() {
int wht=0;
int blk=0;
System.out.println();
for(int i=0; i<board.length;i++) {
for(int z=0; z<board[0].length;z++) {
if(board[i][z] instanceof White) {
wht++;
}
else if(board[i][z] instanceof Black) {
blk++;
}
}
}
int[] arr = {wht,blk};
System.out.println("Whites: "+wht+"\nBlacks: "+blk);
return arr;
}
board 是 8 x 8(即 board.length 的大小),count 方法就是简单地返回“arr”的值,这样它就可以报告回“chips”来决定是否有chips[1]和筹码[0] 都大于一(它们在棋盘上都至少有一个白色或黑色棋子。)数组应该只包含两个值(即 {white,black}; )我试过了以各种方式重新格式化整个 count() ,但这只是代码编译的几种方式之一。
这是输出:
01234567
0|........
1|..B....
2|........
3|........
4|........
5|..BBB
6|.BBBB
如您所见,不再有白色棋子(应该在顶部)。考虑到这可能是一个在我眼皮底下盯着看的简单解决方案,我将不胜感激,但它很烦人,所以我希望我解释得足够好。谢谢你。
哦,顺便说一句,我被告知根本不要碰主要方法。