分析:
1.首先定义全局变量 棋盘"+",黑棋子"o",白棋子"x";
2.制作棋盘,定义方法makeboard();
3.打印棋盘,定义方法showboard();
4.开始下棋,定义方法playgame();(可以通过奇偶数来交换黑方白方轮流下棋)
4.1判断下棋是否结束,定义方法isGameOver();(遍历每一棋子,判断该棋子的右,下,右上,右下。四个方向是否五子连珠)
4.2判断该地方是否可以下棋子,定义方法isputchess(棋子);
5.代码如下:
import java.util.Scanner;
class WuZi {
public static String[][] board = new String[15][15];
public static String heichess = "o";
public static String baichess = "x";
public static void main(String args[]){
makeboard();//制作棋盘
showboard();//打印棋盘
palygame(); //开始游戏
}
private static void palygame() {
int player = 0;
while(!isgameOver()){
if(player%2==0){ //偶数黑方下棋
System.out.println("黑方下棋");
if(isputchess(heichess)){
System.out.println("此地有棋子,请重新下棋");
continue; //继续下棋
}
}else{ //奇数白方下棋
System.out.println("白方下棋");
if(isputchess(baichess)){
System.out.println("此地有棋子,请重新下棋");
continue; //继续下棋
}
}
player++;
}
//偶数白方赢,奇数黑方赢
if(player%2==0){
System.out.println("白方赢");
}else{
System.out.println("黑方赢");
}
}
private static boolean isputchess(String chess2) {
//提示用户输入棋子坐标
Scanner sc = new Scanner(System.in);
System.out.println("x==");
int x= sc.nextInt()-1;
System.out.println("y==");
int y=sc.nextInt()-1;
if(board[x][y]=="+"){ //判断该地方是否为棋盘,为棋盘则下棋子,
board[x][y] = chess2;
showboard(); //下了棋子就打印一次棋盘
return false;
}else{
showboard();
return true;
}
}
private static boolean isgameOver() {
for(int i=0;i<board.length;i++){
for(int j=0;j<board[i].length;j++){
if(board[i][j]!="+"){
//右
if(j<11){
if(board[i][j].equals(board[i][j+1])
&&board[i][j].equals(board[i][j+2])
&&board[i][j].equals(board[i][j+3])
&&board[i][j].equals(board[i][j+4])){
return true;
}
}
//下
if(i<11){
if(board[i][j].equals(board[i+1][j])
&&board[i][j].equals(board[i+2][j])
&&board[i][j].equals(board[i+3][j])
&&board[i][j].equals(board[i+4][j])){
return true;
}
}
//右上
if(i>3&&j<11){
if(board[i][j].equals(board[i-1][j-1])
&&board[i][j].equals(board[i-2][j-5])
&&board[i][j].equals(board[i-3][j-3])
&&board[i][j].equals(board[i-4][j-4])){
return true;
}
}
//右下
if(i<11&&j<11){
if(board[i][j].equals(board[i+1][j+1])
&&board[i][j].equals(board[i+2][j+2])
&&board[i][j].equals(board[i+3][j+3])
&&board[i][j].equals(board[i+4][j+4])){
return true;
}
}
}
}
}
return false;
}
private static void showboard() {
System.out.print(" ");
for(int i=0;i<board.length;i++){
System.out.printf("%-3d",i+1);
}
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();
}
}
private static void makeboard() {
for (int i = 0; i < board.length; i++) {
for(int j=0;j<board[i].length;j++){
board[i][j] = "+";
}
}
}
}