Maison >Java >javaDidacticiel >Comment implémenter un backgammon simple sans interface en Java

Comment implémenter un backgammon simple sans interface en Java

WBOY
WBOYavant
2023-04-27 18:40:071161parcourir

Introduction au projet :

Cette conception est un petit programme de jeu de backgammon développé sur la base de points de connaissance, de classes Java, d'objets et de tableaux. Au début du jeu, choisissez les échecs noirs ou blancs pour commencer, placez une pièce d'échecs sur la première coordonnée de l'échiquier, puis placez à tour de rôle les pièces d'échecs, et ainsi de suite, jusqu'à ce qu'un côté connecte d'abord cinq pièces dans le verticale, horizontale ou dans deux directions diagonales de la ligne de l'échiquier, ce côté gagne la partie.

Idées de mise en œuvre du projet :

1. La conception de l'échiquier est constituée de grilles 10*10. Le type d'échiquier est Chess[][] tableau bidimensionnel, qui contient l'attribut String chessType ; ".
2. Initialisez le tableau bidimensionnel
3. Une fois que le joueur a sélectionné le cercle noir et blanc, il commence à jouer aux échecs. Entrez les coordonnées de ligne et de colonne des pièces d'échecs à jouer, et les pièces d'échecs noires et blanches seront placées à tour de rôle lorsqu'un côté a cinq pièces d'affilée ou que le plateau est plein, la partie se termine (le côté avec cinq). les pièces consécutives gagnent et le tableau complet est un match nul).
4. Après chaque placement réussi, déterminez immédiatement s'il y a des pièces d'échecs de la même couleur dans les huit directions centrées sur cette position : haut, bas, gauche, droite, supérieur gauche, inférieur gauche, supérieur droit et inférieur droit. donc, Cinq pièces, le jeu se termine et les informations correspondantes sont affichées.
5. Lorsqu'un camp gagne, les informations de victoire s'affichent. Du point de vue du programme, il s'agit d'une carte plane bidimensionnelle, donc les données sont représentées par un tableau bidimensionnel. Les deux indices du tableau peuvent représenter la position sur l'échiquier. La valeur de l'élément du tableau représente la. état de l'échiquier. Il existe respectivement trois situations Oui, ⭕ représente les échecs blancs, ● représente les échecs noirs et ➕ représente la grille.

Code source

1. Pièce d'échecs

/**
 * @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. Jouer aux échecs

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer