Maison >Java >javaDidacticiel >Comment implémenter des fonctions simples de brassage et de traitement en Java
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.
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é.
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+"}"; } }
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 = {"♥","♣","♦","♠"};
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(); } }
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.
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.
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; }
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(Listpoker) { 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); } }
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!