具体需求
写一个模拟斗地主程序(比较简单
),不需要花哨的界面,只在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();
}
}