Untuk menangani dan mengocok kad, kita perlu bermain kad terlebih dahulu Setiap kad yang berbeza sepadan dengan sut dan nombor yang berbeza Di sini kita perlu mengabstrakkan sepasang objek kad permainan, dan kemudian Kepada kocok kad, kami kocok secara rawak susunan kad bermain, dan kemudian berurusan dengan kad Semua orang mengedarkan bilangan kad permainan yang sama.
Kami mencipta pakej Poker di sini untuk membungkus kelas berkaitan poker kami. Cipta tiga fail Java dalam pakej Poker: fail Poker digunakan untuk menjana kad permainan, termasuk sut dan mata fail digunakan untuk melaksanakan fungsi mencipta satu set kad permainan, kocok dan kad transaksi; digunakan oleh kami Diuji.
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+"}"; } }
Mencipta pembolehubah ahli untuk menyimpan tatasusunan rentetan sut
Warna ini tidak boleh ditukar dan hanya boleh digunakan dalam kelas semasa, jadi kami terus menggunakan
pengubahsuaian akhir statik peribadi untuk memastikan keselamatan.
private static final String[] suit = {"♥","♣","♦","♠"};
Kami menggunakan tatasusunan untuk menyimpan kad permainan
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; }
Gunakan Ujian untuk melihat sama ada penciptaan itu berjaya apabila menulis kod Mempunyai tabiat menguji semasa menulis supaya kesilapan dapat ditemui dalam masa.
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); }
Begitu juga, mari kita buat ujian.
Kita dapat lihat: Fungsi shuffling kami telah dilaksanakan, dan susunan kad permainan yang dijana adalah berbeza setiap kali.
Di sini kami mencipta tatasusunan dua dimensi untuk menyimpan tangan tiga pemain.
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); } }
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan fungsi shuffling dan berurusan mudah di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!