Java---ArrayList实现扑克牌的洗牌与抓牌程序

简介: 一副扑克牌去掉大小王还剩52张牌,三个人玩儿,也就是一个人能拿到13张牌,一副新牌是按照顺序进行排列好的,要想玩就必须先洗牌,就是将牌的初始顺序打乱然后每个人一次拿一张牌,直到每人拿到13牌。

一.介绍

一副扑克牌去掉大小王还剩52张牌,三个人玩儿,也就是一个人能拿到13张牌,一副新牌是按照顺序进行排列好的,要想玩就必须先洗牌,就是将牌的初始顺序打乱然后每个人一次拿一张牌,直到每人拿到13牌。


这个程序的内容主要运用了ArrayList,如果有哪些ArrarList中的方法不懂,可以查阅相关知识在进行阅读。


在代码前导入包:import java.util.*;


二.定义一张牌

public class Card {
    public char suit;     //花色
    public String rank;    //面值
    public Card(char suit, String rank) {
        this.suit = suit;                  //构造方法
        this.rank = rank;
    }
    @Override
    public String toString() {         //重写打印方法
        return "["+suit+":"+rank+"]";
    }
}


说明:一张牌有花色和面值,花色包括红桃方片那些,所以给的是字符类型,面值包含A,J,Q,K,所以给的字符串类型。


三. 程序主体

说明:我把程序主体全放到CardGame类中


3.1 定义一副新牌

public List<Card> getCards(){
        char[] suits = {'♥','♠','♦','♣'};   //花色数组
        String[] ranks = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};//面值数组
        List<Card> cards = new ArrayList<>(52);//定义数组列表来存放每一张牌,并给出数量
        for(int i=0;i<4;i++){
            for(int j=0;j<13;j++){
                cards.add(new Card(suits[i],ranks[j]));  //向列表中添加定义好的牌
            }
        }
        return cards;  //返回这幅牌
    }


3.2 定义洗牌方法

public void shuffle(List<Card> cards){
        Random random = new Random();   //获取随机数种子
        for(int i=cards.size()-1;i>0;i--){   
            int j = random.nextInt(i);
            swap(cards,i,j);         //依次将最后一张牌与随机一张牌交换顺序
        }
    }
 public void swap(List<Card> cards,int i,int j){    //交换方法swap
        Card temp = cards.get(i);
        cards.set(i,cards.get(j));
        cards.set(j,temp);
    }



3.3 定义三个人和抓牌过程

说明:我把这个过程放在主方法中

List<List<Card>> hands = new ArrayList<>(3);   //定义三个人
        hands.add(new ArrayList<>(13));
        hands.add(new ArrayList<>(13));     //每个人都需要揭13张牌
        hands.add(new ArrayList<>(13));
   //   三个人依次揭牌,每个人揭最上面的牌,揭到后就将它从牌的列表里消除,
  //      也就是消除最上面的牌一次给每个人
        for(int i=0;i<13;i++){
            for(int j=0;j<3;j++){
                hands.get(j).add(cards.remove(0));    
            }
        }

四. 输出每个人抓到的牌

 

System.out.println("A手中的牌:");
        System.out.println(hands.get(0));
        System.out.println("B手中的牌");
        System.out.println(hands.get(1));
        System.out.println("C手中的牌");
        System.out.println(hands.get(2));

 

五.全部代码展示和输出结果展示

代码展示:

public class Card {
    public char suit;
    public String rank;
    public Card(char suit, String rank) {
        this.suit = suit;
        this.rank = rank;
    }
    @Override
    public String toString() {
        return "["+suit+":"+rank+"]";
    }
}


输出结果:

微信图片_20221028191949.jpg

微信图片_20221028191952.jpg




相关文章
|
7天前
|
Java C语言
课时8:Java程序基本概念(标识符与关键字)
课时8介绍Java程序中的标识符与关键字。标识符由字母、数字、下划线和美元符号组成,不能以数字开头且不能使用Java保留字。建议使用有意义的命名,如student_name、age。关键字是特殊标记,如蓝色字体所示。未使用的关键字有goto、const;特殊单词null、true、false不算关键字。JDK1.4后新增assert,JDK1.5后新增enum。
|
7天前
|
Java 编译器
课时7:Java程序基本概念(注释)
课时7介绍了Java程序中的注释。编程语言有其语法和语义,注释有助于理解代码需求,防止断档。Java支持三类注释:单行(//)、多行(/* */)和文档注释(/** */)。注释不会被编译器编译。范例中展示了如何在代码中使用注释,并强调了注释对项目文档管理的重要性。
|
4天前
|
存储 Java 数据库连接
【YashanDB知识库】Java程序调用存储过程,在提取clob时报YAS-00004
【YashanDB知识库】Java程序调用存储过程,在提取clob时报YAS-00004
|
4天前
|
搜索推荐 Java Android开发
课时146:使用JDT开发Java程序
在 Eclipse 之中提供有 JDT环境可以实现java 程序的开发,下面就通过一些功能进行演示。 项目开发流程
|
7天前
|
Java 开发工具
课时5:第一个Java程序
课时5介绍了编写第一个Java程序的步骤,包括创建Hello.java文件、编写“Hello World”代码、编译和运行程序。主要内容有:1) 新建并编辑Hello.java;2) 编译Java源文件生成.class文件;3) 通过命令行解释执行Java程序;4) 解释主方法的作用及信息输出操作。本课强调了类定义、文件命名规则和基本程序结构的重要性,并建议初学者使用记事本编写代码以熟悉基础语法。
|
2月前
|
传感器 安全 算法
消防救援支队消防员单兵装备智能养护舱电机驱动java版程序(二)
本文探讨消防救援中智能养护舱电机驱动的Java程序设计,作为系列文章第二部分。通过自动化和智能化手段,智能养护舱提升了装备维护效率与准确性。文章详细介绍了电机驱动模块的设计与实现,包括硬件选型、PID控制策略、安全保护机制及Java程序架构,确保电机精确控制、稳定性和安全性。未来将优化功能并引入智能算法和物联网技术,进一步提升装备维护智能化水平。
|
2月前
|
IDE Java 开发工具
消防救援支队消防员单兵装备智能养护舱点击驱动java版程序(一)
智能消防作战服架通过电机驱动系统提升消防员作业效率和安全性。本文介绍基于Java的电机驱动程序开发,涵盖硬件准备、软件环境搭建及驱动程序实现。重点包括串口通信配置、电机控制类设计与控制逻辑实现,确保电机高效稳定运行。通过正确配置通信协议和串口参数,并添加异常处理机制,保障系统的安全性和可靠性。
|
4月前
|
SQL 安全 Java
Java 异常处理:筑牢程序稳定性的 “安全网”
本文深入探讨Java异常处理,涵盖异常的基础分类、处理机制及最佳实践。从`Error`与`Exception`的区分,到`try-catch-finally`和`throws`的运用,再到自定义异常的设计,全面解析如何有效管理程序中的异常情况,提升代码的健壮性和可维护性。通过实例代码,帮助开发者掌握异常处理技巧,确保程序稳定运行。
83 2
|
4月前
|
IDE Java 编译器
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
184 2
|
5月前
|
Java Maven 数据安全/隐私保护
如何实现Java打包程序的加密代码混淆,避免被反编译?
【10月更文挑战第15天】如何实现Java打包程序的加密代码混淆,避免被反编译?
892 2

热门文章

最新文章