package p3;
import java.util.Scanner;
public class WZQ {
static String white = "☆";//白棋
static String black = "★";//黑棋
static String[][] qp = new String[15][15];//棋盘
static String[] num = {"⒈","⒉","⒊","⒋","⒌","⒍","⒎","⒏","⒐","⒑","⒒","⒓","⒔","⒕","⒖"};
static String line = "十";
static boolean flag = true;
static Scanner s = new Scanner(System.in);
public static void main(String[] args) {
//初始化棋盘
WZQ.initQP();
//打印棋盘
WZQ.printQP();
//开始下棋
WZQ.start();
}
//判断输赢
public static boolean isWin(int x,int y,String qz){
//判断水平方向
int spsum = 1;
for (int i = y-1; i>=0 ; i--) {
if(qp[x][i] == qz){
spsum++;
} else{
break;
}
}
for (int i = y+1; i <qp[0].length-1 ; i++) {
if(qp[x][i] == qz){
spsum++;
} else{
break;
}
}
if(spsum>=5){
return true;
}
//判断垂直方向
int czsum = 1;
for (int i = x-1; i >=0; i--) {
if(qp[i][y] == qz){
czsum++;
} else{
break;
}
}
for (int i = x+1; i <qp.length ; i++) {
if(qp[i][y] == qz){
czsum++;
} else{
break;
}
}
if(czsum>=5){
return true;
}
//判断斜向 左下,右上
int lsum = 1;
for(int i=x+1,j=y-1;i<qp.length && j>0;i++,j--){//左下
if(qp[i][j]==qz){
lsum++;
}else{
break;
}
}
for (int i = x-1,j=y+1; i>=0&&j<qp[0].length; i++) {//右上
if(qp[i][j]==qz){
lsum++;
}else{
break;
}
}
if(lsum>=5){
return true;
}
//判断斜向 左上,右下
int rsum = 1;
for (int i = x-1,j=y-1; i>=0&&j>=0 ; i--,j--) {//左上
if(qp[i][j]==qz){
rsum++;
}else{
break;
}
}
for (int i = x+1,j=y+1; i <qp.length&&j<qp[0].length ; i++,j++) {//右下
if(qp[i][j]==qz){
rsum++;
}else{
break;
}
}
if(rsum>=5){
return true;
}
return false;
}
//判断棋子位置是否合法
public static boolean check(int x,int y){
if(x<0 || x>qp.length-1 || y<0 || y>qp[0].length-1){
return false;
}
if(!qp[x][y].equals(line)){
return false;
}
return true;
}
//开始下棋
public static void start(){
while(true){
if(flag){
System.out.println("黑棋下子");
System.out.println("输入行:");
int x = s.nextInt()-1;
System.out.println("输入列:");
int y = s.nextInt()-1;
boolean rig = check(x,y);
if(rig){
qp[x][y] = black;
WZQ.printQP();
boolean win = isWin(x,y,black);
if(win){
System.out.println("黑棋胜利");
break;
}
flag = false;
}else{
System.out.println("输入不合法,重新输入");
}
}else{
System.out.println("白棋下子");
System.out.println("输入行:");
int x = s.nextInt()-1;
System.out.println("输入列:");
int y = s.nextInt()-1;
boolean rig = check(x,y);
if(rig){
qp[x][y] = white;
WZQ.printQP();
boolean win = isWin(x,y,white);
if(win){
System.out.println("白棋胜利");
break;
}
flag = true;
}else{
System.out.println("输入不合法,重新输入");
}
}
}
}
//初始化棋盘
public static void initQP(){
for (int i = 0; i < qp.length; i++) {
for (int j = 0; j < qp[i].length; j++) {
qp[i][j] = line;
if(j==qp[i].length-1){
qp[i][j] = num[i];
}
if(i==qp.length-1){
qp[i][j] = num[j];
}
}
}
}
//打印棋盘
public static void printQP(){
for (int i = 0; i < qp.length; i++) {
for (int j = 0; j < qp[i].length; j++) {
System.out.print(qp[i][j]);
}
System.out.println();
}
}
}
06-03
1149
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
08-15
2807
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
08-16
03-15
02-28