需求
模拟斗地主过程的洗牌,发牌和看牌,要求对牌进行排序
思路
- 创建HashMap,键是编号,值是牌
- 创建ArrayList,存储编号
- 创建花色数组和点数数组
- 从0开始往HashMap中存储编号,并存储对应的牌,同时往ArrayList中存储编号
- 洗牌(洗的是序号),用Collections的shuffle()实现
- 发牌(发的也是序号,为了保证序号是排序的,创建TreeSet集合接收)
- 定义看牌方法,遍历TreeSet集合,获取编号,到HashMapihe找对应的牌
- 调用看牌方法
代码
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;
public class DouDiZhu {
public static void main(String[] args) {
HashMap<Integer, String> hash = new HashMap<Integer, String>();
ArrayList<Integer> array = new ArrayList<Integer>();
String[] color = {"♣", "♥", "♦", "♠"};
String[] number = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "O", "K", "A"};
int index = 0;
for (String s1 : number) {
for (String s : color) {
hash.put(index, s + s1);
array.add(index);
index++;
}
}
hash.put(index, "大王");
array.add(index);
index++;
hash.put(index, "小王");
array.add(index);
Collections.shuffle(array);
TreeSet<Integer> ts1 = new TreeSet<Integer>();
TreeSet<Integer> ts2 = new TreeSet<Integer>();
TreeSet<Integer> ts3 = new TreeSet<Integer>();
TreeSet<Integer> diPai = new TreeSet<Integer>();
for (int i = 0; i < array.size(); i++) {
int x = array.get(i);
if (i >= array.size() - 3) {
diPai.add(x);
} else if (i % 3 == 0 || i == 0) {
ts1.add(x);
} else if (i % 3 == 1) {
ts2.add(x);
} else if (i % 3 == 2) {
ts3.add(x);
}
}
look("zlx", ts1, hash);
look("zju", ts2, hash);
look("jik", ts3, hash);
}
public static void look(String name, TreeSet<Integer> ts, HashMap<Integer, String> hm) {
System.out.println(name + "的牌:");
for (Integer t : ts) {
String value = hm.get(t);
System.out.print(value + " ");
}
System.out.println();
}
}
运行结果