java实现简易扑克牌游戏

Java实现简易扑克牌游戏攻略

简述本游戏

本游戏为一款基于Java的简易扑克牌游戏,玩家可以通过交互式的界面进行牌局游戏。游戏规则沿用经典扑克牌规则,有四个花色(黑桃、红桃、梅花、方块),每个花色下面有十三张牌(A、2、3、4、5、6、7、8、9、10、J、Q、K),共五十二张牌。

游戏实现逻辑

  • 创建一个52张牌的扑克牌集合,包含所有牌的花色和点数;
  • 打乱扑克牌集合,即将牌集合的元素随机排序,这样每次的发牌顺序就不同;
  • 实例化两个List存储玩家的牌和庄家的牌,每次从牌集合中顺序取出一张牌,放入玩家和庄家对应的List中,重复操作直到每个人各拥有两张手牌;
  • 计算玩家手牌的点数与庄家首张牌的点数,显示给玩家查看,玩家可以根据手牌点数决定是否继续要牌;
  • 玩家可以选择继续要牌,每次从牌集合中顺序取出一张牌,放入玩家的手牌List中;
  • 当玩家停止要牌,或玩家A获得的总点数超过21点时,庄家开始出牌;
  • 庄家如果手牌点数小于17,庄家必须继续要牌,每次从牌集合中顺序取出一张牌,放入庄家的牌List中,直到庄家手牌点数达到17点或更高为止;
  • 比较玩家A与庄家手牌的点数大小,判断胜负并展示。

代码实现

以下是主要的代码实现逻辑,包括扑克牌集合初始话、洗牌、发牌和计算牌面点数等:

// 创建扑克牌集合
List<String> pokerList = new ArrayList<String>();
String[] colors = {"黑桃", "红心", "梅花", "方块"};
String[] numbers = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
for(String color : colors){
    for(String number : numbers){
        pokerList.add(color + number);
    }
}

// 洗牌
Collections.shuffle(pokerList);

// 发牌
List<String> playerCards = new ArrayList<String>();
List<String> dealerCards = new ArrayList<String>();
playerCards.add(pokerList.remove(0));
dealerCards.add(pokerList.remove(0));
playerCards.add(pokerList.remove(0));
dealerCards.add(pokerList.remove(0));

// 计算手牌点数
public static int calculatePoints(List<String> cards){
    int points = 0;
    int aceNum = 0; // 记录A的个数
    for(String card : cards){
        String cardValue = card.substring(2);
        if("JQK".contains(cardValue)){
            points += 10;
        }
        else if(cardValue.equals("A")){
            aceNum++;
            points += 1; // A暂记为1点
        }
        else{
            points += Integer.parseInt(cardValue);
        }
    }
    // 处理A的点数(当手牌点数小于等于11时,A记为11点)
    for(int i = 0; i < aceNum; i++){
        if(points <= 10){
            points += 11;
        }
        else{
            points += 1;
        }
    }
    return points;
}

示例说明

以下是两个示例说明:一次玩家胜,一次庄家胜。

玩家获胜

游戏开始,玩家A先得到两张手牌:红桃5和方块8。

玩家A获得的手牌为:
红桃5
方块8

根据规则计算手牌点数:5+8=13点,根据点数选择相应的操作(下一步是否要牌),因为手牌点数较低,选择要牌。玩家请求要一张牌:

玩家A获得的手牌为:
红桃5
方块8
黑桃8

玩家A获得了一张黑桃8,根据规则计算手牌点数:5+8+8=21点,达到最大点数,玩家不想要牌,此时庄家逐张发牌,得到手牌黑桃3和黑桃J。

庄家获得的手牌为:
黑桃3
黑桃J

根据规则计算庄家手牌点数:3+10=13点,此时根据庄家牌点数,庄家必须继续要牌。庄家请求要一张牌:

庄家获得的手牌为:
黑桃3
黑桃J
方块5

庄家获得了方块5,根据规则计算庄家手牌点数:3+10+5=18点,达到17点以上,庄家不需要要牌。比较玩家和庄家的手牌:玩家21点,庄家18点。玩家A获胜!

庄家获胜

游戏开始,玩家A先得到两张手牌:梅花7和黑桃J。

玩家A获得的手牌为:
梅花7
黑桃J

根据规则计算手牌点数:7+10=17点,达到最小点数,玩家不想要牌,此时庄家逐张发牌,得到手牌梅花K和红桃3。

庄家获得的手牌为:
梅花K
红桃3

根据规则计算庄家手牌点数:10+3=13点,此时根据庄家牌点数,庄家必须继续要牌。庄家请求要一张牌:

庄家获得的手牌为:
梅花K
红桃3
黑桃4

庄家获得了黑桃4,根据规则计算庄家手牌点数:10+3+4=17点,达到17点最小标准,庄家不需要要牌。比较玩家和庄家的手牌:玩家17点,庄家17点。玩家A输了!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现简易扑克牌游戏 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 如何使用Spring integration在Springboot中集成Mqtt详解

    如何使用Spring Integration在Spring Boot中集成MQTT? Spring Integration的Mqtt模块提供了使用Java Mqtt客户端连接到MQTT代理的模板类、消息驱动通道适配器,在Spring Boot应用程序中非常容易集成。下面是使用Spring Integration在Spring Boot中集成MQTT的完整攻略…

    Java 2023年5月20日
    00
  • springboot2 生产部署注意事项及示例代码

    下面是对“Spring Boot 2 生产部署注意事项及示例代码”的详细讲解。 Spring Boot 2 生产部署注意事项 1. 外部配置 Spring Boot 2 推崇使用外部配置,在生产环境中,一般将配置分离成一个单独的配置文件,不要将配置硬编码在应用程序中。这样可以更方便地进行部署和管理,同时也减少 Hard Code 带来的维护成本。可以使用环境…

    Java 2023年5月15日
    00
  • java判断字符串中是否包含中文并过滤中文

    下面是Java判断字符串中是否包含中文并过滤中文的完整攻略: 判断字符串中是否包含中文 Java中可以使用正则表达式来判断字符串中是否包含中文,代码示例如下: public static boolean isContainChinese(String str) { String reg = "[\\u4e00-\\u9fa5]"; Pat…

    Java 2023年5月27日
    00
  • Jmeter常见函数使用方法汇总

    Jmeter常见函数使用方法汇总 在Jmeter测试中,我们经常需要使用函数来对数据进行处理,Jmeter提供了许多常用的函数,可以用于解析、处理、比较等一系列操作。本文将详细介绍Jmeter常见函数的使用方法,并提供两个示例说明。 一、Jmeter常见函数 Jmeter提供了丰富的内置函数,以下是常见的几个: __time:返回当前的时间戳。 __thre…

    Java 2023年5月26日
    00
  • 常见的Java性能调优工具有哪些?

    Java性能调优是提高应用程序性能和并发运行效率的必要手段,为了提高Java应用程序的性能,需要使用一些专业的性能调优工具。 常见的Java性能调优工具有以下几种: JProfiler:JProfiler是一种动态的Java代码性能分析工具,主要特点是高效和低侵入性,可以帮助开发人员快速定位Java应用程序的性能瓶颈,并提出优化建议。使用JProfiler进…

    Java 2023年5月11日
    00
  • mvc架构实现商品的购买(二)

    MVC架构是一种将应用程序分成三个主要部分的设计模式:模型(Model)、视图(View)和控制器(Controller)。在进行商品购买的实现中,MVC架构可以有效地将代码和用户界面分离出来,使得应用程序更容易维护和扩展。 具体而言,实现商品购买可以遵循以下步骤: 创建模型(Model) 模型部分负责处理应用程序数据,例如商品信息、购物车内容等。在实现中,…

    Java 2023年6月16日
    00
  • jmeter添加自定函数的实例(jmeter5.3+IntelliJ IDEA)

    下面我将为你讲解“jmeter添加自定函数的实例(jmeter5.3+IntelliJ IDEA)”的攻略: 1. 准备工作 1.1 下载安装Java Development Kit(JDK) 在JMeter中开发自定义Java代码,需要安装好JDK,并设置好JAVA_HOME环境变量。下载地址:https://www.oracle.com/java/tec…

    Java 2023年5月19日
    00
  • Java中四种线程池的使用示例详解

    Java中四种线程池的使用示例详解 前言 线程池可以实现线程的复用, 表示为一个线程池中的线程可以多次使用, 而不是单个线程只能被使用一次。Java中的线程池主要有四种, 分别是固定线程数线程池、可缓存的线程池、单线程化线程池和定时器线程池。接下来我们将介绍这四种线程池的使用详细攻略。 一、固定线程数线程池 固定线程数线程池,顾名思义,就是只有固定数量的线程…

    Java 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部