java五子棋

注:完整的代码在最后;

1.先定义一个包:package Day4project;

2.包内定义类:public class wuziqiRun{}这个专门用来开始游戏

3.引入控制台输入的包:import java.util.Scanner;

4.定义main方法: public static void main(String[] args) {}

5.在同一个包内在定义一个类public class wuziqi {}这个类专门来写游戏代码

   以下是代码思路:
   1.
     初始化棋盘 抽取到一个方法中
     打印棋盘 抽取到一个方法中
   2.
    黑白双方交替下棋
    打印棋盘
   3.
     判断是否越界
     判断是否重复
     判断输赢
 代码专门使用的:
public class wuziqi {
    static String white = "☆";
    static String black = "★";
    static String[][] qp = new String[15][15];//棋盘
    static String[] num = {"⒈","⒉","⒊","⒋","⒌","⒍","⒎","⒏","⒐","⒑","⒒","⒓","⒔","⒕","⒖"};
    static String line = "十";

6.定义多个方法去完善游戏:
    1.启动五子棋游戏
    public static void start() {}

2.输入棋盘的方法
    public static void init() {

        for (int i = 0; i < 15; i++) {
            for (int j = 0; j < 15; j++) {

                if(i!=14&&j!=14){
                    qp[i][j]=line;
                }
                else if(j==14){
                    qp[i][j]=num[i];
                }
                else if(i==14){
                    qp[i][j]=num[j];
                }

            }
        }
    }

3.打印棋盘的方法:
        public static void print () {
            for (int i = 0; i < 15; i++) {
                for (int j = 0; j <15; j++) {
                    System.out.print(qp[i][j]);

                }
                System.out.println();
            }
        }

4.开始游戏的方法:

   里面以调用下面的结束游戏的放法

public static void startGame() {
        int n,m;//白
        int s,t;//黑
        boolean e=true;
        for(;;){
            if (e == true) {

                Scanner a = new Scanner(System.in);
                Scanner b = new Scanner(System.in);
                n = a.nextInt();//横标
                m = b.nextInt();//纵标
                if (qp[n][m] != "☆" && qp[n][m] != "★") {
                    if(n<=13&&n>=0&&m<=13&&m>=0) {
                        qp[n][m] = white;
                        print();//白棋
                        boolean u = gameOver();//游戏结束
                        if (u == true) {
                            return;
                        }
                        e = false;
                    }
                }
            }
            if (e == false) {
                Scanner c = new Scanner(System.in);
                Scanner d = new Scanner(System.in);
                s = c.nextInt();//横标
                t = d.nextInt();//纵标
                if (qp[s][t] != "☆" && qp[s][t] != "★") {
                    if(s<=13&&s>=0&&t<=13&&t>=0){
                    qp[s][t] = black;
                    print();//黑棋
                    boolean r =gameOver();
                    //游戏结束
                    if(r==true){
                        return;
                    }
                    e = true;
                    }
                }
            }
        }

    }

5.游戏结束的方法

一共4个方向(水平,垂直,主对角线,副对角线)

    public static boolean gameOver() {
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 14; j++) {
                if (qp[i][j] == qp[i + 1][j] && qp[i + 2][j] == qp[i][j] && qp[i + 3][j] == qp[i][j] && qp[i + 4][j] == qp[i][j]&&qp[i][j]!="十") {
                    //列5个相同
                    return true;
                }
            }
        }
        for (int i = 0; i < 14; i++) {
            for (int j = 0; j < 10; j++) {
                if (qp[i][j] == qp[i][j + 1] && qp[i][j + 2] == qp[i][j] && qp[i][j + 3] == qp[i][j] && qp[i][j + 4] == qp[i][j]&&qp[i][j]!="十") {
                    //行5个相同
                    return true;
                }
            }
        }
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                if (qp[i][j] == qp[i + 1][j + 1] && qp[i][j] == qp[i + 2][j + 2] && qp[i][j] == qp[i + 3][j + 3] && qp[i][j] == qp[i + 4][j + 4]&&qp[i][j]!="十") {
                    return true;//主对角线
                }
            }
        }
        for(int i=0;i<10;i++){
            for(int j=4;j<14;j++){
                if (qp[i][j] == qp[i + 1][j - 1] && qp[i][j] == qp[i + 2][j - 2] && qp[i][j] == qp[i + 3][j - 3] && qp[i][j] == qp[i + 4][j - 4]&&qp[i][j]!="十") {
                    return true;//副对角线
                }
            }
        }

        return false;
    }


}

代码如下:

//第一个类

package Day4project;

import java.util.Scanner;

public class wuziqiRun {

    public static void main(String[] args) {
        System.out.println("游戏规则:");
        System.out.println("1.率先连线5个即为成功");
        System.out.println("2.注意:如果越界或重复不算请重新下一棋子");
        System.out.println("3.游戏中不在警告,请好自为之");
        wuziqi.start();


    }

}

//开第二个类

package Day4project;



import java.util.Scanner;

/*
   1.
     初始化棋盘 抽取到一个方法中
     打印棋盘 抽取到一个方法中
   2.
    黑白双方交替下棋
    打印棋盘
   3.
     判断是否越界
     判断是否重复
     判断输赢
 */
public class wuziqi {
    static String white = "☆";
    static String black = "★";
    static String[][] qp = new String[15][15];//棋盘
    static String[] num = {"⒈","⒉","⒊","⒋","⒌","⒍","⒎","⒏","⒐","⒑","⒒","⒓","⒔","⒕","⒖"};
    static String line = "十";


    //启动五子棋游戏
    public static void start() {
        init();//输入棋盘
        print();//打印棋盘
        startGame();//开始游戏

    }
    public static void init() {

        for (int i = 0; i < 15; i++) {
            for (int j = 0; j < 15; j++) {

                if(i!=14&&j!=14){
                    qp[i][j]=line;
                }
                else if(j==14){
                    qp[i][j]=num[i];
                }
                else if(i==14){
                    qp[i][j]=num[j];
                }

            }
        }
    }
        public static void print () {
            for (int i = 0; i < 15; i++) {
                for (int j = 0; j <15; j++) {
                    System.out.print(qp[i][j]);

                }
                System.out.println();
            }
        }

    public static void startGame() {
        int n,m;//白
        int s,t;//黑
        boolean e=true;
        for(;;){
            if (e == true) {

                Scanner a = new Scanner(System.in);
                Scanner b = new Scanner(System.in);
                n = a.nextInt();//横标
                m = b.nextInt();//纵标
                if (n <= 13 && n >= 0 && m <= 13 && m >= 0) {
                    if (qp[n][m] != "☆" && qp[n][m] != "★") {

                        qp[n][m] = white;
                        print();//白棋
                        boolean u = gameOver();//游戏结束
                        if (u == true) {
                            return;
                        }
                        e = false;
                    }
                }
            }
            if (e == false) {
                Scanner c = new Scanner(System.in);
                Scanner d = new Scanner(System.in);
                s = c.nextInt();//横标
                t = d.nextInt();//纵标
                if (s <= 13 && s >= 0 && t <= 13 && t >= 0) {
                    if (qp[s][t] != "☆" && qp[s][t] != "★") {

                    qp[s][t] = black;
                    print();//黑棋
                    boolean r =gameOver();
                    //游戏结束
                    if(r==true){
                        return;
                    }
                    e = true;
                    }
                }
            }
        }

    }

    public static boolean gameOver() {
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 14; j++) {
                if (qp[i][j] == qp[i + 1][j] && qp[i + 2][j] == qp[i][j] && qp[i + 3][j] == qp[i][j] && qp[i + 4][j] == qp[i][j]&&qp[i][j]!="十") {
                    //列5个相同
                    return true;
                }
            }
        }
        for (int i = 0; i < 14; i++) {
            for (int j = 0; j < 10; j++) {
                if (qp[i][j] == qp[i][j + 1] && qp[i][j + 2] == qp[i][j] && qp[i][j + 3] == qp[i][j] && qp[i][j + 4] == qp[i][j]&&qp[i][j]!="十") {
                    //行5个相同
                    return true;
                }
            }
        }
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                if (qp[i][j] == qp[i + 1][j + 1] && qp[i][j] == qp[i + 2][j + 2] && qp[i][j] == qp[i + 3][j + 3] && qp[i][j] == qp[i + 4][j + 4]&&qp[i][j]!="十") {
                    return true;//从左上往右下5个相同
                }
            }
        }
        for(int i=0;i<10;i++){
            for(int j=4;j<14;j++){
                if (qp[i][j] == qp[i + 1][j - 1] && qp[i][j] == qp[i + 2][j - 2] && qp[i][j] == qp[i + 3][j - 3] && qp[i][j] == qp[i + 4][j - 4]&&qp[i][j]!="十") {
                    return true;
                }
            }
        }

        return false;
    }


}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值