1. 程式人生 > >Java中利用集合框架模擬鬥地主程式例項

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