具體需求
寫一個模擬鬥地主程序(比較簡單
),不需要花哨的界面,只在Console
控制檯顯示。模擬鬥地主的存牌、洗牌、發牌、看牌、對牌進行排序等操作。
大致實現步驟
- 創建
HaspMap
存牌 - 創建
ArrayList
存牌的索引 - 設置花色與點數,並存儲索引到
ArrayList
,存儲索引和牌,實現存牌功能 - 使用
Collections.shuffle
對索引進行打亂,實現洗牌功能 - 使用
TreeSet
存儲索引(TreeSet對值進行自動排序)
,實現發牌、排序功能 - 輸出看牌
實現代碼
package Poker;
import java.util.*;
public class PokerDemoPlus {
public static void main(String[] args) {
// TODO Auto-generated method stub
HashMap<Integer,String> poker = new HashMap<Integer, String>();
ArrayList<Integer> array = 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) {
poker.put(index, color+number);
array.add(index++);
}
poker.put(index, "小王");
array.add(index++);
poker.put(index, "大王");
array.add(index);
Collections.shuffle(array);
TreeSet<Integer> fqy = new TreeSet<Integer>();
TreeSet<Integer> lhc = new TreeSet<Integer>();
TreeSet<Integer> zwj = new TreeSet<Integer>();
TreeSet<Integer> dp = new TreeSet<Integer>();
for(int i = 0 ; i < array.size() ; i ++ ) {
Integer x = array.get(i);
if(i>=array.size()-3) dp.add(x);
else if(i%3==0) fqy.add(x);
else if(i%3==1) lhc.add(x);
else if(i%3==2) zwj.add(x);
}
lookPoker("風清揚", fqy, poker);
lookPoker("令狐沖", lhc, poker);
lookPoker("張無忌", zwj, poker);
lookPoker("底牌", dp, poker);
}
public static void lookPoker(String name,TreeSet<Integer> ts,HashMap<Integer, String> hs) {
System.out.print(name + "的牌是:");
for(Integer i : ts) {
String s = hs.get(i);
System.out.print(s + " ");
}
System.out.println();
}
}