java实现五子棋代码

**

二维数组实现五子棋

**

import com.sun.javaws.exceptions.ExitException;

import java.util.Random;
import java.util.Scanner;

public class 五子棋 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in );
        System.out.println("输入五子棋盘的行列数:");
        int row=in.nextInt();
        int col=in.nextInt();
        int hor=0,ver=0,sla1=0,sla2=0;
        //生成棋盘
        int [][]chess=new int[row+1][col+1];
        //给第一行填字
        for (int i = 0; i < chess[0].length; i++) {
            chess[0][i]=i;
            //给第一列填字
        }
        for (int i = 0; i < chess[0].length; i++) {
            chess[i][0]=i;
        }
        int m,n;
        boolean flag=true;//true 表示黑方下    false表示白方下
        //显示棋盘
        for (int i = 0; i < chess.length; i++) {
            for (int j = 0; j < chess[i].length; j++) {
                System.out.print(chess[i][j]+ " ");

            }
            System.out.println();

        }
        for(;;){
            //1.先提示下棋
            if (flag){
                System.out.print("黑方下棋:");
                m=in.nextInt();
                n=in.nextInt();
                chess[m][n]=1;
            }
            else{
                System.out.println("白方下棋:");
                m=in.nextInt();
                n=in.nextInt();
                chess[m][n]=2;
            }
            //再次显示棋盘,观察刚才下棋的状态
            for (int i = 0; i < chess.length; i++) {
                for (int j = 0; j < chess[i].length; j++) {
                    System.out.print(chess[i][j]+ " ");
                }
                System.out.println();
            }
            //3.五子棋下棋以后的逻辑判断   胜出  继续提示白方下棋:
            if (flag){
                //表示黑方(1)下的棋
                //黑方是否胜利的逻辑判断代码
                 if (judge(chess,m,n,1)){
                    System.out.println("黑方胜利");

                }

                //该白方下棋了
                flag=false;
                 }
            else{
                if (judge(chess,m,n,2)){
                    System.out.println("白方胜利");
                }
                //表示黑方(1)下的棋
                //黑方是否胜利的逻辑判断代码
                //该白方下棋了
                flag=true;

            }

        }
    }
    /**
     *
     * @param chess 存储所有棋子的二维数组
     * @param m 下棋的行
     * @param n  下棋的列
     * @param data  黑旗1或者白棋2
     * @return 返回true,表示data胜利了,返回false,表示没有胜利
     */
    private static boolean judge(int[][] chess, int m, int n, int data) {
        int count = 1;
        int j = 0;
        // 先判断横向的左边
        //   ...   [m,n-1] [m,n] [m,n+1]
        for(j=n-1; j>0; --j){
            if(chess[m][j] == data){
                count++;
            } else {
                break;
            }
        }
        // 再判断横向的右边
        for(j=n+1; j0; --i){
            if(chess[i][n] == data){
                count++;
            } else {
                break;
            }
        }
        // 判断当前棋子的下方向
        for(i=m+1; i0 && j0; ++i, --j){
            if(chess[i][j] == data){
                count++;
            } else {
                break;
            }
        }
        // 判断count
        if(count == 5){
            System.exit(0);
        }
        // count需要重置一下
        count = 1;
        // 判断右斜上方向
        for(i=m-1, j=n-1; i>0 && j>0; --i, --j){
            if(chess[i][j] == data){
                count++;
            } else {
                break;
            }
        }
        // 判断右斜下方向
        for(i=m+1, j=n+1; i

你可能感兴趣的:(java实现五子棋代码)