【题目要求】
五子棋是两个人之间的竞技活动,分为黑白两方
棋盘大小为15* 15,五连子的方向为横、竖、斜
率先连成五子的一方获胜。
要求创建一个棋盘并开始游戏。
【题目分析】
首先要创建一个15*15的棋盘,对其进行初始化并打印出棋盘,接着开始游戏,黑白双方交替出棋,每出一个棋子判断该位置是否有棋子,若有,重新出棋,若没有,判断它的四个方向是否连成五子。
四个方向可行棋区域如下:
【代码实现】
import java.util.Scanner;
class WuZiQi{
/*
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];
for(int i=0;i<board.length;i++){
for(int j=0;j<board[i].length;j++){
board[i][j]="+";
}
}
}
}