import java.util.ArrayList;
import java.util.List;
import java.util.Random;class Card{private int rank; //牌的数字private String suit;//牌的花色public Card(int rank, String suit) {this.rank = rank;this.suit = suit;}@Overridepublic String toString() {return "["+this.suit+" "+this.rank+"]";}
}public class TestCaed {private static final String[] suits={"♥","♠","♣","♦"}; //花色信息数组public static List<Card> buyCard(){//一副扑克牌逻辑ArrayList<Card> cards=new ArrayList<>();for (int i = 0; i < 4; i++) { //四个花色for (int j = 1; j <= 13 ; j++) { //一个花色13张牌cards.add(new Card(j,suits[i]));}}return cards;}public static void shuffle(List<Card> cards){ //洗牌逻辑int size=cards.size();for (int i = size-1; i >0 ; i--) {Random random=new Random();int rand=random.nextInt(i); //随机数生成逻辑swap(cards,i,rand);}}private static void swap(List<Card> cards,int i,int j){ //洗牌过程Card tmp=cards.get(i); //两两交换 注意是对象的交换 !cards.set(i,cards.get(j));cards.set(j,tmp);}public static void main(String[] args) {List<Card> cards=buyCard();System.out.println("洗牌前:"+cards);shuffle(cards);System.out.println("洗牌后:"+cards);System.out.println("发牌,3个人,一个五张");//相当于一个二维数组,三个人,一人五张ArrayList<List<Card>> hand=new ArrayList<>();List<Card> hand1=new ArrayList<>();List<Card> hand2=new ArrayList<>();List<Card> hand3=new ArrayList<>();hand.add(hand1);hand.add(hand2);hand.add(hand3);//发牌逻辑for (int i = 0; i < 5; i++) {for (int j = 0; j < 3; j++) {Card card=cards.remove(0);//发去一张,删除一张,发去的永远是下标为0的第一张hand.get(j).add(card);}}//输出信息:System.out.println("第1个人的手牌:"+hand1);System.out.println("第2个人的手牌:"+hand2);System.out.println("第3个人的手牌:"+hand3);System.out.println("剩余的牌:"+cards);}
}

//相当于一个二维数组,三个人,一人五张
ArrayList<List> hand=new ArrayList<>();

【Java】 实现一副扑克牌,包含:洗牌+发牌(3个人,一人5张)+输出牌的信息 的逻辑相关推荐

  1. java 枚举类 扑克牌_用java写一副扑克牌

    1.使用枚举类型对一副扑克牌(52张牌,不包括大小王)建模:一副扑克牌有四种花色(Suit):HEART,SPADE,DIAMOND,CLUB:有十三种等级(Rank): import java.ut ...

  2. Java程序生成一副扑克牌

    在java当中生成一副牌有很多种方法,有简单易于理解的面向过程编程,也有面向对象模块化编程,面向对象编程需要对java有一定的基础,今天暂时我们先将如何用面向过程的思想生成一副扑克牌. 步骤一:我们需 ...

  3. 利用java集合框架实现扑克牌比大小游戏

    程序实现前提: 1.了解java集合框架 2.Collections工具类 3.Comparable,Comparator接口 游戏要求: 游戏有两个玩家,分别会得到两张纸牌,然后进行比较大小,拿到纸 ...

  4. 斗地主洗牌发牌——排序版

    文章目录 前言 一.知识点 二.使用步骤 2.完整代码 感谢您的阅读,不足之处欢迎指正 前言 Java实现模拟斗地主洗牌发牌操作,留下三张底牌,对发到手的纸牌排序. 一.知识点 主要使用HashMap ...

  5. 斗地主洗牌+发牌+排序

    unity初始化54张牌到场景中 将55张UI牌(54张正面加1张背面)打包成Atlas, 制作一个UISprite拖成预设,后代码循环54次画出来 for (int i = 0; i < iA ...

  6. Java实验-02 模拟扑克牌游戏的洗牌

    结合面向对象设计原则,分析和设计模拟扑克牌游戏的洗牌过程. 编程定义一个表示扑克牌的类 Poke,用 suit 来表示扑克牌的花色,用 face 来表示扑克牌的 牌面值,每副牌为 52 张,不考虑包含 ...

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

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

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

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

  9. java创建一副牌_用java怎么创建一副扑克牌

    一张扑克牌有两个属性,一个是花色(suit),一个是点数(rank),下面写一个简单的类 Card package com.syz.card; import java.io.Serializable; ...

最新文章

  1. 推荐一个Python GUI神器,双手彻底解放!
  2. Linux之CentOS的PHP为7.2但显示5.4版本
  3. 和的奇偶性(洛谷P4702题题解,Java语言描述)
  4. Functional Programming 资料收集
  5. docker $PWD路径_基于Docker搭建Nacos集群
  6. “思考”绝非一时的想法——读大前研一《思考的技术》
  7. python怎么使用-如何使用 Python 开始建立
  8. NOIP 2011 Day 1
  9. 38.Linux/Unix 系统编程手册(下) -- 编写安全的特权程序
  10. 【Django 2021年最新版教程25】模板语言 前端for循环怎么用 实例
  11. 编辑实测:迅捷PDF转换器怎么将PDF转换成JPG
  12. 注册石墨文档无法连接服务器,石墨文档没有访问权限的解决方法
  13. 水体浮游植物叶绿素a含量的测定
  14. todo已完成任务_总结一下TODO的用法
  15. 你永远不知道用户怎么使用你的产品
  16. CSS——CSS盒子模型(重点※)
  17. 【深度学习】步态识别-论文阅读:(T-PAMI-2021)综述:Deep Gait Recognition
  18. 浅谈华为EROFS文件系统的两个主要技术
  19. 我的编程之路之初出茅庐(二)
  20. 时间换算,秒、毫秒、微妙(转)

热门文章

  1. MinIO分布式专题(第一章、一文教你搭建MinIO单机版)
  2. 汇编语言的div指令 ax dx bx
  3. MATLAB知识点总结
  4. 这次终于彻底理解了傅里叶变换
  5. 实践|超简单实现OCR文字识别应用
  6. 科研助力|计算机科学方向一对一科研项目
  7. 飞行时间(TOF)相机优缺点及其应用领域
  8. 创建Joomla菜单
  9. linux基础: shell————正则表达式基础及sed
  10. Cocos2d入门--3--向量的应用