package doudizhuDemo;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;
/* 模拟斗地主
* 思路:
* A:创建一个HashMap集合,用来存储编号(键)和牌的值(值)
* B:创建一个ArrayList集合(利用该集合实现编号乱序,也就是发牌功能)
* C:创建花色数组和点数数组,之后将花色和点数组合,加入大、小王之后称为一副完整的扑克牌
* D:从0开始往HashMap里面存储编号,并存储对应的牌
* E:洗牌,洗的是编号
* F:发牌,发的也是编号,为了保证编号是按照一定顺序排列的就创建了TreeSet集合接收
* G:看牌,遍历TreeSet集合,获取编号后到HashMap集合找对应的牌
*/
public class Demo {
public static void main(String[] args) {
HashMap<Integer,String> hm=new HashMap<Integer,String>();
ArrayList<Integer> a=new ArrayList<Integer>();
String [] colors= {"♠","♥","♦","♣"};
String [] numbers= {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
int index=0;
for(String number:numbers) {
for(String color:colors) {
String s=color.concat(number);
hm.put(index, s);
a.add(index);
index++;
}
}
hm.put(index, "小王");
a.add(index);
index++;
hm.put(index, "大王");
a.add(index);
//洗牌
Collections.shuffle(a);
//发牌
TreeSet<Integer> t1=new TreeSet<Integer>();
TreeSet<Integer> t2=new TreeSet<Integer>();
TreeSet<Integer> t3=new TreeSet<Integer>();
TreeSet<Integer> dipai=new TreeSet<Integer>();
for(int i=0;i<a.size();i++) {
if(i>=(a.size()-3)) {
dipai.add(a.get(i));
}else if(i%3==0) {
t1.add(a.get(i));
}else if(i%3==1) {
t2.add(a.get(i));
}else if(i%3==2) {
t3.add(a.get(i));
}
}
//看牌,遍历Treeset集合,得到编号,并去HashMap中找到对应的值;
look("小明",t1,hm);
look("小红",t2,hm);
look("小王",t3,hm);
look("底牌",dipai,hm);
}
private static void look(String name, TreeSet<Integer> ts, HashMap<Integer, String> hm) {
System.out.println(name+"牌是:");
for(Integer i:ts) {
String s=hm.get(i);
System.out.print(s+" ");
}
System.out.println();
}
}
Java中利用集合框架模拟斗地主程序实例
最新推荐文章于 2022-03-20 10:18:25 发布