Java中利用集合框架模擬鬥地主程式例項
阿新 • • 發佈:2018-11-11
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();
}
}