Rumah  >  Artikel  >  Java  >  Bagaimana untuk melaksanakan backgammon tanpa antara muka mudah di Java

Bagaimana untuk melaksanakan backgammon tanpa antara muka mudah di Java

WBOY
WBOYke hadapan
2023-04-27 18:40:071109semak imbas

Pengenalan projek:

Reka bentuk ini ialah program permainan backgammon kecil yang dibangunkan berdasarkan mata pengetahuan kelas Java, objek dan tatasusunan. Pada permulaan permainan, pilih catur hitam atau putih untuk dimulakan, letakkan sekeping catur pada koordinat pertama papan catur, dan kemudian bergilir-gilir untuk meletakkan buah catur, dan seterusnya, sehingga satu bahagian mula-mula menyambung lima buah dalam menegak, mendatar, atau dua arah pepenjuru papan catur, bahagian itu memenangi pusingan.

Idea pelaksanaan projek:

1 Papan catur direka bentuk untuk menjadi 10*10 grid, jenis papan catur ialah tatasusunan dua dimensi, mengandungi atribut String chessType; Nilai caturType pertama papan catur ialah "➕ ".
2. Mulakan tatasusunan dua dimensi
3 Selepas pemain memilih bulatan hitam dan putih, dia mula bermain catur. Masukkan koordinat baris dan lajur buah catur yang akan dimainkan, dan buah catur hitam dan putih akan diletakkan secara bergilir-gilir Apabila satu bahagian mempunyai lima buah berturut-turut atau papan penuh, permainan berakhir (sebelah dengan lima kepingan berturut-turut menang, dan papan penuh adalah seri).
4 Selepas setiap penempatan yang berjaya, tentukan dengan segera sama ada terdapat buah catur dengan warna yang sama dalam lapan arah berpusat pada kedudukan itu: atas, bawah, kiri, kanan, kiri atas, kiri bawah, kanan atas dan kanan bawah. . Jika Jika lima keping disambungkan, permainan tamat dan maklumat yang sepadan dikeluarkan.
5. Apabila satu pihak permainan menang, maklumat kemenangan dipaparkan. Dari permukaan program, ini ialah peta satah dua dimensi, jadi data diwakili oleh tatasusunan dua dimensi Kedua-dua subskrip tatasusunan boleh mewakili kedudukan pada papan catur keadaan papan catur masing-masing Terdapat tiga situasi Ya, ⭕ mewakili catur putih, ● mewakili catur hitam, dan ➕ mewakili grid.

Kod sumber

1. Buah catur

/**
 * @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. > 3. Ujian

/**
 * @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();
        }
    }

}

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan backgammon tanpa antara muka mudah di Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam