按照斗地主的规则,完成洗牌发牌的动作
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);}
}
按照斗地主的规则,完成洗牌发牌的动作相关推荐
- 斗地主练习(按照斗地主的规则,完成洗牌发牌的动作。)
按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 使用54张牌: 打乱顺序: 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌: 手中的牌按从小到大的顺序排列 import java. ...
- 通过程序实现斗地主过程中的洗牌,发牌和看牌(简约版)
需求:通过程序实现斗地主过程中的洗牌,发牌和看牌 思路: 创建一个牌盒,也就是定义一个集合对象,用ArrayList集合实现 往牌盒里面装牌 洗牌,也就是说把牌打撒,用Collections的shuf ...
- 【java】按照斗地主的规则,完成洗牌发牌的动作。
具体规则: 组装54张扑克牌将 54张牌顺序打乱 玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌 查看三人各自手中的牌(按照牌的大小排序).底牌 代码给出(详解): import java ...
- 斗地主小游戏之洗牌发牌
代码 public class PokerShuffleCards {public static void main(String[] args) {// 准备花色ArrayList<Strin ...
- java——斗地主小游戏之洗牌发牌
遇到的问题: 1.int和Integer的区别? 1)Integer是int的包装类,int则是java的一种基本数据类型 . 2)Integer变量必须实例化后才能使用,而int变量不需要 . 3) ...
- 【案例 6-4】斗地主洗牌发牌
[案例介绍] 1.任务描述 斗地主的扑克牌游戏,相信许多人都会玩,本例要求编写一个斗地主的洗牌发牌程序,要求按照斗地主的规则完成洗牌发牌的过程.一副扑克总共有 54 张牌,牌面由花色和数字组成(包括 ...
- 模拟斗地主洗牌发牌-JAVA
1.1案例介绍 按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 1.组装54张扑克牌 2.将54张牌顺序打乱 3.三个玩家参与游戏,三人交替摸牌,,每人17张牌,最后三张留作底牌. 4.查看三人各 ...
- 【JAVASE】模拟斗地主洗牌发牌
1.案例介绍 按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 组装54张扑克牌 54张牌顺序打乱 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌. 查看三人各自手中的牌(按照牌的大 ...
- 扑克牌洗牌发牌java代码_java实战(一)之Java模仿斗地主洗牌发牌小游戏
斗地主是全国范围内的一种桌面游戏,尽管全国各种类型,但大同小异.本节我们先来实现一下斗地主中的简单洗牌.发牌和看牌功能. 按照斗地主的规则,完成洗牌发牌的动作.具体规则为使用 54 张牌打乱顺序,3 ...
- java使用集合模拟斗地主洗牌发牌案例
package com.itheima.模拟斗地主.斗地主版本2;import java.util.ArrayList; import java.util.Collections; import ja ...
最新文章
- 一生只见一次的大彗星今天来了!
- .NET重构—单元测试重构
- 一款炫酷Loading动画--载入成功
- Android官方开发文档Training系列课程中文版:使用Fragment构建动态UI之构建灵活的UI
- Security Tutorials系列文章第七章:User-Based Authorization(上)
- 设计灵感|如何设计出简洁吸引人的字体海报?
- jQuery框架学习
- H5本地存储 localStorage和sessionStorage区别 存储方式 用法
- 用C#代码实现求两条线段的交点并判断各种情况
- Web前端三大框架的总结,你是否知道呢?
- 64位 java 数据类型_java 数据类型
- 西门子、安川、三菱伺服技术完全精通系列丛书!
- SpringMVC表单标签简介
- 国内CDN加速的背景和现状
- 如何让C盘可用空间变大
- 近十年量化交易领域最重要的十本参考书是哪些
- 广西英拓网络,7*24昼夜无差别 提供G空间,首月送产权服务器租用托管!
- apiserver报错:OpenAPI spec does not exists
- 源码逻辑-官方SDK的做法
- 苹果手机连接电脑没反应