我这里有一个简单的程序,模拟了跳棋(但是不会跳,一枚棋子只能“吃掉”另一枚棋子)。我有一个简单的类实现了一个“Checkers”类对象,并创建了一个名为“chips”的整型数组变量。有一个“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类中的计数方法如下:
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;
}
棋盘大小是8x8(即board.length),计数方法就是简单地返回“arr”的值,以便将其报告给“chips”,以决定chips [1]和chips [0] 是否都大于1(它们是否在棋盘上都至少有一个白色或黑色的棋子)。数组只应包含两个值(即 {white, black} )我已经尝试过以各种方式重新格式化整个count(),但这只是几种代码编译的方式之一。
以下是输出内容:
01234567
0|........
1|..B.....
2|........
3|........
4|........
5|..B.B.B.
6|.B.B.B.B
正如您所看到的,不再有任何白色棋子(应该在顶部)。希望我解释得足够清楚。谢谢。
哦,顺便说一句,我被告知不要触碰主方法。