返回顶部
首页 > 资讯 > 精选 >Java如何实现扑克牌的创建及发放
  • 396
分享到

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

2023-07-05 10:07:52 396人浏览 八月长安
摘要

这篇文章主要讲解了“Java如何实现扑克牌的创建及发放”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“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如何实现扑克牌的创建及发放这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

    --结束END--

    本文标题: Java如何实现扑克牌的创建及发放

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

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

    猜你喜欢
    • Java如何实现扑克牌的创建及发放
      这篇文章主要讲解了“Java如何实现扑克牌的创建及发放”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java如何实现扑克牌的创建及发放”吧!题目:创建一个扑克牌(不需要包含大小王),分别分发...
      99+
      2023-07-05
    • Java实现扑克牌的创建以及发放
      目录题目:1.扑克牌的源代码2.扑克牌运行结果3.扑克牌代码创建原理讲解3.1创建扑克牌前的准备工作3.2 52张扑克牌的创建(除去大小王)3.3洗牌3.4发牌总结题目: 创建一个扑...
      99+
      2023-03-07
      java实现扑克牌 java发牌程序 java扑克牌游戏
    • Java-扑克牌的创建以及发放
      Java-扑克牌的创建以及发放 题目:创建一个扑克牌(不需要包含大小王),分别分发给3个人,一个人发5张牌,输出结果要求包含全套牌(52张牌),以及3个人各自的牌的花色以及数字。1.扑克牌的源...
      99+
      2023-09-03
      java 开发语言 数据结构
    • Java模拟实现扑克牌洗牌和发牌的示例代码
      目录一. 需求二. 全局代码poker.javapokers.java三. 设计分析1. 设计一张扑克牌2. 得到一副新牌3. 洗牌4. 发牌一. 需求 设计一副新的的扑克牌, 4个...
      99+
      2024-04-02
    • Python如何实现扑克牌21点游戏
      这篇文章主要介绍Python如何实现扑克牌21点游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!直接上代码import randomimport sys# 牌面列表card_code&...
      99+
      2023-06-22
    • C语言如何实现扑克牌游戏
      这篇文章主要介绍C语言如何实现扑克牌游戏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、 设计目的扑克牌是我们从小玩到大的纸牌类小游戏,我们有各种玩法跟不同的规则。我之所以选择的这个扑克牌,是因为我觉得可以提高我的...
      99+
      2023-06-22
    • 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.前言相信每位看过《赌神》的...
      99+
      2023-06-29
    • Java如何实现斗地主的发牌功能
      这篇文章主要介绍了Java如何实现斗地主的发牌功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。斗地主是全国范围内的一种桌面游戏,尽管全国各种类型,但大同小异,今天我们先来实...
      99+
      2023-06-20
    • java如何实现斗地主发牌功能
      这篇文章给大家分享的是有关java如何实现斗地主发牌功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体内容如下问题:参考斗地主的游戏规则,完成一个发牌的功能(54张牌,考虑点数,花色;三名玩家,其中地主比其他...
      99+
      2023-06-20
    • java如何创建接口实现类
      在 Java 中,可以使用 `implements` 关键字来创建接口的实现类。具体步骤如下:1. 定义一个接口,在接口中声明需要实...
      99+
      2023-08-24
      java
    • Java如何实现自动数据库表的创建
      要实现自动创建数据库表,您可以使用Java的数据库操作API(如JDBC)结合SQL语句来完成。下面是一个基本的Java代码示例,演...
      99+
      2023-09-27
      Java 数据库
    • java如何实现Callable接口创建线程类
      小编给大家分享一下java如何实现Callable接口创建线程类,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!实现 Callab...
      99+
      2024-04-02
    • java如何实现Runnable接口创建线程类
      小编给大家分享一下java如何实现Runnable接口创建线程类,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!实现 Runnab...
      99+
      2024-04-02
    • Oracle 12c如何实现手工建库而非CDB及CDB创建
      这篇文章给大家分享的是有关Oracle 12c如何实现手工建库而非CDB及CDB创建的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。相信大家应该都知道,对于Oracle数据库的创建...
      99+
      2024-04-02
    •  java的发展史及如何搭建环境
      这篇文章主要介绍了 java的发展史及如何搭建环境的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇 java的发展史及如何搭建环境文章都会有所收获,下面我们一起来看看吧。1.1 java简介詹...
      99+
      2023-06-29
    • java如何实现目录不存在创建目录
      在Java中,可以使用`mkdir()`方法来创建目录。该方法是`File`类的一个方法,需要传入一个文件路径作为参数。如果目录不存...
      99+
      2023-09-22
      java
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作