学习java三个星期,利用所学的知识做了一个三人斗地主发牌程序,闲话少叙,上代码
1 import java.util.ArrayList; 2 import java.util.Collections; 3 import java.util.List; 4 5 /** 6 * 三人斗地主程序 功能:将一副牌随机分发给地主(20张牌),农民A(17张牌),农民B (17张牌) 7 * 步骤:1、洗牌阶段:将54张牌储存到ArraryList 容器中(批量储存,for循环) 8 * 2、发牌阶段:打乱数组中元素的顺序,取出三个元素,首先放到装有地主牌的容器中 利用for循环嵌套,分段给牌(存数据)到地主、农民A、农民B 9 * 三个容器当中,一家17张,外层循环控制循环次数,内层循环控制每家的牌数 10 * 11 * @author kimi 12 * 13 */ 14 15 public class Landlords { 16 public static void play() { 17 String[] arr = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" }; // 定义数组用来储存基本牌组 18 List<String> pokerList = new ArrayList<>(); // 定义容器存储54张牌 19 List<String> xList = new ArrayList<>(); // 定义容器储存地主的牌 20 List<String> aList = new ArrayList<>(); // 定义容器储存农民A的牌 21 List<String> bList = new ArrayList<>(); // 定义容器存储农民B的牌 22 for (int i = 0; i < arr.length; i++) { 23 pokerList.add("红桃" + arr[i]); 24 pokerList.add("黑桃" + arr[i]); // 循环存入数据 25 pokerList.add("梅花" + arr[i]); 26 pokerList.add("方块" + arr[i]); 27 } 28 pokerList.add("大鬼"); 29 pokerList.add("小鬼"); 30 Collections.shuffle(pokerList); // 打乱牌组的顺序 31 xList.add(pokerList.get(0)); 32 xList.add(pokerList.get(1)); // 复制三张牌给地主 33 xList.add(pokerList.get(2)); 34 pokerList.remove(0); 35 pokerList.remove(1); // 删除牌组中的三张牌 36 pokerList.remove(2); 37 // ----------开始发牌---------------- 38 for (int i = 0; i < 17; i++) { 39 xList.add(pokerList.get(i)); 40 } 41 for (int i = 17; i < 34; i++) { 42 aList.add(pokerList.get(i)); 43 } 44 for (int i = 34; i < 51; i++) { 45 bList.add(pokerList.get(i)); 46 } 47 System.out.println("地主的牌:" + xList); 48 System.out.println("农民A的牌:" + aList); 49 System.out.println("农民B的牌:" + bList); 50 } 51 52 public static void main(String[] args) { 53 play(); 54 } 55 56 }
运行结果如下,当然每次运行结果都不一样
地主的牌:[黑桃3, 红桃9, 红桃K, 红桃9, 红桃J, 方块K, 梅花Q, 梅花2, 方块Q, 黑桃9, 红桃6, 方块10, 梅花3, 黑桃K, 黑桃10, 方块3, 红桃Q, 梅花K, 方块9, 红桃5] 农民A的牌:[黑桃J, 黑桃4, 黑桃6, 黑桃7, 方块7, 红桃7, 梅花J, 方块4, 黑桃A, 方块8, 梅花4, 小鬼, 大鬼, 方块2, 梅花8, 梅花5, 梅花7] 农民B的牌:[红桃2, 红桃8, 梅花10, 梅花A, 黑桃8, 红桃A, 梅花9, 红桃10, 方块J, 方块6, 方块A, 黑桃Q, 红桃4, 黑桃5, 黑桃2, 方块5, 红桃3]
时间: 2024-10-13 00:57:38