分析
1.创建一个HashMap集合(因为牌的编号和牌的内容是一对键值对,所以用HashMap集合)
- 2.创建一个ArrayList集合(将每一张牌所对应的编号存储起来,作为HashMap键值对里面的键)
- 3.创建牌(包括花色,点数)和编号(index)
- 4.从0开始向ArrayList里面存储编号,并存储对应的牌,同时向ArrayList里存储编号
- 5.洗牌(洗牌时洗的是编号)
- 6.发牌(发牌发的也是编号,为了保证排序,用TreeSet集合接收)
- 7.看牌(遍历TreeMap集合,获取编号,到HashMap里去找相应的牌)
代码实现
import java.util.ArrayList;
import java.util.TreeSet;
import java.util.Collections;
import java.util.HashMap;
public class DouDiZhuLicensing {
public static void main(String[] args) {
HashMap<Integer, String> hs=new HashMap<Integer, String>();
//创建牌盒
ArrayList<Integer> array=new ArrayList<Integer>();
//创建花色数组和点数数组
String color[]= {"♥","♠","♣","♦"};
String num[]= {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
//从0开始往HashMap里面存储编号,并存储对应的牌,同时向ArrayList里面存储编号即可
//创建编号索引
int index=0;
//向HashMap里存牌
for(String number:num) {
for(String colors:color) {
String card=colors.concat(number);
hs.put(index, card);
array.add(index);
index++;
}
}
hs.put(index, "小王");
array.add(index);
index++;
hs.put(index, "大王");
array.add(index);
//洗牌(用shuffle方法随机array里的编号)
Collections.shuffle(array);
//发牌,创建TreeSet集合
TreeSet<Integer> player1=new TreeSet<Integer>();
TreeSet<Integer> player2=new TreeSet<Integer>();
TreeSet<Integer> player3=new TreeSet<Integer>();
TreeSet<Integer> dipai=new TreeSet<Integer>();
for(int x=0;x<array.size();x++) {
if(x>=array.size()-3) {
dipai.add(array.get(x));
}else if(x%3==1) {
player1.add(array.get(x));
}else if(x%3==2) {
player2.add(array.get(x));
}else if(x%3==0) {
player3.add(array.get(x));
}
}
LookCard("地主", player1, hs);
LookCard("农民1", player2, hs);
LookCard("农名2", player3, hs);
LookCard("底牌", dipai, hs);
}
//看牌功能(根据TreeSet里存的牌的编号去HashMap里找相应的牌)
public static void LookCard(String name,TreeSet<Integer> ts,HashMap<Integer,String> hm) {
System.out.print(name+"的牌是 ");
for(Integer key:ts) {
String value=hm.get(key);
System.out.print(value+" ");
}
System.out.println();
}
}