需要完成的功能
这里只完成创建扑克,发牌,看牌的功能,最终的实现斗地主功能还需进一步完善。
创建扑克
发牌的前提是有牌可发,所以我们要先创建一副牌,这里我们用的是HashMap集合来装扑克的花色以及点数;这样,我们就可以完成扑克的创建步骤。
String[] colos = {"♥", "♠", "♦", "♣"};
String[] nums = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K","A","2"};
HashMap<Integer, String> hashMappokerBox = new HashMap<>();
int index=0;
for (String num : nums) {
for (String colo : colos) {
String concat = colo.concat(num);
hashMappokerBox.put(index, concat);
index++;
}
}
//手动添加大小王
hashMappokerBox.put(index,"☽");
index++;
hashMappokerBox.put(index,"☀");
洗牌
为了完成洗牌这一步骤,我们需要将HashMap中的键放在一个ArrayList集合中,这样通过洗键就将扑克洗好了
ArrayList<Integer> pokerBox = new ArrayList<>();
Set<Map.Entry<Integer, String>> entries = hashMappokerBox.entrySet();
for (Map.Entry<Integer, String> entry : entries) {
Integer key = entry.getKey();
pokerBox.add(key);
}
//洗牌(3遍)
Collections.shuffle(pokerBox);//使用默认随机源对指定列表进行置换,打乱顺序
Collections.shuffle(pokerBox);
Collections.shuffle(pokerBox);
发牌
发到手中的扑克,我们希望是有序的,所以我们再将键集传给TreeSet集合中,利用TreeSet自动排序功能得到有序的扑克。
TreeSet<Integer> pokerPlayer1Index = new TreeSet<>();
TreeSet<Integer> pokerPlayer2Index = new TreeSet<>();
TreeSet<Integer> pokerPlayer3Index = new TreeSet<>();
TreeSet<Integer> lastPokerIndex = new TreeSet<>();
for (int i = 0; i < pokerBox.size(); i++) {
if(pokerBox.size()-i<=3){ //底牌对应的键
lastPokerIndex.add(pokerBox.get(i));
}else if (i % 3 == 0) { //玩家一的牌对应的键
pokerPlayer1Index.add(pokerBox.get(i));
} else if (i % 3 == 1) { //玩家二的牌对应的键
pokerPlayer2Index.add(pokerBox.get(i));
} else { //玩家二的牌对应的键
pokerPlayer3Index.add(pokerBox.get(i));
}
}
看牌
通过TreeSet中的值,也就是HashMap中的键集,可以得到对应的值
//看牌
{
lookpoker(hashMappokerBox, pokerPlayer1Index,"洪世贤");
lookpoker(hashMappokerBox, pokerPlayer2Index,"艾丽");
lookpoker(hashMappokerBox, pokerPlayer3Index,"品如");
lookpoker(hashMappokerBox, lastPokerIndex,"地主多");
}
private static void lookpoker(HashMap<Integer, String> hashMappokerBox, TreeSet<Integer> pokerPlayer1Index, String play1) {
System.out.println(play1+"的牌");
for (Integer index : pokerPlayer1Index) {
String s = hashMappokerBox.get(index);
System.out.print(s+"\t");
}
System.out.println();
}
玩家到手的扑克
洪世贤的牌
♠3 ♥6 ♣6 ♥7 ♠7 ♦8 ♠9 ♦9 ♣9 ♥10 ♦J ♠Q ♦Q ♦K ♥A ♦A ♣2
艾丽的牌
♦3 ♥4 ♦4 ♠5 ♦5 ♦7 ♠8 ♥9 ♠10 ♣10 ♥J ♣J ♥Q ♥K ♣A ♥2 ☽
品如的牌
♥3 ♣3 ♠4 ♣4 ♣5 ♠6 ♦6 ♣7 ♣8 ♦10 ♠J ♣Q ♠K ♣K ♠A ♦2 ☀
地主多的牌
♥5 ♥8 ♠2
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/14646.html