斗地主案例

1、分析:
(1)制牌:扑克牌有54张,四个花色,大王、小王,其中数字牌每种花色13张
(2)洗牌:shuffle(List<?> list)
(3)发牌:一个地主,两个农民,三张底牌
2、问题:
(1)发牌之后牌是乱的,需要排序,但是字符串目前为止无法排序
(2)希望相同的数字牌在一起
(3)排序要按照斗地主规则规定的牌面大小顺序排序

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
public class Demo10_LandLordsFinalVersion {public static void main(String[] args) {//制牌//准备花色String[] colors = {"红桃", "黑桃", "梅花", "方片"};//准备数字String[] nums = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};//准备牌表HashMap<Integer, String> table = new HashMap<>();//准备牌组ArrayList<Integer> pokers = new ArrayList<>();//准备牌面编号int index = 1;for (String nu : nums) {for (String co : colors) {table.put(index, co + nu);pokers.add(index);index++;}}//准备大小王table.put(index, "小王");pokers.add(index);index++;table.put(index, "大王");pokers.add(index);//洗牌Collections.shuffle(pokers);//发牌ArrayList<Integer> basic = new ArrayList<>();for (int i = 0; i < 3; i++) {basic.add(pokers.remove(0));}ArrayList<Integer> landlord = new ArrayList<>();ArrayList<Integer>farmer1 = new ArrayList<>();ArrayList<Integer> farmer2= new ArrayList<>();while(true) {if(pokers.isEmpty()) {break;}if(!pokers.isEmpty()) {landlord.add(pokers.remove(0));}if(!pokers.isEmpty()) {farmer1.add(pokers.remove(0));}if(!pokers.isEmpty()) {farmer2.add(pokers.remove(0));}}//给玩家的牌组排序Collections.sort(basic);Collections.sort(landlord );Collections.sort(farmer1 );Collections.sort(farmer2 );System.out.println(getPokerFace(basic, table));System.out.println(getPokerFace(landlord , table));System.out.println(getPokerFace(farmer1 , table));System.out.println(getPokerFace(farmer2 , table));}public static String getPokerFace(ArrayList<Integer> list, HashMap<Integer,String> map) {StringBuilder sb = new StringBuilder("[");for (Integer key : list) {sb.append(map.get(key)).append(", ");}String str = sb.toString();String result = str.substring(0, str.length() - 2) + "]";return result;}
}

斗地主的制牌、洗牌和发牌相关推荐

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

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

  2. python斗地主游戏源码_python实现斗地主分牌洗牌

    本文实例为大家分享了python实现斗地主分牌洗牌的具体代码,供大家参考,具体内容如下 1.建立一个序列,共54个元素,表示一副扑克牌,初始化时是有顺序的. 2.编写一段代码完成洗牌功能,即将刚才的序 ...

  3. python联网斗地主_python实现斗地主分牌洗牌

    本文实例为大家分享了python实现斗地主分牌洗牌的具体代码,供大家参考,具体内容如下 1.建立一个序列,共54个元素,表示一副扑克牌,初始化时是有顺序的. 2.编写一段代码完成洗牌功能,即将刚才的序 ...

  4. 斗地主分牌洗牌(python)

    斗地主分牌洗牌(python) 1.建立一个序列,共54个元素,表示一副扑克牌,初始化时是有顺序的. 2.编写一段代码完成洗牌功能,即将刚才的序列从有序的排列变成随机的无序排列. 3.编写一段代码完成 ...

  5. python tkinter出牌洗牌

    python tkinter 出牌洗牌 利用Tkinter模块设计出扑克牌发牌窗体程序,要求4名牌手打牌,计算机随机将52张牌(不含大小王)发给4名牌手,在屏幕上显示每位牌手的牌.程序运行结果如图所示 ...

  6. 斗地主三步走——洗牌、发牌和看牌

    相信大家都玩过牌游斗地主吧,今天呢,阿Q就带大家写一个简单的斗地主的洗牌.发牌和看牌的小Demo. public static void main(String[] args) {//1,买一副扑克, ...

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

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

  8. C语言 模拟扑克牌新牌洗牌与发牌

    题目: 都已经这样了,斗地主还会远吗 计导课群里大佬发了PPT,就忍不住点开看,看了就觉得很有道理,但是我们不能抄作业,于是我就尝试不用二维数组 改了一次,指针也不用了 很多东西还是不懂,比如写随机数 ...

  9. Java 存牌洗牌发牌看牌

    package www.test1.com;import java.util.*;/*** 思路:* 存牌(HashMap)* 存下标(ArrayList)* 洗牌(洗下标)* 发牌 (TreeSet ...

  10. 用python实现纸牌游戏的随机抽牌洗牌过程(item系列几个内置方法的实例)

    1.namedtuple:命名元组,可以创建一个没有方法只有属性的类 from collections import namedtuple card = namedtuple('card',['ran ...

最新文章

  1. Saltstack自动化环境部署
  2. 岳阳机器人餐厅在哪_从机器人咖啡看未来餐饮行业大方向,如何才能活下去?...
  3. 创建自定义排序用户界面
  4. python 测试 多线程 _thread和threading模块 线程同步,线程优先级队列
  5. idea自定义快捷鍵
  6. 链表排序c++代码_[链表面试算法](一) 链表的删除-相关题型总结(6题)
  7. wampserver php乱码,WampServer搭建php环境可能遇到的问题
  8. java代码中 作用_Java利用开发中代码生成工具的作用
  9. 表单元素内容禁用拼写检查
  10. 【EMV L2】CDA复合动态数据认证/应用密文生成
  11. python 保存视频流_[宜配屋]听图阁
  12. 巧用DictionaryTKey,TValue,完成客户需求
  13. 面试问题之AOP实现原理
  14. 东芝166打印机装驱动出现inf安装服务段落无效
  15. Mybatis注解用法
  16. websocket传输数据大小限制_WebSocket传输超过126字节数据的方法
  17. 人工智能导论测试题——第六章 进化智能与群体智能(2)
  18. 全面解读Marshmallow
  19. C++ decorator(装饰)模式
  20. 怎么更换kindle 4的字体?zz

热门文章

  1. 羊群效应模型(转载)
  2. python中datatype函数_Python_0_Datatype
  3. ntohl c 语言函数,什么时候在C中使用ntohs和ntohl?
  4. ntohs, ntohl, htons,htonl字节序转换函数
  5. Tableau 空难统计分析(二)飞行阶段事故数
  6. oracle数据库数据迁移三部曲(一)oracle 11g的安装
  7. 【最全整理】37 个 Python Web 开发框架总结
  8. 【企业架构】EA 比以往任何时候都更重要的五个领域
  9. thinkpad t450 无线网卡m2 ngff接口改装苹果网卡 黑苹果系统macOS
  10. 浅谈明日方舟游戏系统