Java使用ArrayList实现扑克牌的示例代码

目录
  • 前言
  • 一、项目要求
  • 二、具体实现
    • 2.1 Card类
    • 2.2 生成扑克牌
    • 2.3 打乱顺序
    • 2.4 发牌
  • 三、Test.java

前言

学习了关于集合类的知识,我们可以做一个小项目来加深对集合类知识的学习!

一、项目要求

代码实现,一副扑克牌(不包括大小王)的购买、打乱、发牌。

二、具体实现

2.1 Card类

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+" ]";
    }
}

2.2 生成扑克牌

 private static final String[] suits = {"", "", "", ""};

    //假设没有大小王:1 2 3............. 11 12 13
    public static List<Card> buyCard() {
        ArrayList<Card> cards = new ArrayList<>();
        for (int i = 0; i < 4; i++) {
            for (int j = 1; j <= 13; j++) {
//                String suit = suits[i];
//                int rank = j;
//                Card card = new Card(rank, suit);
//                cards.add(card);
                cards.add(new Card(j,suits[i]));
            }
        }
        return cards;
    }

2.3 打乱顺序

 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 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);
        }
    }

2.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);
            }
        }

三、Test.java

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+" ]";
    }
}
public class Test1 {
    private static final String[] suits = {"", "", "", ""};

    //假设没有大小王:1 2 3............. 11 12 13
    public static List<Card> buyCard() {
        ArrayList<Card> cards = new ArrayList<>();
        for (int i = 0; i < 4; i++) {
            for (int j = 1; j <= 13; j++) {
//                String suit = suits[i];
//                int rank = j;
//                Card card = new Card(rank, suit);
//                cards.add(card);
                cards.add(new Card(j,suits[i]));
            }
        }
        return cards;
    }

    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 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("第一个人的牌:"+ hand1);
        System.out.println("第二个人的牌:"+ hand2);
        System.out.println("第三个人的牌:"+ hand3);
        System.out.println("剩下的牌:"+cards);
    }

    public static void main1(String[] args) {
        // 1. 构造一副扑克牌
        // 2. 揭牌
        Card card = new Card(3,"");
        System.out.println(card);

    }
}

到此这篇关于Java使用ArrayList实现扑克牌的示例代码的文章就介绍到这了,更多相关Java ArrayList扑克牌内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • java实现简单扑克牌游戏

    本文实例为大家分享了java实现简单扑克牌游戏的具体代码,供大家参考,具体内容如下 扑克牌小游戏: 游戏玩法简介:定义五个People在玩扑克牌游戏,玩法是5个人从一副没有大小王的扑克牌中各抽取4张,牌的类型有四种:♥,♣,♠,♦.牌的大小为从1~13.(此处为了简单,只取1 -5). 1.黑桃♠A在哪名玩家手中,哪名玩家就获胜. package poker; import java.util.ArrayList; import java.util.Collections; import jav

  • Java实现简易扑克牌游戏的完整实例

    功能描述 1.创建扑克牌.包括四种花色(黑桃,红心,梅花,方块),十三种点数(2-10,J,Q,K),不考虑大小王. 2.创建两个玩家.包括玩家id.姓名.手牌等集合,手牌为扑克牌的集合. 3.洗牌.将创建好的扑克牌打乱. 4.发牌.将洗牌之后的扑克牌集合,从第一张开始,发给两个玩家,安装一人 一张的方式,每人发两张. 5.游戏.比较两名玩家手中的扑克牌.规则为:去两名玩家手上点数最大的牌进行比较,点数大的赢,若点数一样大,就按照色花进行比较. 难点分析: 1.洗牌,如何将扑克牌进行打乱.(主要

  • Java模拟扑克牌洗牌实现生成52张扑克的方法示例

    本文实例讲述了Java模拟扑克牌洗牌实现生成52张扑克的方法.分享给大家供大家参考,具体如下: 要求: 生成52张扑克,模拟扑克牌洗牌,并输出. 实现代码: package com.NCU.ZHANGhuirong; import java.util.ArrayList; import java.util.Collections; public class Card { public String poker(int num) { String str = ""; String[] f

  • java实现简易扑克牌游戏

    本文实例为大家分享了java实现扑克牌游戏的具体代码,供大家参考,具体内容如下 游戏功能描述 1.创建一副扑克牌: 包括四种花色:黑桃,红桃,梅花,方片 包括十三种点数:2-10,J,Q,K,A 2.创建两名玩家(or多名) 玩家至少要有ID,姓名,手牌等属性,手牌为扑克牌的集合 3.将创建好的扑克牌进行随机洗牌 4.从洗牌后的扑克牌的第一张开始,发给每个玩家,按照一人一张的方式,每人发两张(or多张) 5.比较两名玩家手中的扑克牌,比较规则为:取两人各自手中点数最大的牌进行比较,点数大的赢:若

  • Java实现扑克牌程序

    本文实例为大家分享了Java实现扑克牌程序的具体代码,供大家参考,具体内容如下 思路: 在实现之前,先要想好步骤,思路清晰才不会出错. 要实现一副扑克牌,首先要创建这个类,然后有一副扑克牌,之后进行洗牌,抓牌. 1.定义一个Card类 2.实现这个游戏: ①构造一副扑克牌(52张)这里不包含大小王 ②洗牌 ③三个人每个人抓五张牌 代码实现及其细节: 1.定义一个Card类 一张牌中包括两个属性:花色和牌面值 public class MyCard { public char suit; //花色

  • Java使用ArrayList实现扑克牌的示例代码

    目录 前言 一.项目要求 二.具体实现 2.1 Card类 2.2 生成扑克牌 2.3 打乱顺序 2.4 发牌 三.Test.java 前言 学习了关于集合类的知识,我们可以做一个小项目来加深对集合类知识的学习! 一.项目要求 代码实现,一副扑克牌(不包括大小王)的购买.打乱.发牌. 二.具体实现 2.1 Card类 class Card { private int rank;//数字 private String suit;//花色 public Card(int rank, String s

  • Java 8 Lambda 表达式比较器使用示例代码

    引言 在这个例子中,我们将向您展示如何使用 java8 lambda 表达式编写一个 Comparator 来对 List 进行排序. 经典的比较器示例: Comparator<Developer> byName = new Comparator<Developer>() { @Override public int compare(Developer o1, Developer o2) { return o1.getName().compareTo(o2.getName());

  • 使用Java对Hbase操作总结及示例代码

    前面已经给大家讲解过如何使用Hbase建表,以及基本的操作和一些常用shell命令,今天就给大家介绍下如何使用java对Hbase进行各种操作. 没印象的话可以再去浏览下: Hbase入门教程,shell命令大全讲解 Java操作Hbase主要方法: 1.Configuration 在使用Java API时,Client端需要知道HBase的配置环境,如存储地址,zookeeper等信息. 这些信息通过Configuration对象来封装,可通过如下代码构建该对象: Configuration

  • Java 实现模拟用户登录的示例代码

    创建一个用户类类型的集合,手动输入用户库 主要是判定输入的用户名和密码是否与库中的匹配 做好区别是用户名输入错误还是密码输入错误的提示. 定义用户类 public class User{ String username; String keyword; public User(String username, String keyword) { this.username = username; this.keyword = keyword; } } 主程序 import java.util.A

  • Java常用工具类汇总 附示例代码

    一.FileUtils private static void fileUtilsTest() { try { //读取文件内容 String readFileToString = FileUtils.readFileToString(new File("D:\\guor\\data\\test20211022000000.txt")); System.out.println(readFileToString); //删除文件夹 FileUtils.deleteDirectory(ne

  • Java实现NIO聊天室的示例代码(群聊+私聊)

    功能介绍 功能:群聊+私发+上线提醒+下线提醒+查询在线用户 文件 Utils 需要用maven导入下面两个包 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.18</version> </dependency> <dependency> <group

  • Java实现byte[]转List的示例代码

    目录 前言 Maven依赖 代码 补充 前言 其实这个工具是给自己写的,因为自己老是忘记.所以记录一下. Maven依赖 <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>30.1.1-jre</version> </dependency> 代码 package ai.guiji.cs

  • Java实现经典游戏打砖块游戏的示例代码

    目录 前言 主要设计 功能截图 代码实现 游戏核心类 小球类 砖块类 总结 前言 <JAVA打砖块>游戏是自制的游戏.玩家操作一根萤幕上水平的“棒子”,让一颗不断弹来弹去的“球”在撞击作为过关目标消去的“砖块”的途中不会落到萤幕底下. 主要设计 设计游戏界面,用swing实现 设计砖块,砖块类, 设计小球,满屏乱跑的小球类,负责打碎砖块 设计棒子,左右移动的木头板类 球碰到砖块.棒子与底下以外的三边会反弹,落到底下会失去一颗球,把砖块全部消去就可以破关. 小球碰到砖块的回调算法设计 小球碰到棒

  • Java实现经典游戏超级玛丽的示例代码

    目录 前言 主要设计 功能截图 代码实现 游戏主界面 马里奥 小怪 总结 前言 在你的童年记忆里,是否有一个蹦跳.顶蘑菇的小人? 如果你回忆起了它,你定然会觉得现在它幼稚.无聊,画面不漂亮,游戏不精彩……但请你记住:这才是真正的游戏,它给了你无限的欢乐! 马里奥是靠吃蘑菇成长,闻名世界的超级巨星.特征是大鼻子.头戴帽子.身穿背带工作服.还留着胡子. 如此经典的游戏,你怎么能错过,快来玩玩吧. <超级玛丽>游戏是用java语言实现,采用了swing技术进行了界面化处理,设计思路用了面向对象思想.

  • Java实现PDF转Word的示例代码(无水印无页数限制)

    目录 一.前言 二.jar破解 1.项目远程仓库配置 2.pom文件引入相关依赖 3.破解代码 三.pdf转word 一.前言 学习概述:简单的介绍一下本篇文章要讲解的Java知识点 学习目标:读者读完这篇文章之后,你希望他掌握你讲解的哪些重要的知识点 二.jar破解 1.项目远程仓库配置 aspose-pdf 这个需要配置单独的仓库地址才能下载,不会配置的可以去官网直接下载jar引入项目代码中. <repositories> <repository> <id>Aspo

随机推荐