扑克牌游戏
1.通过ArrayList实现一副扑克牌(52张)
2.实现洗牌功能
3.实现发牌功能:3名玩家,每名玩家各自发5张牌

Card.java

package card;import java.util.Objects;public class Card {private final int rank;   //牌面值private final String suit;   //花色public Card(int rank,String suit){this.rank = rank;this.suit = suit;}// [♥ A]...@Overridepublic String toString() {return String.format("[%s %s]",suit,rankToString(rank));}private static  String rankToString(int rank) {switch(rank){case 1:return "A";case 11:return "J";case 12:return "Q";case 13:return "K";default:return String.valueOf(rank);}}
}

Game.java

package card;import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;public class Game {public static void main(String[] args) {// 1. 初始化一副扑克牌ArrayList<Card> cardList = initCardList();// 2. 洗牌shuffle(cardList); // 自己实现的洗牌算法// Collections.shuffle(cardList);// Java自带的洗牌算法// 3. 准备三名玩家的手牌(存放牌的容器,通过ArrayList<card>来表示)ArrayList<Card> playerA = new ArrayList<>();ArrayList<Card> playerB = new ArrayList<>();ArrayList<Card> playerC = new ArrayList<>();System.out.println("抓牌前:");System.out.println("牌堆有"+cardList.size()+"张牌:"+cardList);// 4. 按照a->b->c->a->b->c...的顺序,轮流抓牌,每人5张for (int i = 0; i < 5; i++) {// 抓牌:1. 从牌堆(CardList)中删除一张牌//      2. 把该牌放入对应玩家的手牌中// A玩家抓牌Card card = cardList.remove(0);playerA.add(card);// B玩家抓牌card = cardList.remove(0);playerB.add(card);// C玩家抓牌card = cardList.remove(0);playerC.add(card);}System.out.println("抓牌后:");System.out.println("牌堆有"+cardList.size()+"张牌:"+cardList);System.out.println("玩家A: "+playerA);System.out.println("玩家B: "+playerB);System.out.println("玩家C: "+playerC);}private static void shuffle(ArrayList<Card> cardList) {Random random = new Random();for (int i = cardList.size() - 1; i > 0; i--) {// 下标为[i]是要交换的其中一张牌Card aCard = cardList.get(i);// [0,i)位置中,随机生成一个下标// 下标为[random]是要交换的另一张牌int randomIdx = random.nextInt(i);// 交换Card tmpA = cardList.get(i);Card tmpB = cardList.get(randomIdx);cardList.set(i, tmpB);cardList.set(randomIdx, tmpA);}}private static ArrayList<Card> initCardList() {ArrayList<Card> cardList = new ArrayList<>();String[] suits = {"♥", "♠", "♣", "♦"};for (String suit : suits) {for (int rank = 1; rank <= 13; rank++) {Card card = new Card(rank, suit);cardList.add(card);}}return cardList;}
}

运行结果:

Java | Java模拟实现扑克牌洗牌、发牌过程相关推荐

  1. 用JAVA实现简单的扑克牌洗牌发牌并排序

    用JAVA实现简单的扑克牌洗牌发牌并排序,首先写代码之前需要明确需要分哪些步骤: 创建一个HashMap集合对象 创建一个ArrayList集合对象 生成一副扑克牌 将扑克牌按照键值关系添加到Hash ...

  2. Java项目:模拟扑克牌洗牌发牌排序

    用JAVA实现简单的扑克牌洗牌发牌并排序,首先写代码之前需要明确需要分哪些步骤: 创建一个HashMap集合对象 创建一个ArrayList集合对象 生成一副扑克牌 将扑克牌按照键值关系添加到Hash ...

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

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

  4. C语言 扑克牌洗牌发牌统计同花顺个数程序

    目录 一.2个算法关键点 关键点1:洗牌算法 关键点2:查找同花顺算法 二.运行结果 三.完整代码 题目: 一张扑克牌可用结构类型描述,一副扑克牌的52张牌则是一个结构数组. 1.试编写洗牌函数和供4 ...

  5. 集合之扑克牌---洗牌+发牌+发牌后排序+看牌

    1.首先,我们需要准备扑克牌花色和点数(大小王后面添加) //准备扑克String[] flowers = {"♠", "♣", "♦", ...

  6. 扑克牌洗牌发牌,并排序输出(c++)

    52张扑克牌,随机洗牌,然后发牌,并把每个玩家的牌按从大到小的顺序显示 大小规则:AKQJ1098765432 输出效果: 完整代码: #include <iostream> #inclu ...

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

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

  8. java集合框架的练习之斗地主洗牌发牌的模拟(升级版)

    首先,奉上java集合框架的练习之斗地主洗牌发牌的模拟(初级版)的链接:http://blog.csdn.net/striner/article/details/78489306 初级版只具有洗牌发牌 ...

  9. 用java制作扑克牌_Java实现扑克牌洗牌和发牌

    本文实例为大家分享了Java实现扑克牌洗牌发牌的具体代码,供大家参考,具体内容如下 实现原理:使用4种花色和13个数字组合成52张牌,放进一个集合中:通过把集合数据排序打乱实现洗牌操作,然后在通过循环 ...

  10. java中Map集合、模拟斗地主洗牌发牌、JDK9对集合添加的优化

    1.1 Map集合概述 Map集合概述 Map==>映射(一个对应一个) Map是一个接口,只要实现了该接口的类都是双列集合. 双列集合每次存储元素时都需要存储两个元素,一个元素称为键,一个元素 ...

最新文章

  1. 024_Word知识汇总
  2. 笔试总结2(整理 觉得比较好的)
  3. Cesium - 转换obj模型为3D Tiles 并加载
  4. 洛谷 - P3355 骑士共存问题(二分图最大独立集)
  5. mysql的分片系统_MySQL分片
  6. springboot创建项目 编写dao serviece 和controller 持久层用mybatis
  7. python可以自动写文章吗_让python来告诉你神奇的操作,如何实现文章自动化
  8. 《团队激励与沟通》第 8 讲——团队合作技巧 重点部分总结
  9. php二分查找算法时间复杂度,一个运用二分查找算法的程序的时间复杂度是什么...
  10. asp.net用url重写URLReWriter实现任意二级域名(续)
  11. @RequestBody应用,requestbody
  12. 洛谷P3648 [APIO2014]序列分割(斜率优化)
  13. mysql左联一对多_MySQL左连接多对一行
  14. 在weblogic上配置数据源
  15. 【SCIR AAAI2021】数据增强没效果?试试用Cluster-to-Cluster生成更多样化的新数据吧...
  16. BZOJ2327: [HNOI2011]勾股定理
  17. Android 学习之补间(Tween)动画
  18. Matlab2016及以上版本设置VS编译器
  19. 流程图详解 new String(“abc“) 创建了几个字符串对象
  20. 小度加速破圈,智能音箱告别肉搏战

热门文章

  1. GBase 8s 编写使用UDR(C/Java) 转发liaosnet
  2. 了解 React 之 Suspense 和 lazy
  3. 方图来袭,且看483万亿美元的场外衍生品市场如何风云变幻
  4. ToneChip反馈降噪抑制器的UI设计
  5. C语言中extern的用法
  6. python QQ聊天机器人,qqbot 使用简介
  7. 幻方 java,Java奇数阶幻方实现代码
  8. [渝粤教育] 中国人民警察大学 工业企业防火 参考 资料
  9. php中验证码显示不出,PHP验证码显示不出来
  10. android 自动语音提醒,Android 语音播报实现方案