五子棋游戏

【题目要求】
五子棋是两个人之间的竞技活动,分为黑白两方
棋盘大小为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]="+";
            }
        }
    }
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值