Java中利用集合框架模拟斗地主程序实例

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();
		
	}
}

猜你喜欢

转载自blog.csdn.net/zfliu96/article/details/83757797
今日推荐