案列分析 准备4种花色牌与13种数值牌循环嵌套为52张牌,加两种特殊牌大王小王牌共54种,再进行洗牌发牌
文章目录一、思路分析二、准备牌1.准备一个集合存放所有牌2.准备两个数组分别存取扑克牌的4种花色和13种数值3.进行嵌套组合形成52张牌加到所有牌中4.把特殊牌(大王,小王)加到所有牌集合中共54张牌三、洗牌1.使用集合的工具类Collections中的方法使用默认随机源对指定列表进行置换四、发牌1.创建4个集合分别存取 玩家1 玩家2 玩家3 地主牌2. 总牌数先取三张放到地主牌中和依次发牌玩家3.随机产生个地主五、看牌六、运行效果七、代码总和一、思路分析思路
1.准备牌
准备一个集合存放所有牌 准备两个数组分别存取扑克牌的4种花色和13种数值 进行嵌套组合形成52张牌加到所有牌中 把特殊牌(大王,小王)加到所有牌集合中共54张牌
2.洗牌 使用集合的工具类Collections中的方法使用默认随机源对指定列表进行置换
3.发牌 创建4个集合分别存取 玩家1 玩家2 玩家3 地主牌 总牌数先取三张放到地主牌中 依次给玩家发牌 随机产生个地主
4.看牌 输出打印玩家和地主
二、准备牌 1.准备一个集合存放所有牌ArrayList sum= new ArrayList();//存所有牌号 2.准备两个数组分别存取扑克牌的4种花色和13种数值//定义两个数组存花色和牌数String[] colors = {"♠","♥","♣","♦"};String[] numbers = {"2","A","K","Q","J","10","9","8","7","6","5","4","3"}; 3.进行嵌套组合形成52张牌加到所有牌中 //增强for循环嵌套遍历两个数组,组装52张牌for (String color : colors) {for (String number : numbers) {sum.add(color+number);}} 4.把特殊牌(大王,小王)加到所有牌集合中共54张牌 //添加大王小王到集合当中sum.add("大王");sum.add("小王"); 三、洗牌 1.使用集合的工具类Collections中的方法使用默认随机源对指定列表进行置换 //2.洗牌public void Shffle(ArrayList sum){//使用集合的工具类Collections中的方法//static void shuffle(List list) 使用默认随机源对指定列表进行置换。Collections.shuffle(sum);} 四、发牌 1.创建4个集合分别存取 玩家1 玩家2 玩家3 地主牌 ArrayList Player1 = new ArrayList();//玩家1ArrayList Player2 = new ArrayList();//玩家2ArrayList Player3 = new ArrayList();//玩家3ArrayList Dipai = new ArrayList();//地主牌 2. 总牌数先取三张放到地主牌中和依次发牌玩家for (int i = 0; i //给地主牌发牌Dipai.add(p);}//因为i%3有三种结果就可以一张一张的给玩家发牌else if (i % 3 == 0) { //给玩家1发牌Player1.add(p);} else if (i % 3 == 1) { //给玩家2发牌Player2.add(p);} else if (i % 3 == 2) { //给玩家3发牌Player3.add(p);}} 3.随机产生个地主 Random random = new Random();//产生随机数int a = random.nextInt(3) + 1;//控制随机数范围为 1,2,3System.out.println("本局地主为" + a + "号玩家");//选出地主给地主发地主牌
//判断地主是谁然后把地主牌给他if(a==1){//使用Collections.addAll方法 把集合Player1里面分别添加集合dipai里面的1,2,3元素Collections.addAll(Player1, Dipai.get(0), Dipai.get(1), Dipai.get(2));}if(a==2){Collections.addAll(Player2, Dipai.get(0), Dipai.get(1), Dipai.get(2));}if(a==3){Collections.addAll(Player3, Dipai.get(0), Dipai.get(1), Dipai.get(2));}} 五、看牌 //4.看牌public void show() {System.out.println("1号玩家" +Player1);System.out.println("2号玩家" + Player2);System.out.println("3号玩家" + Player3);System.out.println("地主牌为"+ Dipai);} 六、运行效果 七、代码总和斗地主案列主函数
import java.util.ArrayList;public class DouDiZhu_PRO {public static void main(String[] args) {ArrayList sum= new ArrayList();//存所有牌号DouDiZhuPRO is = new DouDiZhuPRO();//1.准备牌is.prepare(sum);//2.洗牌is.Shffle(sum);//3.发牌is.Deal(sum);//4.看牌is.show();}}斗地主案列的类
import java.util.ArrayList;import java.util.Collections;import java.util.Random;public class DouDiZhuPRO {private ArrayList sum; //存放所有牌的总集合ArrayList Player1 = new ArrayList();//玩家1ArrayList Player2 = new ArrayList();//玩家2ArrayList Player3 = new ArrayList();//玩家3ArrayList Dipai = new ArrayList();//地主牌//1.准备牌public void prepare(ArrayList sum){//定义两个数组存花色和牌数String[] colors = {"♠","♥","♣","♦"};String[] numbers = {"2","A","K","Q","J","10","9","8","7","6","5","4","3"};//增强for循环嵌套遍历两个数组,组装52张牌for (String color : colors) {for (String number : numbers) {sum.add(color+number);}}//添加大王小王到集合当中sum.add("大王");sum.add("小王");}//2.洗牌public void Shffle(ArrayList sum){//使用集合的工具类Collections中的方法//static void shuffle(List list) 使用默认随机源对指定列表进行置换。Collections.shuffle(sum);} //3.发牌public void Deal(ArrayList sum) {Random random = new Random();//产生随机数int a = random.nextInt(3) + 1;//控制随机数范围为 1,2,3System.out.println("本局地主为" + a + "号玩家");//选出地主for (int i = 0; i //给地主牌发牌Dipai.add(p);}//因为i%3有三种结果就可以一张一张的给玩家发牌else if (i % 3 == 0) { //给玩家1发牌Player1.add(p);} else if (i % 3 == 1) { //给玩家2发牌Player2.add(p);} else if (i % 3 == 2) { //给玩家3发牌Player3.add(p);}}//判断随机产生的地主是谁然后把地主牌给他if(a==1){//使用Collections.addAll方法 把集合Player1里面分别添加集合dipai里面的1,2,3元素Collections.addAll(Player1, Dipai.get(0), Dipai.get(1), Dipai.get(2));}if(a==2){Collections.addAll(Player2, Dipai.get(0), Dipai.get(1), Dipai.get(2));}if(a==3){Collections.addAll(Player3, Dipai.get(0), Dipai.get(1), Dipai.get(2));}}//4.看牌public void show() {System.out.println("1号玩家" +Player1);System.out.println("2号玩家" + Player2);System.out.println("3号玩家" + Player3);System.out.println("地主牌为"+ Dipai);}}