1.案例介绍

按照斗地主的规则,完成洗牌发牌的动作。

具体规则:

1. 组装54张扑克牌将

2. 54张牌顺序打乱

3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。

4. 查看三人          各自手中的牌(按照牌的大小排序)、底牌 规则:手中扑克牌从大到小的摆放顺序:大王,小王,2,A,K,Q,J,10,9,8,7,6,5,4,3

2.案例分析

1. 准备牌: 完成编号与纸牌的映射关系: 使用双列Map(HashMap)集合,完成一个编号与字符串纸牌的对应关系(相当于一个字典)。

2. 洗牌: 通过编号完成洗牌发牌

3. 发牌: 将每个人以及底牌设计为ArrayList,将最后3张牌直接存放于底牌,剩余牌通过对3取模依次发牌。 存放的过程中要求数字大小与斗地主规则的大小对应。 将代表不同纸牌的编号分配给不同的玩家与底牌。

4. 看牌: 通过查询纸牌与编号的对应关系,由编号转成纸牌字符串再进行展示。

3.代码编写

package day10;import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;/*按照斗地主的规则,完成洗牌发牌的动作。
具体规则:
1. 组装54张扑克牌将
2. 54张牌顺序打乱
3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。
4. 查看三人各自手中的牌(按照牌的大小排序)、底牌
规则:手中扑克牌从大到小的摆放顺序:大王,小王,2,A,K,Q,J,10,9,8,7,6,5,4,3*/
public class PokerDemo {public static void main(String[] args) {// 1.使用双列Map(HashMap)集合,完成一个编号与字符串纸牌的对应关系(相当于一个字典)Map<Integer, String> pokerMap = new HashMap<Integer, String>();// 花色集合ArrayList<String> colors = new ArrayList<String>();// 数字集合ArrayList<String> numbers = new ArrayList<String>();// 2.将扑克牌中的花色和数字添加到各自的集合中Collections.addAll(colors, "♥", "♦", "♣", "♠");Collections.addAll(numbers, "2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3");int count = 1;pokerMap.put(count++, "大王");pokerMap.put(count++, "大王");// 每张牌由花色数字两部分组成,我们可以使用花色集合与数字集合嵌套迭代完成每张牌的组装。for (String number : numbers) {for (String color : colors) {String card = color + number;pokerMap.put(count++, card);}}// System.out.println(pokerMap);// 3.洗牌Set<Integer> set = pokerMap.keySet();ArrayList<Integer> list = new ArrayList();list.addAll(set);// 将list里扑克牌打乱Collections.shuffle(list);// 5.发牌// 创建三个list集合(相当于三个玩家),发牌时 先将扑克牌对应的编号,放到三个list集合里ArrayList<Integer> list1 = new ArrayList<>();ArrayList<Integer> list2 = new ArrayList<>();ArrayList<Integer> list3 = new ArrayList<>();ArrayList<Integer> dipai = new ArrayList<>();for (int i = 0; i < list.size(); i++) {Integer num = list.get(i);if (num >= 51) {dipai.add(num);} else if (num % 3 == 0) {list1.add(num);} else if (num % 3 == 1) {list2.add(num);} else {list3.add(num);}}// 6.对扑克牌编号进行排序Collections.sort(list1);Collections.sort(list2);Collections.sort(list3);//System.out.println(list1);// 7.创建三个玩家,从map集合通过编号拿出对应的牌面,放到各自list集合里ArrayList<String> player1 = new ArrayList<>();ArrayList<String> player2 = new ArrayList<>();ArrayList<String> player3 = new ArrayList<>();ArrayList<String> dipai1 = new ArrayList<>();for (Integer i : list1) {player1.add(pokerMap.get(i));}for (Integer i : list2) {player2.add(pokerMap.get(i));}for (Integer i : list3) {player3.add(pokerMap.get(i));}System.out.println("玩家1" + player1);System.out.println("玩家2" + player2);System.out.println("玩家3" + player3);}
}

按照斗地主的规则,完成洗牌发牌的动作相关推荐

  1. 斗地主练习(按照斗地主的规则,完成洗牌发牌的动作。)

    按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 使用54张牌: 打乱顺序: 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌: 手中的牌按从小到大的顺序排列 import java. ...

  2. 通过程序实现斗地主过程中的洗牌,发牌和看牌(简约版)

    需求:通过程序实现斗地主过程中的洗牌,发牌和看牌 思路: 创建一个牌盒,也就是定义一个集合对象,用ArrayList集合实现 往牌盒里面装牌 洗牌,也就是说把牌打撒,用Collections的shuf ...

  3. 【java】按照斗地主的规则,完成洗牌发牌的动作。

    具体规则: 组装54张扑克牌将 54张牌顺序打乱 玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌 查看三人各自手中的牌(按照牌的大小排序).底牌 代码给出(详解): import java ...

  4. 斗地主小游戏之洗牌发牌

    代码 public class PokerShuffleCards {public static void main(String[] args) {// 准备花色ArrayList<Strin ...

  5. java——斗地主小游戏之洗牌发牌

    遇到的问题: 1.int和Integer的区别? 1)Integer是int的包装类,int则是java的一种基本数据类型 . 2)Integer变量必须实例化后才能使用,而int变量不需要 . 3) ...

  6. 【案例 6-4】斗地主洗牌发牌

    [案例介绍] 1.任务描述 斗地主的扑克牌游戏,相信许多人都会玩,本例要求编写一个斗地主的洗牌发牌程序,要求按照斗地主的规则完成洗牌发牌的过程.一副扑克总共有 54 张牌,牌面由花色和数字组成(包括 ...

  7. 模拟斗地主洗牌发牌-JAVA

    1.1案例介绍 按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 1.组装54张扑克牌 2.将54张牌顺序打乱 3.三个玩家参与游戏,三人交替摸牌,,每人17张牌,最后三张留作底牌. 4.查看三人各 ...

  8. 【JAVASE】模拟斗地主洗牌发牌

    1.案例介绍 按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 组装54张扑克牌 54张牌顺序打乱 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌. 查看三人各自手中的牌(按照牌的大 ...

  9. 扑克牌洗牌发牌java代码_java实战(一)之Java模仿斗地主洗牌发牌小游戏

    斗地主是全国范围内的一种桌面游戏,尽管全国各种类型,但大同小异.本节我们先来实现一下斗地主中的简单洗牌.发牌和看牌功能. 按照斗地主的规则,完成洗牌发牌的动作.具体规则为使用 54 张牌打乱顺序,3 ...

  10. java使用集合模拟斗地主洗牌发牌案例

    package com.itheima.模拟斗地主.斗地主版本2;import java.util.ArrayList; import java.util.Collections; import ja ...

最新文章

  1. 一生只见一次的大彗星今天来了!
  2. .NET重构—单元测试重构
  3. 一款炫酷Loading动画--载入成功
  4. Android官方开发文档Training系列课程中文版:使用Fragment构建动态UI之构建灵活的UI
  5. Security Tutorials系列文章第七章:User-Based Authorization(上)
  6. 设计灵感|如何设计出简洁吸引人的字体海报?
  7. jQuery框架学习
  8. H5本地存储 localStorage和sessionStorage区别 存储方式 用法
  9. 用C#代码实现求两条线段的交点并判断各种情况
  10. Web前端三大框架的总结,你是否知道呢?
  11. 64位 java 数据类型_java 数据类型
  12. 西门子、安川、三菱伺服技术完全精通系列丛书!
  13. SpringMVC表单标签简介
  14. 国内CDN加速的背景和现状
  15. 如何让C盘可用空间变大
  16. 近十年量化交易领域最重要的十本参考书是哪些
  17. 广西英拓网络,7*24昼夜无差别 提供G空间,首月送产权服务器租用托管!
  18. apiserver报错:OpenAPI spec does not exists
  19. 源码逻辑-官方SDK的做法
  20. 苹果手机连接电脑没反应

热门文章

  1. IDEA中输入法无法切换成中文解决方法
  2. 静态库、动态库及导入库
  3. JDBC 加载驱动报错解决办法
  4. exe msdt 无法上网_msdt.exe文件下载
  5. vue 身份证格式校验
  6. Windows热键注册原理
  7. Python之编写登录接口
  8. MacOS 系统安装超详细教程
  9. 宽带连接蓝屏,或者显示813占用端口
  10. html5音效,HTML5之Audio(六)—— 3D音效