Maison  >  Article  >  Java  >  Comment implémenter des fonctions simples de brassage et de traitement en Java

Comment implémenter des fonctions simples de brassage et de traitement en Java

WBOY
WBOYavant
2023-05-10 20:22:04980parcourir

Idée de code

Pour distribuer et mélanger les cartes, nous avons d'abord besoin de cartes à jouer. Chaque carte différente correspond à une couleur et un numéro différents. Ici, nous devons faire abstraction d'une paire d'objets de cartes à jouer, puis mélanger les cartes au hasard. l'ordre des cartes à jouer, puis distribuez les cartes, et tout le monde distribue également le même nombre de cartes à jouer.

Mise en œuvre du code

Nous créons ici un package Poker pour envelopper nos cours liés au poker. Créez trois fichiers Java dans le package Poker : le fichier Poker est utilisé pour générer des cartes à jouer, y compris les couleurs et les points ; le fichier Game est utilisé pour implémenter les fonctions de création d'un jeu de cartes à jouer, de mélange et de distribution des cartes et le fichier Test ; est utilisé par nos soins Testé.

Le fichier Java du poker résume une carte à jouer

package poker;

public class Poker {

//扑克牌的点数
    private int rank;
//扑克牌的花色
    private String suit;

//创建构造方法
    public Poker(int rank, String suit) {
        this.rank = rank;
        this.suit = suit;
    }

//以下这些方法我们今天暂时用不上
    public int getRank() {
        return rank;
    }

    public void setRank(int rank) {
        this.rank = rank;
    }

    public String getSuit() {
        return suit;
    }

//重写toString方法
    @Override
    public String toString() {
        return "{ "+rank+" "+suit+"}";
    }
}

Le fichier Java du jeu implémente les fonctions de mélange et de distribution

Créer des variables membres de tableaux de chaînes qui stockent les combinaisons

Ces combinaisons ne peuvent pas être modifiées et ne sont disponibles qu'actuellement. dans la classe, nous utilisons donc directement
modification finale statique privée pour assurer la sécurité.

private static final String[] suit = {"♥","♣","♦","♠"};

Créez un jeu de cartes à jouer

Nous utilisons un tableau pour stocker les cartes à jouer

public List<Poker> buyPoker() {
        List<Poker> pokers = new ArrayList<>();
        for (int i = 0; i < 4; i++) {
            for (int j = 1; j <=13 ; j++) {
                Poker poker = new Poker(j,suit[i]);
                pokers.add(poker);
            }
        }
        return pokers;
    }

Utilisez Test pour voir si la création est réussie Lorsque nous écrivons du code, nous devons développer l'habitude de tester pendant l'écriture, de sorte que. les erreurs peuvent être découvertes à temps.

public class Test {
    public static void main(String[] args) {
        Game game = new Game();
        List<Poker> poker = game.buyPoker();
    }
}

Comment implémenter des fonctions simples de brassage et de traitement en Java

Shuffle

	public void shuffle(List<Poker> poker) {
        for (int i = poker.size()-1; i > 0 ; i--) {
            Random random = new Random();
            int index = random.nextInt(i);
            swap(poker,i,index);
        }
    }
    
//创建私有方法来实现交换
	private void swap(List<Poker> pokers,int i,int j) {
        Poker tmp = pokers.get(i);
        pokers.set(i,pokers.get(j));
        pokers.set(j,tmp);
    }

De même, faisons un test.

Comment implémenter des fonctions simples de brassage et de traitement en Java

Nous pouvons le constater : notre fonction de mélange a été implémentée, et l'ordre des cartes à jouer générées est différent à chaque fois.

Distribution des cartes

Ici, nous créons un tableau bidimensionnel pour stocker les mains des trois joueurs.

public List<List<Poker>> game(List<Poker> pokers) {
        List<List<Poker>> hand = new ArrayList<>();
        List<Poker> hand1 = new ArrayList<>();
        List<Poker> hand2 = new ArrayList<>();
        List<Poker> hand3 = new ArrayList<>();
        hand.add(hand1);
        hand.add(hand2);
        hand.add(hand3);

        for (int i = 0; i < 3; i++) {
        //我们这里测试每人分发五张
            for (int j = 0; j < 5; j++) {
//我们默认每次从下标为0的位置分发,并且分发一次就移除这个下表为0的扑克牌,
//移除之后,它后面的数字也会自动补齐到0位置
                Poker tmp = pokers.remove(0);
                hand.get(i).add(tmp);
            }
        }
        return hand;
    }

Implémentation globale des fonctions

Poker.java

public class Poker {
    private int rank;
    private String suit;

    public Poker(int rank, String suit) {
        this.rank = rank;
        this.suit = suit;
    }

    public int getRank() {
        return rank;
    }

    public void setRank(int rank) {
        this.rank = rank;
    }

    public String getSuit() {
        return suit;
    }

    @Override
    public String toString() {
        return "{ "+rank+" "+suit+"}";
    }
}

Game.java

import java.util.ArrayList;
import java.util.List;
import java.util.Random;


public class Game {
    private static final String[] suit = {"♥","♣","♦","♠"};
    public List<Poker> buyPoker() {
        List<Poker> pokers = new ArrayList<>();
        for (int i = 0; i < 4; i++) {
            for (int j = 1; j <=13 ; j++) {
                Poker poker = new Poker(j,suit[i]);
                pokers.add(poker);
            }
        }
        return pokers;
    }

    //洗牌
    public void shuffle(List poker) {
        for (int i = poker.size()-1; i > 0 ; i--) {
            Random random = new Random();
            int index = random.nextInt(i);
            swap(poker,i,index);
        }
    }

    private void swap(List pokers,int i,int j) {
        Poker tmp = pokers.get(i);
        pokers.set(i,pokers.get(j));
        pokers.set(j,tmp);
    }

    public List> game(List pokers) {
        List> hand = new ArrayList<>();
        List hand1 = new ArrayList<>();
        List hand2 = new ArrayList<>();
        List hand3 = new ArrayList<>();
        hand.add(hand1);
        hand.add(hand2);
        hand.add(hand3);

        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 5; j++) {
                Poker tmp = pokers.remove(0);
                hand.get(i).add(tmp);
            }
        }
        return hand;
    }
}

Test.java

public class Test {
    public static void main(String[] args) {
        Game game = new Game();
        List<Poker> poker = game.buyPoker();
        System.out.println(poker);
        game.shuffle(poker);
        System.out.println(poker);
        List<List<Poker>> hand = game.game(poker);
        for (int i = 0; i < hand.size(); i++) {
            System.out.println("第"+(i+1)+"个人的牌"+hand.get(i));
        }
        System.out.println("剩下的牌");
        System.out.println(poker);
    }
}

Comment implémenter des fonctions simples de brassage et de traitement en Java

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