实现发牌前我们需先将牌 的顺序打乱,这个打乱的过程可以使用Java的内置函数,在java.util.Collections包中的shuffle方法,对牌的列表进行打乱顺序,然后通过循环遍历将牌分发三个玩家,最后留出三张底牌
第一步:定义容器,做好准备工作:
arr1 为牌的花色的数组,arr2为牌的数值大小
// 准备牌操作
ArrayList<String> card = new ArrayList<>();
ArrayList<String> color1 = new ArrayList<>();
String []arr1 = { "♠","♥","♣","♦"};
for(String s2 :arr1){
color1.add(s2);
}
ArrayList<String> number = new ArrayList<>();
String []arr2 = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
for (String s1 : arr2) {
number.add(s1);
}
第二步:组装牌。通过嵌套循环,然后使用字符串拼接将花色color和牌的数值number组装在一起。最后加入大王小王
//组装牌;
for (String string : number) {
for (String str : color1) {
card.add(string+str);
}
}
card.add("大王");
card.add("小王");
第三步:洗牌
Collections.shuffle(card);
第四步:发牌,定义四个容器:玩家1,玩家2,玩家3,底牌。通过循环,按照顺序来进行发牌,最后留三张作为底牌。
ArrayList<String> player1 = new ArrayList<>();
ArrayList<String> player2 = new ArrayList<>();
ArrayList<String> player3 = new ArrayList<>();
ArrayList<String> dipai = new ArrayList<>();
for(int i = 0;i<54;i++){
if(i<51){
player1.add(card.get(i));
i++;
player2.add(card.get(i));
i++;
player3.add(card.get(i));
}else{
dipai.add(card.get(i));
}
}
运行结果如下所示:
源代码
import java.util.ArrayList;
import java.util.Collections;
public class Poker{
public Poker(){}
public static void main(String[] args) {
// 准备牌操作
ArrayList<String> card = new ArrayList<>();
ArrayList<String> color1 = new ArrayList<>();
String []arr1 = { "♠","♥","♣","♦"};
for(String s2 :arr1){
color1.add(s2);
}
ArrayList<String> number = new ArrayList<>();
String []arr2 = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
for (String s1 : arr2) {
number.add(s1);
}
//组装牌;
for (String string : number) {
for (String str : color1) {
card.add(string+str);
}
}
card.add("大王");
card.add("小王");
// 洗牌
Collections.shuffle(card);
// 发牌
ArrayList<String> player1 = new ArrayList<>();
ArrayList<String> player2 = new ArrayList<>();
ArrayList<String> player3 = new ArrayList<>();
ArrayList<String> dipai = new ArrayList<>();
for(int i = 0;i<54;i++){
if(i<51){
player1.add(card.get(i));
i++;
player2.add(card.get(i));
i++;
player3.add(card.get(i));
}else{
dipai.add(card.get(i));
}
}
//看牌
System.out.println("玩家1:"+player1);
System.out.println("玩家2:"+player2);
System.out.println("玩家3:"+player3);
System.out.println("底牌:"+dipai);
}
}