当前位置:   article > 正文

【JAVA】集合练习升级小游戏案列_java玩游戏并晋级

java玩游戏并晋级

目录

一、升级综合案列需求分析

1.1 准备牌

1.2 洗牌

1.3 发牌

1.4 看牌

二、代码实现

2.1 准备牌

2.2 洗牌

2.3 发牌

2.4 看牌-完整代码实现

2.5 实现效果


一、升级综合案列需求分析

1.1 准备牌

  • 准备108张共计两副牌,存储到一个集合当中
  • 特殊牌:两张大王,两张小王
  • 其他牌:
    • 定义一个数组/集合,存储四种花色:♠,♥,♣,♦
    • 定义一个数组/集合,存储13个序号:2,A,K,Q,J,10,9,8,7,6,5,4,3
  • 循环嵌套遍历两个数组/集合,组装108张牌

1.2 洗牌

  • 使用集合工具类Collections的方法
  • static void shuffle(List<?> list) 使用指定的随机源对指定列表进行置换
  • 随机打乱集合中的元素顺序

1.3 发牌

  • 要求
    • 一共四个玩家,每个玩家25张牌,共计108张,剩余8张作为底牌,一人一张轮流发牌,集合的索引(0-108)% 4 
  • 定义5个集合,存储4个玩家的牌和底牌
  • 索引>=100,给底牌发牌
  • 索引%4等于0给第一个玩家发牌
  • 索引%4等于1给第二个玩家发牌
  • 索引%4等于2给第三个玩家发牌
  • 索引%4等于3给第四个玩家发牌

1.4 看牌

  • 直接打印集合或遍历存储玩家和底牌的集合

二、代码实现

2.1 准备牌

  • 定义一个存储108张牌的ArrayList集合,泛型使用String
  1. package DemoDdz;
  2. import java.util.ArrayList;
  3. public class Upgrade {
  4. public static void main(String[] args) {
  5. // 1、准备牌
  6. // 定义一个存储108张牌的ArrayList集合,泛型使用String
  7. ArrayList<String> poker = new ArrayList<>();
  8. // 定义两个数组,一个数组存储牌的花色,一个数组存储牌的序号
  9. String[] colors = {"♥", "♠", "♣", "♦","♥", "♠", "♣", "♦"};
  10. String[] numbers = {"2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};
  11. // 把两副牌的大小王都存储到poker集合中
  12. poker.add("♚大王");
  13. poker.add("♔小王");
  14. poker.add("♚大王");
  15. poker.add("♔小王");
  16. // 循环嵌套遍历两个素组,组装108张牌
  17. for (String number : numbers) {
  18. for (String color : colors) {
  19. // 把组装好的牌存储到poker集合中
  20. poker.add(color + number);
  21. }
  22. }
  23. }
  24. }

2.2 洗牌

  • 使用集合工具类Collections中的方法
        Collections.shuffle(poker);

2.3 发牌

  • 定义5个集合,存储4个玩家的牌和底牌
  1. package DemoDdz;
  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. public class Upgrade {
  5. public static void main(String[] args) {
  6. // 1、准备牌
  7. // 定义一个存储108张牌的ArrayList集合,泛型使用String
  8. ArrayList<String> poker = new ArrayList<>();
  9. // 定义两个数组,一个数组存储牌的花色,一个数组存储牌的序号
  10. String[] colors = {"♥", "♠", "♣", "♦", "♥", "♠", "♣", "♦"};
  11. String[] numbers = {"2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};
  12. // 把两副牌的大小王都存储到poker集合中
  13. poker.add("♚大王");
  14. poker.add("♔小王");
  15. poker.add("♚大王");
  16. poker.add("♔小王");
  17. // 循环嵌套遍历两个素组,组装108张牌
  18. for (String number : numbers) {
  19. for (String color : colors) {
  20. // 把组装好的牌存储到poker集合中
  21. poker.add(color + number);
  22. }
  23. }
  24. /*
  25. 2、洗牌
  26. 使用集合工具类Collections中的方法
  27. static void shuffle(list<?> list) 使用默认随机源对指定列表进行置换;
  28. */
  29. Collections.shuffle(poker);
  30. /*
  31. 3、发牌
  32. 定义5个集合,存储玩家的牌和底牌
  33. */
  34. ArrayList<String> playe01 = new ArrayList<>();
  35. ArrayList<String> playe02 = new ArrayList<>();
  36. ArrayList<String> playe03 = new ArrayList<>();
  37. ArrayList<String> playe04 = new ArrayList<>();
  38. ArrayList<String> card = new ArrayList<>();
  39. /*
  40. 循环遍历poker集合,获取每一张牌
  41. 使用poker集合的索引%4给4个玩家轮流发牌
  42. 剩余八张牌给底牌,需要先判断(i>=100)
  43. */
  44. for (int i = 0; i < poker.size(); i++) {
  45. // 获取每一张牌
  46. String p = poker.get(i);
  47. // 轮流发牌
  48. if (i >= 100) {
  49. // 给底牌发牌
  50. card.add(p);
  51. } else if (i % 4 == 0) {
  52. playe01.add(p);
  53. } else if (i % 4 == 1) {
  54. playe02.add(p);
  55. } else if (i % 4 == 2) {
  56. playe03.add(p);
  57. } else if (i % 4 == 3) {
  58. playe04.add(p);
  59. }
  60. }
  61. }
  62. }

2.4 看牌-完整代码实现

  1. package DemoDdz;
  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.Iterator;
  5. public class Upgrade {
  6. public static void main(String[] args) {
  7. // 1、准备牌
  8. // 定义一个存储108张牌的ArrayList集合,泛型使用String
  9. ArrayList<String> poker = new ArrayList<>();
  10. // 定义两个数组,一个数组存储牌的花色,一个数组存储牌的序号
  11. String[] colors = {"♥", "♠", "♣", "♦", "♥", "♠", "♣", "♦"};
  12. String[] numbers = {"2", "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3"};
  13. // 把两副牌的大小王都存储到poker集合中
  14. poker.add("♚大王");
  15. poker.add("♔小王");
  16. poker.add("♚大王");
  17. poker.add("♔小王");
  18. // 循环嵌套遍历两个素组,组装108张牌
  19. for (String number : numbers) {
  20. for (String color : colors) {
  21. // 把组装好的牌存储到poker集合中
  22. poker.add(color + number);
  23. }
  24. }
  25. /*
  26. 2、洗牌
  27. 使用集合工具类Collections中的方法
  28. static void shuffle(list<?> list) 使用默认随机源对指定列表进行置换;
  29. */
  30. Collections.shuffle(poker);
  31. /*
  32. 3、发牌
  33. 定义5个集合,存储玩家的牌和底牌
  34. */
  35. ArrayList<String> playe01 = new ArrayList<>();
  36. ArrayList<String> playe02 = new ArrayList<>();
  37. ArrayList<String> playe03 = new ArrayList<>();
  38. ArrayList<String> playe04 = new ArrayList<>();
  39. ArrayList<String> card = new ArrayList<>();
  40. /*
  41. 循环遍历poker集合,获取每一张牌
  42. 使用poker集合的索引%4给4个玩家轮流发牌
  43. 剩余八张牌给底牌,需要先判断(i>=100)
  44. */
  45. for (int i = 0; i < poker.size(); i++) {
  46. // 获取每一张牌
  47. String p = poker.get(i);
  48. // 轮流发牌
  49. if (i >= 100) {
  50. // 给底牌发牌
  51. card.add(p);
  52. } else if (i % 4 == 0) {
  53. playe01.add(p);
  54. } else if (i % 4 == 1) {
  55. playe02.add(p);
  56. } else if (i % 4 == 2) {
  57. playe03.add(p);
  58. } else if (i % 4 == 3) {
  59. playe04.add(p);
  60. }
  61. }
  62. // 4、看牌
  63. // 直接打印输出
  64. System.out.println("星爷:" + playe01);
  65. System.out.println("发哥:" + playe02);
  66. System.out.println("华仔:" + playe03);
  67. System.out.println("赌神:" + playe04);
  68. System.out.println("底牌:" + card);
  69. // 遍历数组中的所有元素
  70. Iterator<String> it = poker.iterator();
  71. while (it.hasNext()) {
  72. String s = it.next();
  73. System.out.println(s);
  74. }
  75. }
  76. }

2.5 实现效果

  • 打印输出后,每次刷新所发的牌均不一样

打印效果

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/846464
推荐阅读
相关标签
  

闽ICP备14008679号