import java.util.Scanner;
class Main{
/*
1.创建一个棋盘
2.对棋盘进行初始化
3.打印棋盘
4.开始游戏
*/
//1.
public static String[][] board=null;
public static Scanner scanner=new Scanner(System.in);
public static void main(String[] args){
//2.
initBoard();
//3.
printBoard();
//4.
startGame();
}
public static void startGame(){
int player=0;
while(!isGameOver()){
if(player%2==0){//黑方
System.out.println(">>>黑方下棋:");
if(!xiaqi("O")){
continue;
}
}else{//白方
System.out.println(">>>白方下棋:");
if(!xiaqi("X")){
continue;
}
}
player++;
}
System.out.println(">>>游戏结束!!");
}
public static boolean isGameOver(){
for(int i=0;i<board.length;i++){
for(int j=0;j<board.length;j++){
if(!board[i][j].equals("+")){
//向右
if(j<11){
boolean flag=true;
for(int dy=1;dy<=4;dy++){
if(board[i][j]!=board[i][j+dy]){
flag=false;
break;
}
}
if(flag){
return true;
}
}
//向下
if(i<11){
boolean flag=true;
for(int dx=1;dx<=4;dx++){
if(board[i][j]!=board[i+dx][j]){
flag=false;
break;
}
}
if(flag){
return true;
}
}
//右下
if(i<11&&j<11){
boolean flag=true;
for(int d=1;d<=4;d++){
if(board[i][j]!=board[i+d][j+d]){
flag=false;
break;
}
}
if(flag){
return true;
}
}
//右上
if(i>3&&j<11){
boolean flag=true;
for(int d=1;d<=4;d++){
if(board[i][j]!=board[i-d][j+d]){
flag=false;
break;
}
}
if(flag){
return true;
}
}
}
}
}
return false;
}
public static boolean xiaqi(String chess){
System.out.print(">>>请输入x坐标:");
int x=scanner.nextInt()-1;
System.out.print(">>>请输入y坐标:");
int y=scanner.nextInt()-1;
if(board[x][y].equals("+")){
board[x][y]=chess;
printBoard();
return true;
}else{
System.out.println(">>>棋子已存在,请重新下棋!");
return false;
}
}
public static void printBoard(){ //打印棋盘
System.out.print(" ");
for(int i=1;i<=15;i++){
System.out.printf("%-3d",i); //打印纵坐标,并让格式化输出
}
System.out.println();
for(int i=0;i<board.length;i++){
System.out.printf("%-3d",i+1); //打印横坐标,并进行格式化输出
for(int j=0;j<board[i].length;j++){
System.out.print(board[i][j]+" "); //将刚才已进行初始化填充的棋盘打印出来
}
System.out.println(); //每打印一行棋,进行换行
}
}
public static void initBoard(){ //初始化棋盘
board=new String[15][15]; //为二维型字符串数组开辟空间为15*15
for(int i=0;i<board.length;i++){
for(int j=0;j<board[i].length;j++){
board[i][j]="+"; //棋盘的每一个坐标的初始化填充
}
}
}
}
经典五子棋(无图形化界面)的代码实现
最新推荐文章于 2023-06-13 21:11:49 发布