import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Playgame{
private final int WIN_COUNT=5;
private int posX=0,posY=0;
private Chessboard chessboard;
public Playgame(Chessboard chessboard){
this.chessboard=chessboard;
}
public boolean isValid(String inputStr){
String[] posStrArr=inputStr.split(",");
try {
posX = Integer.parseInt(posStrArr[0]) - 1;
posY = Integer.parseInt(posStrArr[1]) - 1;
} catch (NumberFormatException e) {
chessboard.printBoard();
System.out.println("请以(数字,数字)的格式输入:");
return false;
}
if(posX<0||posX>=Chessboard.BOARD_SIZE||
posY<0||posY>=Chessboard.BOARD_SIZE){
chessboard.printBoard();
System.out.println("坐标应在1~"+Chessboard.BOARD_SIZE);
return false;
}
String[][] board = chessboard.getBoard();
if(board[posX][posY]!="十"){
chessboard.printBoard();
System.out.println("此地以有棋子,请重新输入:");
return false;
}
return true;
}
public void start()throws Exception{
chessboard.initBoard();
chessboard.printBoard();
String chessman;
int i=0;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String inputStr=null;
System.out.println("请输入您下棋的坐标,应以x,y的格式输入:");
while((inputStr=br.readLine())!=null){
if(!isValid(inputStr))continue;
if(++i%2==1)chessman=Chessman.BLACK.getChessman();
else chessman=Chessman.WHITE.getChessman();
chessboard.setBoard(posX,posY,chessman);
chessboard.printBoard();
if(isWon(posX,posY,chessman))break;
System.out.println("请输入您下棋的坐标,应以x,y的格式输入:");
}
}
public boolean isWon(int posX,int posY,String ico){
int startX,startY,endX,endY,temp;
int sameCount=0;
startX=(temp=posX-4)<0?0:temp;
endX=(temp=posX+4)>Chessboard.BOARD_SIZE - 1 ?Chessboard.BOARD_SIZE - 1
:temp;
startY=(temp=posY-4)<0?0:temp;
endY=(temp=posY+4)>Chessboard.BOARD_SIZE - 1 ?Chessboard.BOARD_SIZE - 1
:temp;
String[][] board = chessboard.getBoard();
for(int i=startY;i<=endY;i++){
if(board[posX][i]==ico)sameCount++;
else if(sameCount!=5)sameCount=0;
}
if(sameCount==0){
for(int i=startX;i<=endX;i++){
if(board[i][posY]==ico)sameCount++;
else if(sameCount!=5)sameCount = 0;
}
}
if(sameCount==0){
for(int i=startX,j=startY;i<=endX;i++,j++){
if(board[i][j]==ico)sameCount++;
else if(sameCount!=5)sameCount=0;
}
}
if(sameCount==0){
for(int i=startX,j=endY;i<=endX;i++,j--){
if(board[i][j]==ico)sameCount++;
else if(sameCount!=5)sameCount=0;
}
}
if(sameCount==5){System.out.println("恭喜您获得胜利!");return true;}
else return false;
}
public static void main(String[] args)throws Exception{
var gb=new Playgame(new Chessboard());
gb.start();
}
}
public enum Chessman{
BLACK("●"), WHITE("○");
private String chessman;
private Chessman(String chessman){
this.chessman=chessman;
}
public String getChessman(){
return this.chessman;
}
}
public class Chessboard{
private String[][] board;
public static final int BOARD_SIZE=22;
public void initBoard(){
board=new String[BOARD_SIZE][BOARD_SIZE];
for(int i=0;i<BOARD_SIZE;i++){
for(int j=0;j<BOARD_SIZE;j++){
board[i][j]="十";
}
}
}
public void printBoard(){
for(int i=0;i<BOARD_SIZE;i++){
for(int j=0;j<BOARD_SIZE;j++){
System.out.print(board[i][j]);
}
System.out.print("\n");
}
}
public void setBoard(int posX,int posY,String chessman){
this.board[posX][posY]=chessman;
}
public String[][] getBoard(){
return this.board;
}
}