本文主要是介绍下落棋,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
能够画出9*9格,有两个棋手A,B,交替输入列数0-9,由于重力原理,输入这个列下几行没有棋子,则自动下落;A显示棋子是X,B显示棋子O,要求当出现四连胜利!A和B交替进行:
import java.util.Scanner;public class practice7Arrays{//悬挂的四子棋public static void main(String[]args){Scanner input = new Scanner(System.in);String[][] qi = new String[6][7];String yuanShiYuanSu = "| ";String yellow = "| Y ";String red = "| R ";int count = 0;//谁下子及下了多少子的判断计数器//初始化棋子数组for(int i = 0;i < qi.length;i++)for(int j = 0;j < qi[0].length;j++)qi[i][j] = yuanShiYuanSu;//画出原始棋盘System.out.println("-----------------------------");for(int i = qi.length - 1;i >= 0;i--){for(int j = 0;j < qi[0].length;j++)System.out.print(qi[i][j]);System.out.println("|");System.out.println("-----------------------------");}for(int i = 0;i < qi[0].length;i++)System.out.print("* "+(i+1)+" ");System.out.println("*");int row = 0,column = 0;//行列下标初始化//下棋循环开始while (true) {row = 0;column = 0;if (count % 2 == 0) {//黄方下子System.out.print("\n\nY player please drop a yellow disk at column(1~7):");while (true) {//黄方下子循环开始column = input.nextInt() - 1;if (column >= 0 && column <= 6) {// 输入合法进行下子for (row = 0; row < qi.length; row++) {if (qi[row][column] == yuanShiYuanSu) {qi[row][column] = yellow;break;}}if (row == qi.length)//该列棋子满,重新输入System.out.print("The column of you enter is full,"+ "please reEnter! : ");else//棋子没满,下子结束break;}else// 输入不合法,重新下子System.out.print("You enter the wrong column,"+ "please reEnter! : ");}//黄方下子循环结束}//if(count % 2 == 0)else{//红方下子System.out.print("\n\nR player please drop a yellow disk at column(1~7):");while (true) {//红方下子循环开始column = input.nextInt() - 1;if (column >= 0 && column <= 6) {// 输入合法进行下子for (row = 0; row < qi.length; row++) {if (qi[row][column] == yuanShiYuanSu) {qi[row][column] = red;break;}}if (row == qi.length)//该列棋子满,重新输入System.out.print("The column of you enter is full,"+ "please reEnter! : ");else//棋子没满,下子结束break;}else// 输入不合法,重新下子System.out.print("You enter the wrong column,"+ "please reEnter! : ");}//红方下子循环结束}//if(count % 2 != 0)//画出棋盘System.out.println("-----------------------------");for(int i = qi.length - 1;i >= 0;i--){for(int j = 0;j < qi[0].length;j++)System.out.print(qi[i][j]);System.out.println("|");System.out.println("-----------------------------");}for(int i = 0;i < qi[0].length;i++)System.out.print("* "+(i+1)+" ");System.out.println("*");//输赢标志位boolean flagForYWin = false;boolean flagForRWin = false;//只需对当前下子的周围情况进行判断来决定棋局结果if (count % 2 == 0) {//yellow player is win?//行检测开始if (column <= 3) {for (int jj = 0; jj <= column; jj++)if (qi[row][jj] == yellow&& qi[row][jj + 1] == yellow&& qi[row][jj + 2] == yellow&& qi[row][jj + 3] == yellow) {flagForYWin = true;break;}}else {for (int jj = column - 3; jj <= 3; jj++)if (qi[row][jj] == yellow&& qi[row][jj + 1] == yellow&& qi[row][jj + 2] == yellow&& qi[row][jj + 3] == yellow) {flagForYWin = true;break;}}if (flagForYWin) {System.out.println("The yellow player win the game!");break;}//列检测开始if (row >= 3) {if (qi[row][column] == yellow&& qi[row - 1][column] == yellow&& qi[row - 2][column] == yellow&& qi[row - 3][column] == yellow)flagForYWin = true;}if (flagForYWin) {System.out.println("The yellow player win the game!");break;}//正反对角检测if(row >= 3){if(column < 3){if (qi[row][column] == yellow&& qi[row - 1][column + 1] == yellow&& qi[row - 2][column + 2] == yellow&& qi[row - 3][column + 3] == yellow)flagForYWin = true;}else if(column > 3){if (qi[row][column] == yellow&& qi[row - 1][column - 1] == yellow&& qi[row - 2][column - 2] == yellow&& qi[row - 3][column - 3] == yellow)flagForYWin = true;}else{if ((qi[row][column] == yellow&& qi[row - 1][column + 1] == yellow&& qi[row - 2][column + 2] == yellow&& qi[row - 3][column + 3] == yellow)|| (qi[row][column] == yellow&& qi[row - 1][column - 1] == yellow&& qi[row - 2][column - 2] == yellow&& qi[row - 3][column - 3] == yellow))flagForYWin = true;}}if (flagForYWin) {System.out.println("The yellow player win the game!");break;}}//yellow player is win?else{//red player is win?//行检测开始if (column <= 3) {for (int jj = 0; jj <= column; jj++)if (qi[row][jj] == red&& qi[row][jj + 1] == red&& qi[row][jj + 2] == red&& qi[row][jj + 3] == red) {flagForRWin = true;break;}}else {for (int jj = column - 3; jj <= 3; jj++)if (qi[row][jj] == red&& qi[row][jj + 1] == red&& qi[row][jj + 2] == red&& qi[row][jj + 3] == red) {flagForRWin = true;break;}}if (flagForRWin) {System.out.println("The red player win the game!");break;}//列检测开始if (row >= 3) {if (qi[row][column] == red&& qi[row - 1][column] == red&& qi[row - 2][column] == red&& qi[row - 3][column] == red)flagForRWin = true;}if (flagForRWin) {System.out.println("The red player win the game!");break;}//正反对角检测if(row >= 3){if(column < 3){if (qi[row][column] == red&& qi[row - 1][column + 1] == red&& qi[row - 2][column + 2] == red&& qi[row - 3][column + 3] == red)flagForRWin = true;}else if(column > 3){if (qi[row][column] == red&& qi[row - 1][column - 1] == red&& qi[row - 2][column - 2] == red&& qi[row - 3][column - 3] == red)flagForRWin = true;}else{if ((qi[row][column] == red&& qi[row - 1][column + 1] == red&& qi[row - 2][column + 2] == red&& qi[row - 3][column + 3] == red)|| (qi[row][column] == red&& qi[row - 1][column - 1] == red&& qi[row - 2][column - 2] == red&& qi[row - 3][column - 3] == red))flagForRWin = true;}}if (flagForRWin) {System.out.println("The red player win the game!");break;}}count++;//棋子数加1,并用于谁下棋子的判断//棋盘下满棋子,是平局if(count == 6*7){System.out.println("棋盘棋子已经下满,是平局!");break;}}//下棋循环结束}//方法块}//类块
这篇关于下落棋的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!