这道题和小北上道题一样,都是温油的java老师留下来的课后作业
首先小北说一下游戏规则:
在一个10×10的棋盘上,有红方和黄方,两个人下棋,每个人只能选择下在哪一列,意思就是说,如果board[i][j]没有下子(为空)的话,board[i-1][j]就不能下子,从棋盘的最后一行开始下,哪一方先下到四个棋子横,四个棋子竖,四个棋子斜(包括左斜和右斜)都算成功。
package ChessBoard;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
int[] index=new int[10];//标记每列的棋子,默认值全为0
String[][] chessboard=new String[10][10];
Init_ChessBoard(chessboard);//初始化棋盘
BigCheck(index,chessboard);
}
private static void BigCheck(int[] index, String[][] chessboard) {
Showchessboard(chessboard);
Scanner scanner=new Scanner(System.in);
boolean is=false;
boolean it=false;
System.out.println("红队请选择列数:(0-9)");
int RED=scanner.nextInt();
//判断此列是否合理,列index++,相应位置给R
try{
is=REDHuoChi(index, chessboard, RED);
}catch (ArrayIndexOutOfBoundsException e) {
// BigCheck(index, chessboard);//如果位置不合适重新输入
is=false;
}finally {
if(!is)
BigCheck(index,chessboard);
}
it = IsREDGameOver(chessboard);//判断红队是否胜利
if (!it) {
Showchessboard(chessboard);
System.out.println("黄队请选择列数:(0-9)");
int Yellow = scanner.nextInt();
try {
is = YELLOWHuoChi(index, chessboard, Yellow);//判断列数是否合理
}catch (ArrayIndexOutOfBoundsException e){
is=false;
}finally {
{
if(!is)
BigCheck(index,chessboard);
}
}
it = IsYELLOWGameOver(chessboard);//判断黄队是否胜利
if (!it) {
BigCheck(index, chessboard);
}
}
}
private static boolean IsREDGameOver(String[][] chessboard) {
//判断游戏是否结束
boolean is=false;
A:for (int i = 0; i <7 ; i++) {
for (int j = 0; j <10 ; j++) {
//判断同一行是否四个
if((chessboard[i][j]=="R ")&&(chessboard[i+1][j]=="R ")&&(chessboard[i+2][j]=="R ")&&(chessboard[i+3][j]=="R ")){
is=true;
System.out.println("RED----GameOver!");
break A;
}
}
}
B:for (int i = 0; i <10 ; i++) {
for (int j = 0; j <7 ; j++) {
//判断同一列是否四个
if((chessboard[i][j]=="R ")&&(chessboard[i][j+1]=="R ")&&(chessboard[i][j+2]=="R ")&&(chessboard[i][j+3]=="R ")){
is=true;
System.out.println("RED----GameOver!");
break B;
}
}
}
C:for (int i = 3; i <7 ; i++) {
for (int j = 3; j <7 ; j++) {
//判断同一左斜是否四个
if((chessboard[i][j]=="R ")&&(chessboard[i-1][j-1]=="R ")&&(chessboard[i-2][j-2]=="R ")&&(chessboard[i-3][j-3]=="R ")){
is=true;
System.out.println("RED----GameOver!");
break C;
}
}
}
D:for (int i = 0; i <7 ; i++) {
for (int j = 0; j <7 ; j++) {
//判断同一右斜是否四个
if((chessboard[i][j]=="R ")&&(chessboard[i+1][j+1]=="R ")&&(chessboard[i+2][j+2]=="R ")&&(chessboard[i+3][j+3]=="R ")){
is=true;
System.out.println("RED----GameOver!");
break D;
}
}
}
return is;
}
private static boolean IsYELLOWGameOver(String[][] chessboard) {
//判断游戏是否结束
boolean is=false;
A:for (int i = 0; i <7 ; i++) {
for (int j = 0; j <10 ; j++) {
//判断同一行是否四个
if((chessboard[i][j]=="Y ")&&(chessboard[i+1][j]=="Y ")&&(chessboard[i+2][j]=="Y ")&&(chessboard[i+3][j]=="Y ")){
is=true;
System.out.println("YELLOW-----GameOver!");
break A;
}
}
}
B:for (int i = 9; i <10 ; i++) {
for (int j = 0; j <7 ; j++) {
//判断同一列是否四个
if((chessboard[i][j]=="Y ")&&(chessboard[i][j+1]=="Y ")&&(chessboard[i][j+2]=="Y ")&&(chessboard[i][j+3]=="Y ")){
is=true;
System.out.println("YELLOW-----GameOver!");
break B;
}
}
}
C:for (int i = 3; i <7 ; i++) {
for (int j = 3; j <7 ; j++) {
//判断同一左斜是否四个
if((chessboard[i][j]=="Y ")&&(chessboard[i-1][j-1]=="Y ")&&(chessboard[i-2][j-2]=="Y ")&&(chessboard[i-3][j-3]=="Y ")){
is=true;
System.out.println("YELLOW-----GameOver!");
break C;
}
}
}
D:for (int i = 0; i <7 ; i++) {
for (int j = 0; j <7 ; j++) {
//判断同一右斜是否四个
if((chessboard[i][j]=="Y ")&&(chessboard[i+1][j+1]=="Y ")&&(chessboard[i+2][j+2]=="Y ")&&(chessboard[i+3][j+3]=="v")){
is=true;
System.out.println("YELLOW-----GameOver!");
break D;
}
}
}
System.out.println(is);
return is;
}
private static boolean REDHuoChi(int[] index, String[][] chessboard, int lie) {
//判断此列是否合理
boolean heli=false;
if(lie<=9&&lie>=0) {
if (index[lie] >9){
System.out.println("此列已满,请选择其他列!");
} else {
//判断此列有多少个棋子
chessboard[9-index[lie]][lie]="R ";
index[lie]++;
heli=true;
}
}else{
System.out.println("此列不存在请重新选择!");
}
return heli;
}
private static boolean YELLOWHuoChi(int[] index, String[][] chessboard, int lie) {
//判断此列是否合理
boolean heli=false;
if(lie<=9&&lie>=0) {
if (index[lie] >9){
System.out.println("此列已满,请选择其他列!");
} else {
//判断此列有多少个棋子
chessboard[9-index[lie]][lie]="Y ";
index[lie]++;
heli=true;
}
}else{
System.out.println("此列不存在请重新选择!");
}
return heli;
}
private static void Init_ChessBoard(String[][] chessboard) {
//初始化棋盘
for (int i = 0; i <10 ; i++) {
for (int j = 0; j <10 ; j++) {
chessboard[i][j]="| ";
}
}
}
private static void Showchessboard(String[][] chessboard) {
//输出棋盘
for (int i = 0; i <10 ; i++) {
for (int j = 0; j <10 ; j++) {
System.out.print(chessboard[i][j]);
}
System.out.println();
}
}
}