本篇简要介绍如何洗牌和发牌。
这2个算法都很简单,有兴趣的同学可以写得更好一点。
关键点说明
a.洗牌算法的思路就是,构造54张牌,打乱牌N次,这个算法可能不够随机。
b.发牌算法的思路就是,从洗好的牌中,按规律发给3个玩家,比如1好玩家就取第1、4、7等17张牌。
c.3个玩家,谁取到id为1的这张牌,谁就是“地主”。
1.初始化
/** * 初始化 */ private void deal() { shuffle(); divide(); }
2.洗牌
/** * 洗牌 */ private void shuffle() { for (int i = 0; i < 54; i++) { Card card = new Card(i + 1); allCards.add(card); } System.out.println("洗牌之前:"); CardUtil.printCards(allCards); // 洗牌,交换1000次 for (int i = 0; i <= 1000; i++) { Collections.shuffle(allCards);// 打乱牌的位置 } System.out.println("洗牌之后:"); CardUtil.printCards(allCards); }
3.发牌
//发牌 private void divide()