返回顶部
首页 > 资讯 > 后端开发 > JAVA >Java-扑克牌的创建以及发放
  • 472
分享到

Java-扑克牌的创建以及发放

java开发语言数据结构 2023-09-03 18:09:17 472人浏览 安东尼
摘要

Java-扑克牌的创建以及发放 题目:创建一个扑克牌(不需要包含大小王),分别分发给3个人,一个人发5张牌,输出结果要求包含全套牌(52张牌),以及3个人各自的牌的花色以及数字。1.扑克牌的源

Java-扑克牌的创建以及发放

大家好,我是晓星航。今天为大家带来的是 Java-扑克牌的创建以及发放的讲解!😀

题目:创建一个扑克牌(不需要包含大小王),分别分发给3个人,一个人发5张牌,输出结果要求包含全套牌(52张牌),以及3个人各自的牌的花色以及数字。

1.扑克牌的源代码

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;    }    @Override    public String toString() {        return "[ 花色:"+this.suit+" "+this.rank+" ]";    }}//没有大小王:1,2,3,4,5,6,7,8,9,10,11,12,13public class TestDemo {    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++) {                cards.add(new Card(j,suits[i]));            }        }        return cards;    }    private static void swap(List<Card> cards,int i,int j) {//      Card tmp = cards[i];        Card tmp = cards.get(i);//      cards[i] = cards[j];        cards.set(i,cards.get(j));//      cards[j] = tmp;        cards.set(j,tmp);    }    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);        }    }    //扑克牌:    public static void main(String[] args) {        List<Card> cards = buyCard();        System.out.println("买牌:"+cards);        shuffle(cards);        System.out.println("洗牌:"+cards);        System.out.println("接牌:3个人每个人轮流接5张牌");        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);                hand.get(j).add(card);            }        }        System.out.println("第1个人的牌: "+hand1);        System.out.println("第2个人的牌: "+hand2);        System.out.println("第3个人的牌: "+hand3);        System.out.println("剩下的牌: "+cards);    }

2.扑克牌运行结果

3.扑克牌代码创建原理讲解

3.1创建扑克牌前的准备工作

class Card {    private int rank;//数字    private String suit;//花色    public Card(int rank, String suit) {        this.rank = rank;        this.suit = suit;    }    @Override    public String toString() {        return "[ 花色:"+this.suit+" "+this.rank+" ]";    }}

这为后续扑克牌的花色以及数字大小创建了类。

    public static void main(String[] args) {        List<Card> cards = buyCard();        System.out.println("买牌:"+cards);        shuffle(cards);        System.out.println("洗牌:"+cards);        System.out.println("接牌:3个人每个人轮流接5张牌");                System.out.println("第1个人的牌: "+hand1);        System.out.println("第2个人的牌: "+hand2);        System.out.println("第3个人的牌: "+hand3);        System.out.println("剩下的牌: "+cards);    }}

这里我们写好了我们扑克牌的基本菜单逻辑,即买牌(52张),再洗牌(打乱牌),最后将所有牌分发给玩游戏的三个人(每人五张)。

3.2 52张扑克牌的创建(除去大小王)

    public static List<Card> buyCard() {        ArrayList<Card> cards = new ArrayList<>();        for (int i = 0; i < 4; i++) {            for (int j = 1; j <= 13; j++) {                cards.add(new Card(j,suits[i]));            }        }        return cards;    }

这里我们定义了buyCard方法来创建我们的52张牌,cards是我们存放卡牌的位置(包含数字以及花色),通过双循环来创建我们梅花♣、方片♦、红桃♥和黑桃♠这四种牌。

3.3洗牌

    private static void swap(List<Card> cards,int i,int j) {//      Card tmp = cards[i];        Card tmp = cards.get(i);//      cards[i] = cards[j];        cards.set(i,cards.get(j));//      cards[j] = tmp;        cards.set(j,tmp);    }    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);        }    }

在写我们的shuffle洗牌方法前我们写了swap交换方法,其中swap使用的是空瓶交换原理通过List中get方法来交换数值以及相对应的花色。

而shuffle方法我们则用了size来代表我们卡牌的数量,通过random随机方法来生成随机数传给我们swap交换方法当作形参从而完成我们扑克牌的洗牌。

3.4发牌

System.out.println("接牌:3个人每个人轮流接5张牌");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);        hand.get(j).add(card);    }}System.out.println("第1个人的牌: "+hand1);System.out.println("第2个人的牌: "+hand2);System.out.println("第3个人的牌: "+hand3);System.out.println("剩下的牌: "+cards);

在创建好牌和洗完牌之后当然就是我们的发牌了,我们发牌采取了创建hand的动态数组来储存我们的牌,然后我们创建了hand1、hand2以及hand3的三个动态数组来分别表示我们的三个人,通过两次循环达到3个人每个人轮流接5张牌的目的。

最后完成的效果图如下:

感谢各位读者的阅读,本文章有任何错误都可以在评论区发表你们的意见,我会对文章进行改正的。如果本文章对你有帮助请动一动你们敏捷的小手点一点赞,你的每一次鼓励都是作者创作的动力哦!😘

来源地址:https://blog.csdn.net/xinhang10/article/details/129249979

--结束END--

本文标题: Java-扑克牌的创建以及发放

本文链接: https://lsjlt.com/news/392624.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java-扑克牌的创建以及发放
    Java-扑克牌的创建以及发放 题目:创建一个扑克牌(不需要包含大小王),分别分发给3个人,一个人发5张牌,输出结果要求包含全套牌(52张牌),以及3个人各自的牌的花色以及数字。1.扑克牌的源...
    99+
    2023-09-03
    java 开发语言 数据结构
  • Java实现扑克牌的创建以及发放
    目录题目:1.扑克牌的源代码2.扑克牌运行结果3.扑克牌代码创建原理讲解3.1创建扑克牌前的准备工作3.2 52张扑克牌的创建(除去大小王)3.3洗牌3.4发牌总结题目: 创建一个扑...
    99+
    2023-03-07
    java实现扑克牌 java发牌程序 java扑克牌游戏
  • Java如何实现扑克牌的创建及发放
    这篇文章主要讲解了“Java如何实现扑克牌的创建及发放”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java如何实现扑克牌的创建及发放”吧!题目:创建一个扑克牌(不需要包含大小王),分别分发...
    99+
    2023-07-05
  • Java模拟实现扑克牌洗牌和发牌的示例代码
    目录一. 需求二. 全局代码poker.javapokers.java三. 设计分析1. 设计一张扑克牌2. 得到一副新牌3. 洗牌4. 发牌一. 需求 设计一副新的的扑克牌, 4个...
    99+
    2024-04-02
  • Java实现扑克牌游戏的示例代码
    目录一、三人扑克二、具体实现Card类生成52张牌打乱顺序发牌三、完整代码一、三人扑克 想不想带上好朋友来上一局三人扑克呢。 二、具体实现 Card类 定义一个花色color变量和...
    99+
    2024-04-02
  • Java使用ArrayList实现扑克牌的示例代码
    目录前言一、项目要求二、具体实现2.1 Card类2.2 生成扑克牌2.3 打乱顺序2.4 发牌三、Test.java前言 学习了关于集合类的知识,我们可以做一个小项目来加深对集合类...
    99+
    2024-04-02
  • Java实现简易扑克牌游戏的完整实例
    功能描述 1、创建扑克牌。包括四种花色(黑桃,红心,梅花,方块),十三种点数(2-10,J,Q,K),不考虑大小王。 2、创建两个玩家。包括玩家id、姓名、手牌等集合,手牌为扑克牌的...
    99+
    2024-04-02
  • Java实现简易扑克牌游戏的完整步骤
    本篇内容主要讲解“Java实现简易扑克牌游戏的完整步骤”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java实现简易扑克牌游戏的完整步骤”吧!Java的特点有哪些Java的特点有哪些1.Java...
    99+
    2023-06-14
  • java存储以及java对象创建的流程(详解)
    java存储:1)寄存器:这是最快的存储区,位于处理器的内部。但是寄存器的数量有限,所以寄存器根据需求进行分配。我们不能直接进行操作。2)堆栈:位于通用RAM中,可以通过堆栈指针从处理器那里获取直接支持。堆栈指针往下移动,则分配新的内存。网...
    99+
    2023-05-31
    java 存储 对象创建
  • 浅谈Java中File文件的创建以及读写
    目录1.创建一个文件2.创建一个文件夹3.创建同目录下文件4.删除文件或空文件夹5.递归删除所有文件(包括子文件)6.读取txt文件内容,流操作要用try-catch(字符流)7.读...
    99+
    2024-04-02
  • JAVA对象创建与对象克隆的方法
    这篇文章主要介绍了JAVA对象创建与对象克隆的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JAVA对象创建与对象克隆的方法文章都会有所收获,下面我们一起来看看吧。一、对象的4种创建方式new 创建反射克隆...
    99+
    2023-06-29
  • 触发器的概念及其语法/创建触发器/查看以及删除
    触发器可以简单理解一种特殊的存储过程,之前存储过程的变量定义及流程语句同样适合触发器,唯一不同的是我们只需要定义触发器,而不用手动调用触发器。从事件触发的角度来说,触发器编写的过程就是触发事件定义的过程,因为触发器定义好后会随着数据库操作命...
    99+
    2021-11-25
    触发器的概念及其语法/创建触发器/查看以及删除
  • 关于Java创建线程的2种方式以及对比
    目录1. 继承Thread类2. 实现Runnable接口:创建线程的两种方式对比:线程的完整生命周期:总结Java中两种创建线程的方式: 1. 继承Thread类 重写run()方...
    99+
    2024-04-02
  • Oracle创建表空间、创建用户以及授权的方法
    这篇文章主要介绍“Oracle创建表空间、创建用户以及授权的方法”,在日常操作中,相信很多人在Oracle创建表空间、创建用户以及授权的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望...
    99+
    2024-04-02
  • Java的线程与进程以及线程的四种创建方式
    目录问题描述case 代码截图数据库DOcontroller定义dao定义mapper实现mysql相关 properties配置数据库数据测试结果具体错误信息解决总结问题描述 这里...
    99+
    2024-04-02
  • Kubernetes服务的介绍以及如何创建
    Kubernetes服务的介绍以及如何创建,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前言上文介绍了Kubernetes副本机制,正是因为副本机制你的部署能自动保待运行,并且...
    99+
    2023-06-19
  • JavaScript中创建类的优秀做法以及什么时候创建类
    JavaScript中创建类的优秀做法以及什么时候创建类,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。使用默认参数和属性缩写,清理我们的Jav...
    99+
    2024-04-02
  • 详解Java线程的创建及休眠
    目录一、进程vs线程 二、线程的创建方式三、实现Runnable接口的方式(3种)四、实现Callable接口的方式(1种)五、线程的休眠六、线程优先级七、守护线程一、进程vs线程 ...
    99+
    2024-04-02
  • java创建存放不同类型数据的数组
    java创建存放不同类型数据的数组java中,将不同类型的数据放到一个数组中,可以采用Object来实现。例子:public class Main { public static void main(String []args) {...
    99+
    2020-12-31
    java入门 java object 数组
  • MySQL 索引的优缺点以及创建索引的准则
    一、为什么要创建索引呢(优点) 这是因为,创建索引可以大大提高系统的性能。 第一, 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。 第二, 可以大大加快数据的检索速度,这也是创建索引的最主要的原...
    99+
    2022-05-31
    MySQL 索引 MySQL 索引优缺点 MySQL 创建索引的准则
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作