package day4;
/*
1.
初始化棋盘 抽取到一个方法中
打印棋盘 抽取到一个方法中
2.
黑白双方交替下棋
打印棋盘
3.
判断是否越界
判断是否重复
判断输赢
*/
import java.util.Arrays;
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 = "十";
public static void start() {
init();
print();
play();
}
public static void play() {
boolean flag = true;
while (true) {
// 黑棋
if (flag) {
Scanner scanner = new Scanner(System.in);
System.out.println("输入黑棋子x,y坐标");
int b1 = scanner.nextInt() - 1;
int b2 = scanner.nextInt() - 1;
boolean res = check(b1, b2);
if (res) {
qp[b1][b2] = black;
print();
boolean win = iswin(b1, b2, black);
if (win) {
System.out.println("黑棋胜利");
break;
}
flag = false;
} else {
System.out.println("棋子越界或重复,请重新下棋");
}
} else //
{
Scanner scanner = new Scanner(System.in);
System.out.println("输入白棋子x,y坐标");
int w1 = scanner.nextInt() - 1;
int w2 = scanner.nextInt() - 1;
boolean res = check(w1, w2);
if (res) {
qp[w1][w2] = white;
print();
boolean win = iswin(w1, w2, white);
if (win) {
System.out.println("白棋胜利");
break;
}
flag = true;
} else {
System.out.println("棋子越界或重复,请重新下棋");
}
}
}
}
public static boolean iswin(int x, int y, String qizi) {
int sum = 1;
// 向左
for (int lefty = y - 1; lefty >= 0; lefty--) {
if (qp[x][lefty].equals(qizi)) {
sum++;
} else {
break;
}
}
if (sum >= 5) {
return true;
}
// 向右
for (int righty = y + 1; righty < qp.length; righty++) {
if (qp[x][righty].equals(qizi)) {
sum++;
} else {
break;
}
}
if (sum >= 5) {
return true;
}
// 向上
int summ = 1;
for (int up = x - 1; up >= 0; up--) {
if (qp[up][y].equals(qizi)) {
summ++;
} else {
break;
}
if (summ >= 5) {
return true;
}
// 向下
for (int down = x + 1; down < qp.length; down++) {
if (qp[x][down].equals(qizi)) {
summ++;
} else {
break;
}
}
if (summ >= 5) {
return true;
}
// 左上
int summm=1;
for(int xx=x-1,xy=y-1;xx>=0&&xy>=0;xx--,xy--){
if(qp[xx][xy].equals(qizi)){
summm++;
}
else{
break;
}
}
if(summm>=5){
return true;
}
// 右下
for(int xx=x+1,xy=y+1;xx<qp.length-1&&xy<qp.length-1;xx++,xy++){
if(qp[xx][xy].equals(qizi)){
summm++;
}
else{
break;
}
}
if(summm>=5){
return true;
}
// 右上
int summmm=1;
for(int xl=x-1,yl=y+1;xl>=0&&yl<qp.length-1;xl--,yl++){
if(qp[xl][yl].equals(qizi)){
summmm++;
}
else{
break;
}
}
if(summmm>=5){
return true;
}
// 左下
for(int xl=x+1,yl=y-1;xl< qp.length&&yl>=0;xl++,yl--){
if(qp[xl][yl].equals(qizi)){
summmm++;
}
else{
break;
}
}
if(summmm>=5){
return true;
}
}
return false;
}
public static boolean check ( int x, int y){
if (x < 0 || x > 14 || y < 0 || y > 14) {
return false;
}
if (!qp[x][y].equals(line)) {
return false;
}
return true;
}
//打印棋盘
public static void print () {
for (int i = 0; i < qp.length; i++) {
for (int j = 0; j < qp.length; j++) {
System.out.print(qp[i][j]);
}
System.out.println();
}
}
//初始化
public static void init () {
for (int i = 0; i < qp.length; i++) {
for (int j = 0; j < qp.length; j++) {
qp[i][j] = line;
// 纵向
if (j == qp.length - 1) {
qp[i][j] = num[i];
}
// 横向
if (i == qp.length - 1) {
qp[i][j] = num[j];
}
}
}
}
}