Java模拟斗地主发牌和洗牌

  1. package cn.itcast_04;
  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.HashMap;
  5. import java.util.TreeSet;
  6. /*
  7. * 思路:
  8. *      A:创建一个HashMap集合
  9. *      B:创建一个ArrayList集合
  10. *      C:创建花色数组和点数数组
  11. *      D:从0开始往HashMap里面存储编号,并存储对应的牌
  12. *        同时往ArrayList里面存储编号即可。
  13. *      E:洗牌(洗的是编号)
  14. *      F:发牌(发的也是编号,为了保证编号是排序的,就创建TreeSet集合接收)
  15. *      G:看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)
  16. */
  17. public class PokerDemo {
  18. public static void main(String[] args) {
  19. // 创建一个HashMap集合
  20. HashMap<Integer, String> hm = new HashMap<Integer, String>();
  21. // 创建一个ArrayList集合
  22. ArrayList<Integer> array = new ArrayList<Integer>();
  23. // 创建花色数组和点数数组
  24. // 定义一个花色数组
  25. String[] colors = { "♠", "♥", "♣", "♦" };
  26. // 定义一个点数数组
  27. String[] numbers = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q",
  28. "K", "A", "2", };
  29. // 从0开始往HashMap里面存储编号,并存储对应的牌,同时往ArrayList里面存储编号即可。
  30. int index = 0;
  31. for (String number : numbers) {
  32. for (String color : colors) {
  33. String poker = color.concat(number);
  34. hm.put(index, poker);
  35. array.add(index);
  36. index++;
  37. }
  38. }
  39. hm.put(index, "小王");
  40. array.add(index);
  41. index++;
  42. hm.put(index, "大王");
  43. array.add(index);
  44. // 洗牌(洗的是编号)
  45. Collections.shuffle(array);
  46. // 发牌(发的也是编号,为了保证编号是排序的,就创建TreeSet集合接收)
  47. TreeSet<Integer> fengQingYang = new TreeSet<Integer>();
  48. TreeSet<Integer> linQingXia = new TreeSet<Integer>();
  49. TreeSet<Integer> liuYi = new TreeSet<Integer>();
  50. TreeSet<Integer> diPai = new TreeSet<Integer>();
  51. for (int x = 0; x < array.size(); x++) {
  52. if (x >= array.size() - 3) {
  53. diPai.add(array.get(x));
  54. } else if (x % 3 == 0) {
  55. fengQingYang.add(array.get(x));
  56. } else if (x % 3 == 1) {
  57. linQingXia.add(array.get(x));
  58. } else if (x % 3 == 2) {
  59. liuYi.add(array.get(x));
  60. }
  61. }
  62. // 看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)
  63. lookPoker("风清扬", fengQingYang, hm);
  64. lookPoker("林青霞", linQingXia, hm);
  65. lookPoker("刘意", liuYi, hm);
  66. lookPoker("底牌", diPai, hm);
  67. }
  68. // 写看牌的功能
  69. public static void lookPoker(String name, TreeSet<Integer> ts,
  70. HashMap<Integer, String> hm) {
  71. System.out.print(name + "的牌是:");
  72. for (Integer key : ts) {
  73. String value = hm.get(key);
  74. System.out.print(value + " ");
  75. }
  76. System.out.println();
  77. }
  78. }
时间: 2024-10-09 12:02:04

Java模拟斗地主发牌和洗牌的相关文章

java语言实现简单的洗牌,发牌

java学习过程中,老师让写了个简单的斗地主洗牌发牌的程序,一下就是程序代码: package com.java.lei.homework; import java.util.Arrays; import java.util.Random; public class PokerGame { //1.创建数组,用以存储扑克牌 static String[] pokers = new String[54]; public static void main(String[] args) { //2.创

java list随机截取(洗牌)

public void solution(){ List<Integer> givenList = Arrays.asList(1, 2, 3,4,5,6); Collections.shuffle(givenList); int randomSeriesLength = 3; List<Integer> randomSeries = givenList.subList(0, randomSeriesLength); } 原文地址:https://www.cnblogs.com/A

java 18 - 12 模拟斗地主洗牌、发牌,并对发的牌进行排序

1 /* 2 模拟斗地主的发牌功能(发牌完毕后发到手上的牌是有顺序的) 3 分析: 4 A:创建一个HashMap集合 5 B:创建一个ArrayList集合 6 C:创建两个字符串,一个是花色,一个是牌的数字 (发牌得有一盒牌) 7 为了方便以后的排序,创建这两个字符串的时候,按照大小顺序排列(斗地主中的大小顺序) 8 大小王除外 9 D:把这两个字符串放进HashMap集合中(拼接一起 花色+牌号) 同时给每个放进去牌进行编码0--52并存储 10 同时也给ArrayList集合中存储编码,

Java学习笔记34(集合框架八:综合案例:模拟斗地主的洗牌发牌)

规则: 1.54张扑克牌,有花色 2.顺序打乱,一人一张依次发牌,一人17张,留三张作为底牌 3.看牌:按大小王2A....43的序排列打印 示例: package demo; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; public class DouDiZhu { public static void main(String[] args) { // 创建Map集合,键

模拟斗地主洗牌、发牌(含有排序和不排序的)

不排序的: package cn.idcast5; import java.util.ArrayList; import java.util.Collections; //模拟斗地主洗牌发牌 //分析 //A 创建一个牌盒 //B 装牌 //C 洗牌 //D 发牌 //E 看牌 public class Shiyue31 { public static void main(String[] args) { // 创建一个牌盒 ArrayList<String> array = new Arra

代码实现:模拟斗地主洗牌和发牌并对牌进行排序的代码实现

package com.loaderman.test; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.TreeSet; public class Test{ /** * * A:案例演示 * 模拟斗地主洗牌和发牌并对牌进行排序的代码实现 * * 分析: * 1,买一副扑克,其实就是自己创建一个集合对象,将扑克牌存储进去 * 2,洗牌 * 3,

代码实现:模拟斗地主洗牌和发牌,牌没有排序

package com.loaderman.test; import java.util.ArrayList; import java.util.Collections; public class Test { /** * * A:案例演示 * 模拟斗地主洗牌和发牌,牌没有排序 * * 分析: * 1,买一副扑克,其实就是自己创建一个集合对象,将扑克牌存储进去 * 2,洗牌 * 3,发牌 * 4,看牌 */ public static void main(String[] args) { //1

ArrayList模拟斗地主的洗牌,发牌和看牌

/* * ArrayList模拟斗地主的洗牌,发牌和看牌 * * 分析: * 1.创建一个牌盒 * 2.装牌 * 3.洗牌 * 4.发牌 * 5.看牌 */ 代码: import java.util.ArrayList; import java.util.Collections; /** * ArrayList模拟斗地主的洗牌,发牌和看牌 * @author TP * */ public class Doudizhu { /* * ArrayList模拟斗地主的洗牌,发牌和看牌 * * 分析:

模拟斗地主洗牌发牌

(一)案例介绍: 按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 1.组装54张扑克牌 2.将54张扑克牌的顺序打乱 3.三个玩家参与游戏,三人交替摸牌,没人17张牌,最后三张留作底牌. 4.查看三人各自手中的牌(按照牌的大小排序).底牌 手中扑克牌从大到小的摆放顺序:大王,小王,2,A,K,Q,J,10,9,8,7,6,5,4,3 (二)案例需求分析 1.准备牌 完成数字与牌的映射关系 使用双列Map(HashMap)集合,完成一个数字与字符串字牌的对应关系(相当于一个字典). 2.洗牌