规则如下: 1.有三名玩家,可从控制台赋值玩家姓名,玩家中会有牌类集合的属性,还有是否是地主的状态 2.牌类有两个属性:花色和点数。花色有4种:黑红梅方(可用枚举)点数对应有13加上两张王牌(可用枚举)。 3.扑克牌管理类:用于产生54张随即顺序的牌堆(牌类集合,54张牌不变,变得是顺序),给玩家发牌,并随机产生地主,把剩余3张底牌给地主,并展示三位玩家的手牌 评分标准: 1.能产生54张牌的集合(30分) 2.能产生随机的54张牌的集合或能实现随机发牌的功能(20分) 3.玩家类和三名玩家对象名称赋值(10分) 4.能实现随机产生地主,并给三位玩家分配牌的集合(20分)
题目内容的注释已经写在呢代码行里
public static void main(String[] args) {
ArrayList<String >list=new ArrayList<>();
//首先是存入牌,先把大王和小王存入
list.add("大王");
list.add("小王");
//然后先用两个数组分别存储花色和点数
String[] huaShe={"♠","♣","♥","♦"};
String[] dianShu={"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
for (String s : huaShe) {
for (String s1 : dianShu) {
list.add(s+s1);//这里将54张牌存入list集合
// System.out.println(s+s1);
}
}
//接下来是洗牌环节,要用到Collections方法
Collections.shuffle(list);//将54张牌随机打乱输出
System.out.println(list);
//接下来到了发牌阶段,三个人每人发17张牌就和存入到三个集合中,
//而对应的每个人可用i%3来代替索引,剩下的三张当i>51时取出
ArrayList<String > player1=new ArrayList<>();
ArrayList<String > player2=new ArrayList<>();
ArrayList<String > player3=new ArrayList<>();
ArrayList<String > dipai=new ArrayList<>();
//这里的分配要用到索引需要用普通for循环
for (int i = 0; i < list.size(); i++) {
String p=list.get(i);//将符合条件的值赋值给p,方便输出
if (i>=51){
dipai.add(p);
}else if (i%3==0){
player1.add(p);
}else if (i%3==1){
player2.add(p);
}else if (i%3==2){
player3.add(p);
}
}
// System.out.println(dipai);
// System.out.println(player1);
// System.out.println(player2);
// System.out.println(player3);
ArrayList<String > li=new ArrayList<>();//这里是为了给出玩家的姓名
li.add("张三");
li.add("李四");
li.add("王二麻子");
Collections.shuffle(li);//随机给地主,我在这里转化思想为地主固定,人物随机对应到地主,也可以实现地主随机
HashMap<String, String> hash=new HashMap<>();
for (int i = 0; i < li.size(); i++) {
if (i==0) {
hash.put("地主", li.get(i));
System.out.println("地主是:"+hash.get("地主")+",地主牌是:"+player3+",加底牌"+dipai);
}else if (i==1){
System.out.println(li.get(i)+"的牌是:"+player1);
}else if (i==2){
System.out.println(li.get(i)+"的牌是:"+player2);
}
}
}