题目要求:模拟斗地主的游戏给三个玩家发牌
题目理解:扑克牌一共是54张牌,包含两张大王和小王.剩余52张牌是2~10 .J . Q . K . A四种不同花色"梅花,方片,黑桃,红桃"
所以需要几个集合(整副牌的集合poker,花色的集合color,点数的集合number,三个玩家相应的集合)
具体代码如下:
import java.util.ArrayList; import java.util.Collections; public class PlayGames { public static void main(String[] args) { ArrayList<String> color = new ArrayList<>(); //新建一个花色集合 color.add("♥"); //添加花色 color.add("♠"); color.add("♦"); color.add("♣"); ArrayList<String> numbers = new ArrayList<>(); //新建点数集合 numbers.add("J"); //添加非数字的点数 numbers.add("Q"); numbers.add("K"); numbers.add("A"); for (int i = 2; i <= 10; i++) { //遍历添加数字点数 numbers.add(String.valueOf(i) + ""); //+"" 将转换成字符串类型} } //遍历查看集合内容是否添加成功 for (String number : numbers) { System.out.print(number+" "); } System.out.println(); //新建扑克牌集合 ArrayList<String> poker = new ArrayList<>(); //将不同花色的扑克牌添加到集合中 for (String ss : color) { for (String number : numbers) { String pok = number+ss; poker.add(pok); } } //将大王小王添加到牌的集合中 poker.add("大鬼"); poker.add("小鬼"); //查看是否添加扑克牌成功 for(String s : poker) { System.out.print(s+" "); } System.out.println(); System.out.println("扑克牌的张数是:"+poker.size()); //洗牌操作 使用shuffer方法 属于 Collections工具类,打乱集合中元素顺序 Collections.shuffle(poker); System.out.println(poker); //发牌操作 //创建三个玩家各自占一个集合 按照斗地主游戏规则 会留三张底牌--单独使用一个集合 ArrayList<String> player1 = new ArrayList<>(); ArrayList<String> player2 = new ArrayList<>(); ArrayList<String> player3 = new ArrayList<>(); //玩家对应集合 ArrayList<String> dipai = new ArrayList<>(); //底牌集合 //将底牌个数添加到底牌集合中 dipai.add(poker.get(51)); dipai.add(poker.get(52)); dipai.add(poker.get(53)); //分别给三个玩家发牌 ,根据索引进行发牌 for (int i = 0; i < poker.size(); i++) { if (i % 3 == 0){ //由玩家1的和对应索引关系得出如何获得牌数 player1.add(poker.get(i)); } else if (i % 3 == 1){ //玩家2 player2.add(poker.get(i)); } else (i % 3 == 2){ //玩家3 player3.add(poker.get(i)); } } System.out.println("玩家1的牌: "+player1); System.out.println("玩家2的牌: "+player2); System.out.println("玩家3的牌: "+player3); } }