91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java怎么實現簡單無界面五子棋

發布時間:2022-05-05 09:22:57 來源:億速云 閱讀:115 作者:zzz 欄目:開發技術

這篇“Java怎么實現簡單無界面五子棋”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Java怎么實現簡單無界面五子棋”文章吧。

項目介紹:

本次設計是基于知識點Java類和對象以及數組開發的一個小型五子棋游戲程序。游戲開始時,選擇黑棋、白棋開局,將一枚棋子落在棋盤一坐標上,然后輪番落子,如此輪流下子,直到某一方首先在棋盤的豎、橫或兩斜四方向上的五子連成線,則該方該局獲勝。

項目實現思路:

1、棋盤設計為10*10格,棋盤類型Chess[][] 二維數組,所含屬性String chessType; 棋盤首先chessType值是”?”。
2、初始化二維數組
3、玩家選擇黑白圈后,開始下棋。輸入要下棋子的行列坐標,黑白棋子輪流落子,當一方連成五子或下滿棋盤時,游戲結束(連成五子的一方獲勝,下滿棋盤為和棋)。
4、每一次落子成功后,馬上判斷以該位置為中心的八個方向:上、下、左、右、左上、左下、右上、右下是否有相同顏色的棋子連成五子,如果連成五子,則游戲結束,輸出相應的信息。
5、當游戲一方勝利后顯示勝利信息。從程序表面看,這是一個二維平面圖,所以數據用二維數組來表示,數組兩個下標可以表示棋盤上的位置,數組元素的值代表棋格上的狀態,共有三種情況,分別是,?代表白棋,●代表黑棋,?代表格子。

源代碼

1.棋子

/**
 * @author hudongsheng
 * @date 2020/10/29 - 9:28
 */
public class ChessType {
    private String chessType;
    private int x;
    private int y;

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }


    public ChessType() {

    }

    public String getChessType() {
        return chessType;
    }

    public void setChessType(String chessType) {
        this.chessType = chessType;
    }
}

2.下棋

/**
 * @author hudongsheng
 * @date 2020/10/29 - 9:27
 */
public class Gobang {
    private int size = 1;
    private ChessType[][] chessTypes;
    private int row;
    private int colum;
    private int x;
    private int y;


    //創建一個棋盤
    public Gobang(int row,int colum){
        this.row = row;
        this.colum = colum;
        chessTypes = new ChessType[row][colum];
    }

    //初始化棋盤
    public void initChessType(){

        for(int i = 0; i< chessTypes.length; i++){
            for (int j = 0; j< chessTypes[i].length; j++){
                chessTypes[i][j] = new ChessType();
                chessTypes[i][j].setChessType("?");
            }
        }
    }

    //下白棋
    public void setWhiteChess(int x,int y){
        chessTypes[x][y].setChessType("?");
    }

    //下黑棋
    public void setBlackChess(int x,int y){
        chessTypes[x][y].setChessType("●");
    }

   //判斷是否勝利
        public boolean checkWin(int i,int j) {
            // TODO Auto-generated method stub
            boolean flag = false;
            //判斷縱向是否有五個棋子是相同的顏色
            int count1 = 1;//相同顏色棋子的個數
            String color = chessTypes[i][j].getChessType(); //剛下的棋子的顏色
            int a = 1;  //棋子索引的增量
            while((i+a)<row && color == chessTypes[i+a][j].getChessType()){
                count1++;
                a++;
            }
            a = 1;
            while((i-a)>=0 && color == chessTypes[i-a][j].getChessType()){
                count1++;
                a++;
            }
            if(count1 >= 5){
                flag = true;
            }

            //判斷縱向是否有五個棋子是相同的顏色
            int count2 = 1;
            a = 1;
            while((j+a)<colum && color == chessTypes[i][j+a].getChessType()){
                count2++;
                a++;
            }
            a = 1;
            while((j-a)>=0 && color == chessTypes[i][j-a].getChessType()){
                count2++;
                a++;
            }
            if(count2 >= 5){
                flag = true;
            }

            //右上    左下 是否有五個棋子是相同的顏色
            int count3 = 1;
            a = 1;
            while((i+a)<row && (j-a)>=0 && color == chessTypes[i+a][j-a].getChessType()){
                count3++;
                a++;
            }
            a = 1;
            while((i-a)>=0 && (j+a)<colum && color == chessTypes[i-a][j+a].getChessType()){
                count3++;
                a++;
            }
            if(count3 >= 5){
                flag = true;
            }

            //左上  右下  是否有五個棋子是相同的顏色
            int count4 = 1;
            a = 1;
            while((i-a)>0 && (j-a)>=0 && color == chessTypes[i-a][j-a].getChessType()){
                count4++;
                a++;
            }
            a = 1;
            while((i+a)<row && (j+a)<colum && color == chessTypes[i+a][j+a].getChessType()){
                count4++;
                a++;
            }
            if(count4 >= 5){
                flag = true;
            }
            return flag;
        }

        //落子后打印棋盤
    public void print(){
        for(int i = 0; i< chessTypes.length; i++){
            for (int j = 0; j< chessTypes[i].length; j++){
                System.out.print(chessTypes[i][j].getChessType());
            }
            System.out.println();
        }
    }

}

3.測試

**
 * @author hudongsheng
 * @date 2020/10/29 - 9:27
 */
public class Test {
    public static void main(String[] args) {
        boolean flag = true;
        int x;
        int y;

        Gobang gobang = new Gobang(10,10);
        Scanner scanner = new Scanner(System.in);

        gobang.initChessType();
        //下棋

        System.out.println("黑棋執先");
        while (true){
            gobang.print();
            System.out.println("請輸入下黑棋的坐標:");
            x = scanner.nextInt();
            y = scanner.nextInt();
            gobang.setBlackChess(x,y);
            if(gobang.checkWin(x,y)){
                gobang.print();
                System.out.println("黑棋勝!");
                break;
            }

            gobang.print();
            System.out.println("請輸入下白棋的坐標:");
            x = scanner.nextInt();
            y = scanner.nextInt();
            gobang.setWhiteChess(x,y);

            if(gobang.checkWin(x,y)){
                gobang.print();
                System.out.println("白棋勝!");
                break;
            }

        }
    }
}

以上就是關于“Java怎么實現簡單無界面五子棋”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

娄底市| 石城县| 灌阳县| 龙川县| 建湖县| 孟津县| 定襄县| 肃南| 惠州市| 哈巴河县| 双流县| 邮箱| 荥经县| 台中县| 五家渠市| 苏尼特左旗| 茂名市| 三穗县| 额济纳旗| 古浪县| 日照市| 南安市| 牙克石市| 灵台县| 开封县| 榆树市| 厦门市| 赞皇县| 西贡区| 札达县| 马山县| 唐海县| 利津县| 连江县| 剑阁县| 宣化县| 永吉县| 安福县| 永福县| 丹巴县| 武隆县|