斗地主的扑克牌游戏: 一副扑克总共有 54 张牌,牌面由花色和数字组成(包括 J、O、K、A 字母)组成,花色有 ♠ 、♥ 、♦ 、♣ 四种,分别表示黑桃、红桃、方块、梅花,小🤡、大🤡分别表示小王和大王。斗地主游戏共有三位玩家参与,首先将这 54张牌的顺序打乱每人轮流摸一次牌,剩余3张留作底牌,然后在控制台打印三位玩家的牌和三张底牌。
二、主要内容:模拟斗地主游戏的发牌过程,程序需要完成以下任务:
1、组装一副完整的扑克牌,并为每张牌分配一个唯一的编号;
2、将牌的顺序随机打乱,模拟洗牌过程;
3、按照斗地主的规则,将牌平均分配给三位玩家,并留出3张底牌;
4、在控制台中打印每位玩家的牌和底牌。
具体实现:
(1)要实现纸牌程序,首先需要完成纸牌的组装。牌面是由花色(包括 ♠ 、♥ 、♦ 、♣花色)和数字(包括J、Q、K、A 字母)两部分组成,可以创建两个 ArrayList 集合作为花色集合与数字集合,存储时需要注意。比 10 大的牌的数字用 J、Q、K 表示,1用 A 表示。
(2)将花色集合与数字集合这两个循环进行嵌套循环,将花色与数字组合,形成 52 张牌,并赋予其编号。将组合后的牌存放到一个 HashMap 集合中,集合的 Key 值是编号,value值是组装完成的纸牌。还有两张牌是大小王(小🤡表示小王、大🤡表示大王)。由于组装规则不一致,需单独使用 add( )方法将这两张牌加入到 HashMap 集合中。
(3)创建一个数字集合,用这个数字集合代替纸牌完成洗牌和发牌操作。由于纸牌的数量是 54 张,所以创建集合范围是 0~53。
(4)使用 Collection 类的 shume( )方法完成打乱数字集合的操作,实现洗牌效果由于只有3个人,所以可以使用 for 循环,通过将数字与3取余的方法,将代表不同纸牌的数字分配给不同人与底牌,实现发牌效果。
(5)洗牌和发牌结束后,可以通过 Collection 类的 sort( )方法完成排序,之后通过foreach( )循环 HashMap 集合,根据数字査找对应的纸牌字符串,并存入创建的字符串集合中,最后展示字符串集合。
三、实现代码: package anli6_4;import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;import java.util.List;import java.util.Map;public class anli6_4 {public static void main(String[] args) {// 定义花色和数字集合List suits = new ArrayList();suits.add("♠");suits.add("♥");suits.add("♦");suits.add("♣");List numbers = new ArrayList();for (int i = 2; i