我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java如何实现扑克牌的创建及发放

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java如何实现扑克牌的创建及发放

这篇文章主要讲解了“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.扑克牌运行结果

    Java如何实现扑克牌的创建及发放

    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是我们存放卡牌的位置(包含数字以及花色),通过双循环来创建我们梅花&clubs;、方片&diams;、红桃&hearts;和黑桃&spades;这四种牌。

    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张牌的目的。

    最后完成的效果图如下:

    Java如何实现扑克牌的创建及发放

    感谢各位的阅读,以上就是“Java如何实现扑克牌的创建及发放”的内容了,经过本文的学习后,相信大家对Java如何实现扑克牌的创建及发放这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    Java如何实现扑克牌的创建及发放

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    Java如何实现扑克牌的创建及发放

    这篇文章主要讲解了“Java如何实现扑克牌的创建及发放”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java如何实现扑克牌的创建及发放”吧!题目:创建一个扑克牌(不需要包含大小王),分别分发
    2023-07-05

    Java实现扑克牌的创建以及发放

    在java当中生成一副牌有很多种方法,有简单易于理解的面向过程编程,也有面向对象模块化编程,下面这篇文章主要给大家介绍了关于Java实现扑克牌的创建以及发放的相关资料,需要的朋友可以参考下
    2023-03-07

    Java如何实现斗地主的发牌功能

    这篇文章主要介绍了Java如何实现斗地主的发牌功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。斗地主是全国范围内的一种桌面游戏,尽管全国各种类型,但大同小异,今天我们先来实
    2023-06-20

    Java如何实现自动数据库表的创建

    要实现自动创建数据库表,您可以使用Java的数据库操作API(如JDBC)结合SQL语句来完成。下面是一个基本的Java代码示例,演示了如何使用JDBC和SQL语句来创建数据库表:```javaimport java.sql.Connect
    2023-09-27

    微信公众平台开发中使用Java如何实现创建一个自定义菜单

    微信公众平台开发中使用Java如何实现创建一个自定义菜单?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。自定义菜单这个功能在我们普通的编辑模式下是可以直接在后台编辑的,但是一旦我
    2023-05-31

    MySQL的触发器在Python中如何实现和应用?(Python环境下如何创建和使用MySQL的触发器?)

    MySQL触发器的Python实现和应用MySQL触发器可自动执行数据库操作,实现业务逻辑。要在Python中创建触发器,可以使用mysql.connector库。触发器逻辑可以使用SQL语句编写,包括更新表、发送通知等。Python本身不支持触发器,但可以通过SQLAlchemy等框架进行集成。触发器优点包括自动化任务、减少重复代码、提升性能。缺点则包括复杂性、性能影响和调试困难。
    MySQL的触发器在Python中如何实现和应用?(Python环境下如何创建和使用MySQL的触发器?)
    2024-04-02

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录