步骤:
第一步:创建牌,用三个集合来装,数据类型是String,集合用Arr…的,第一个数组装花色,第二个数组装牌值(除去大小王),第三个集合装整副牌(将花色和牌值结合)。
第二步:洗牌,使用Collections工具类中的方法:static void shuffle(List<?> list):使用指定的随机源对指定列表进行置换,即打乱牌序。
第三步:发牌,玩家三名,底牌三张。定义四个集合,三个存储玩家牌,一个存储底牌,用for循环与if语句实现。
代码:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
public class FightAgainstLandlords {
public static void main(String[] args) {
//测试类,因为方法是静态的,直接用类名调用方法
FightAgainstLandlords01.new01();
}
}
class FightAgainstLandlords01{
/*第一步:创建牌,用三个集合来装,数据类型是String,集合用Arr...的,
第一个数组装花色,第二个数组装牌值(除去大小王),第三个集合装整副牌(将花色和牌值结合)
*/
public static void new01(){
String[] decor={"♠","♥","♣","♦"};
String[] CardValue={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
ArrayList<String> a=new ArrayList<>();//定义一个集合,类型是String
for(String s:decor){ //用两增强for循环遍历数组,遍历的同时将花色与牌值进行结合并赋给第三个集合(即装整副牌的集合)
for (String s1:CardValue){
a.add(s+s1);
}
}
a.add("大王");//单独将大小王录入
a.add("小王");
/*
第二步:洗牌,使用Collections工具类中的方法:static void shuffle(List<?> list):使用指定的随机源对指定列表进行置换,即打乱牌序。
*/
Collections.shuffle(a);//打乱顺序
/*
第三步:发牌,玩家三名,底牌三张。
*/
ArrayList<String> a1=new ArrayList<>();//玩家一
ArrayList<String> a2=new ArrayList<>();//玩家二
ArrayList<String> a3=new ArrayList<>();//玩家三
ArrayList<String> a4=new ArrayList<>();//底牌
//利用取余来轮流发牌,因为i对三取余的值只能是0,1,2,即分别代表一个玩家,最后当i>=51时,剩下的就是底牌三张。
for(int i=0;i<a.size();i++){
if(i%3==0&&i<51)a1.add(a.get(i));//给玩家一发牌
else if(i%3==1&&i<51)a2.add(a.get(i));//给玩家二发牌
else if(i%3==2&&i<51)a3.add(a.get(i));//给玩家三发牌
else if(i>=51&&i<54)a4.add(a.get(i));//底牌
}
System.out.println("玩家一:"+a1+"\n"+"玩家二:"+a2+"\n"+"玩家三:"+a3+"\n"+"底牌:"+a4);
}
}
结果:
玩家一:[♦J, ♣3, ♣9, ♥6, ♠9, ♥4, ♠7, ♦2, ♣4, ♥3, ♦6, ♦3, ♠10, 大王, ♠Q, ♣8, ♥8]
玩家二:[♣5, ♠A, ♠3, ♥9, ♦10, ♥2, ♣6, ♥Q, ♦K, ♠2, ♥A, ♣A, ♣7, ♦A, ♥J, ♥K, ♦Q]
玩家三:[♦4, ♣J, ♦9, ♣2, ♠6, ♣10, ♠4, ♠5, ♦5, ♦7, ♥7, ♥10, ♥5, ♣Q, 小王, ♣K, ♠K]
底牌:[♠J, ♠8, ♦8]