用java基础实现五子棋

使用二维数组,实现五子棋功能

使用二维数组生成如下图:

在控制台通过Scanner输入黑白棋坐标),使用实心五角星和空心五角星表示黑白棋子.

 输入后重新输出棋盘如下图:

黑白棋依次重复输入下棋,当任意一方构成五子相连时提示胜利,结束游戏.

代码入下:

public class WuZiqi {
    static int i,j;
    static Scanner sc = new Scanner(System.in);
    public static void main(String[] args) {
        int num = 15;
        int [][] a = new int[num][num];
        int b=0;
        while (true){
            for (int i = 0; i < a.length; i++) {
                for (int j = 0; j < a[i].length; j++) {
                    if (a[i][j] == 0) {
                        System.out.print("十");
                    }else if (a[i][j] == 1) {
                        System.out.print("★");
                    }else if (a[i][j] == 2){
                        System.out.print("☆");
                    }
                }
                System.out.println();
            }
            for (int i = 0; i < a.length; i++) {
                for (int j = 0; j < a[i].length; j++) {
                    if (a[i][j] == 1 &&a[i][j+1] == 1 &&a[i][j+2] == 1 &&a[i][j+3] == 1 &&a[i][j+4] == 1) {
                        System.out.println("黑棋胜");
                        return;
                    }else if (a[i][j] == 2&&a[i][j+1] == 2 &&a[i][j+2] == 2 &&a[i][j+3] == 2 &&a[i][j+4] == 2) {
                        System.out.println("白棋胜");
                        return;
                    }
                    if (a[i][j] == 1 &&a[i+1][j] == 1 &&a[i+2][j] == 1 &&a[i+3][j] == 1 &&a[i+4][j] == 1) {
                        System.out.println("黑棋胜");
                        return;
                    }else if (a[i][j] == 2 &&a[i+1][j] == 2 &&a[i+2][j] == 2 &&a[i+3][j] == 2 &&a[i+4][j] == 2){
                        System.out.println("白棋胜");
                        return;
                    }
                    if (a[i][j] == 1 &&a[i+1][j+1] == 1 &&a[i+2][j+2] == 1 &&a[i+3][j+3] == 1 &&a[i+4][j+4] == 1) {
                        System.out.println("黑棋胜");
                        return;
                    }else if(a[i][j] == 2 &&a[i+1][j+1] == 2 &&a[i+2][j+2] == 2 &&a[i+3][j+3] == 2 &&a[i+4][j+4] == 2){
                        System.out.println("白棋胜");
                        return;
                    }
                    if (i>3&&a[i][j] == 1 &&a[i-1][j+1] == 1 &&a[i-2][j+2] == 1 &&a[i-3][j+3] == 1 &&a[i-4][j+4] == 1) {
                        System.out.println("黑棋胜");
                        return;
                    }else if(i>3&&a[i][j] == 2 &&a[i-1][j+1] == 2 &&a[i-2][j+2] == 2 &&a[i-3][j+3] == 2 &&a[i-4][j+4] == 2){
                        System.out.println("白棋胜");
                        return;
                    }
                }
            }
            b++;
            A:if (b%2 == 1) {
                System.out.println("请黑棋下子");
                i =sc.nextInt();
                j =sc.nextInt();
                if (i>num||j>num||a[i-1][j-1]==1||a[i-1][j-1]==2){
                    System.out.println("您下子的位置有问题");
                    b--;
                    break A;
                }else {
                    a[i - 1][j - 1] = 1;
                }
            }else{
                System.out.println("请白棋下子");
                i =sc.nextInt();
                j =sc.nextInt();
                if (i>num||j>num||a[i-1][j-1]==1||a[i-1][j-1]==2){
                    System.out.println("您下子的位置有问题");
                    b--;
                    break A;
                }else {
                    a[i - 1][j - 1] = 2;
                }
            }

        }
    }
}

结果如下:

十十十十十十★十十十十十十十十
十★★十★十十十十十十十十十十
十十十十十十★十十十十十十十十
十十十十十十十十十十十十十十十
十十十☆☆☆☆☆十十十十十十十
十十十十十十十十十十十十十十十
十十十十十十十十十十十十十十十
十十十十十十十十十十十十十十十
十十十十十十十十十十十十十十十
十十十十十十十十十十十十十十十
十十十十十十十十十十十十十十十
十十十十十十十十十十十十十十十
十十十十十十十十十十十十十十十
十十十十十十十十十十十十十十十
十十十十十十十十十十十十十十十
白棋胜

最后,觉得有用的话,可以点赞、收藏,加关注哟,要不下次就找不见了哟!

java五子棋 五子棋 java 五子棋代码直接和电脑下对战 Public class FiveChessAI { public int data_a[][] = new int[5][3];// 用于储存进攻值 public int data_d[][] = new int[5][3];// 用于储存防守值 FiveChessAI() { // 进攻值的初始化 data_a[1][1] = 2; data_a[1][2] = 3; data_a[2][1] = 10; data_a[2][2] = 110; data_a[3][1] = 2500; data_a[3][2] = 3000; data_a[4][1] = 99999; data_a[4][2] = 99999; // 防守值的初始化 data_d[1][1] = 1; data_d[1][2] = 2; data_d[2][1] = 1; data_d[2][2] = 100; data_d[3][1] = 100; data_d[3][2] = 500; data_d[4][1] = 20000; data_d[4][2] = 50000; } public FiveChessMap g1 = new FiveChessMap(); public int x, y; void find()// 查找最大值 { int max = 0; for (int i = 0; i < 15; ++i) { for (int j = 0; j < 15; ++j) { if (max < g1.data[i][j]) { max = g1.data[i][j]; } } } for (int i = 0; i < 15; ++i) { for (int j = 0; j < 15; ++j) { if (max == g1.data[i][j]) { x = i; y = j; return; } } } } int getx()// 返回x坐标值 { return x; } int gety()// 返回y坐标值 { return y; } boolean judge_result(int x, int y, int who, FiveChessMap gm)// 判断胜负 { int m, n, i, lianzi = 0; for (m = -1; m <= 1; m++) for (n = -1; n <= 1; n++) { if (m != 0 || n != 0) { for (i = 1; i <= 4; i++) { if (x + i * m >= 0 && x + i * m < 15 && y + i * n >= 0 && y + i * n < 15 && gm.data[x + i * m][y + i * n] == who) { lianzi++; } else { break; } } for (i = -1; i >= -4; i--) { if (x + i * m >= 0 && x + i * m < 15 && y + i * n >= 0 && y + i * n < 15 && gm.data[x + i * m][y + i * n] == who) { lianzi++; } else { break; } } if (lianzi >= 4) { return true; } else { lianzi = 0; } } } return false; }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值