Java 写一个可以给斗地主玩家随机发牌的程序。

用java实现斗地主的思路 思路: 斗地主需要三个人:农民与地主,共54张牌随机发放给三个人,留三张底牌,每副牌有四种花色,13个序号 所以步骤大致分为: 1.准备牌:将54张牌存储到一个集合中 特殊牌:大王、小王 其他52张牌: 定义一个数组/集合:存储四种花色。 定义一个数组/集合:... 阅读详情

写一个可以给斗地主玩家随机发牌的程序。a:牌可以随机发给三个玩家b:在控制台打印每个玩家的牌。c:对每个玩家手中的牌按照大小排序。

 

思路:创建一个容器存储所有的牌,再创建三个容器分别表示三个用户的牌,三个用户轮流从第一个容器中取牌,剩下三张为底牌。把大王和小王也算进去。可以封装一个类表示牌

package hcq.hw;  
  
import java.util.List;  
import java.util.TreeSet;  
  
public class Main {  
  
    public static void main(String[] args) {  
        Poker poker = new Poker();  
          
        poker.getPoker();// 得到牌  
        // 每个玩家存储牌的容器  
        TreeSet<Card> p1 = new TreeSet<>();  
        TreeSet<Card> p2 = new TreeSet<>();  
        TreeSet<Card> p3 = new TreeSet<>();  
        // 洗牌和发牌操作 返回的是底牌  
        List<Card> dealPoker = poker.dealPoker(p1, p2, p3);  
  
        // 删除牌  
        System.err.println("玩家一:" + p1);  
        System.err.println("玩家二:" + p2);  
        System.err.println("玩家三:" + p3);  
        System.out.println("底牌    :" + dealPoker);  
    }  
  
}  

public class Poker {  
  
    private LinkedList<Card> pokers = new LinkedList<>();  
    private char[] flowers = { '♦', '♣', '♥', '♠' };  
    private char[] numbers = { '3', '4', '5', '6', '7', '8', '9', '0', 'J', 'Q', 'K', 'A', '2' };  
  
    public Poker() {  
        for (int i = 0; i < numbers.length; i++) {  
            for (int j = 0; j < flowers.length; j++) {  
                pokers.add(new Card(numbers[i], flowers[j], j + i * flowers.length));  
            }  
        }  
  
        pokers.add(new Card('王', '小', 99));  
        pokers.add(new Card('王', '大', 100));  
  
    }  
  
    // 初始化牌  
    public static Poker getPoker() {  
        return new Poker();  
    }  
  
    // 打印牌  
    public void showPoker() {  
        for (Card c : pokers) {  
            System.out.println(c.toString());  
        }  
    }  
  
    // 洗牌和发牌方法  
    public List<Card> dealPoker(Collection<Card> play1, Collection<Card> play2, Collection<Card> play3) {  
        Collections.shuffle(pokers);// 洗牌  
        while (pokers.size() > 3) {  
            play1.add(pokers.removeFirst());  
            play2.add(pokers.removeFirst());  
            play3.add(pokers.removeFirst());  
        }  
        return pokers;// 返回3张底牌  
    }  
  
}

public class Card implements Comparable<Card> {  
    private char number;// 号码  
    private char flower;// 花色  
    private int grade;// 等级  
  
    public Card(char number, char flower, int grade) {  
        super();  
        this.number = number;  
        this.flower = flower;  
        this.grade = grade;  
    }  
  
    @Override  
    public String toString() {  
        return "[" + flower + number + "]";  
    }  
  
    public char getNumber() {  
        return number;  
    }  
  
    public void setNumber(char number) {  
        this.number = number;  
    }  
  
    public char getFlower() {  
        return flower;  
    }  
  
    public void setFlower(char flower) {  
        this.flower = flower;  
    }  
  
    public int getGrade() {  
        return grade;  
    }  
  
    public void setGrade(int grade) {  
        this.grade = grade;  
    }  
  
    @Override  
    public int compareTo(Card o) {  
        return o.grade - this.grade;  
    }  
  
}
转载地址:  https://blog.youkuaiyun.com/benxiaohai888/article/details/77016804

java随机发牌算法 import java.util.*; public class demo { public static void main(String[] args) { String[] kind={"红桃","梅花","黑桃","方片"}; String[] code={"3","3","4","4","5","5","6","6","7","7","8","8","9","9","10","10","j","j","Q","Q","k","k","A","A","2","2"}; String[] pai =new String[108]; int k=0; for(int i=0;i<code.length;i++) { for(int j=0;j<kind.length;j++) { pai[k]=kind[j]+code[i]; k=k+1; } } pai[104]="小王"; pai[105]="小王"; pai[106]="大王"; pai[107]="大王"; int[] wanjia1=new int[27]; int[] wanjia2=new int[27]; 。。。。。 立即下载

相关推荐

Java 简单发牌程序

简单的Java发牌小程序代码 java 发牌 扑克牌 代码 枚举类的应用

java 写一个可以给斗地主玩家随机发牌的程序。

需求:写一个可以给斗地主玩家随机发牌的程序。a:牌可以随机发给三个玩家b:在控制台打印每个玩家的牌。c:对每个玩家手中的牌按照大小排序。 牌的花色:"♠", "♥", "♣", "♦" 思路:创建一个容器存储所有的牌,再创建三个容器分别表示三个用户的牌,三个用户轮流从第一个容器中取牌,剩下三张为底牌。把大王和小王也算进去。可以封装一个类表示牌 代码:Main.javapackage hcq

侯春强的博客 8158

Java实现的发牌程序

发牌程序 1. 编写程序,项目名和类名均为PokerGame。 2. 实现功能: (1) 共有m幅扑克牌,每幅扑克牌不包括大王和小王共52张牌。 (2) 可能有n个人参与扑克游戏,2<=n<=52。 (3) 程序运行时输入扑克牌幅数m和人数n,然后所有牌分别依次分发给n个人。不能整除时,每个人的牌数可以不同,如3个人1幅牌,则第1个人18张,第2个和第3个人17张牌。 (4) 发牌完成后按花色(顺序为黑桃、红心、草花、方块)和牌面大小输出每个人得到的牌。 例如: 输入扑克牌幅数:1 输入人数:3 输出如下: 第1个人: 黑桃:K 10 5 A 红心:10 3 2 草花:K 10 8 6 3 A 方块:Q J 5 2 第2个人: ....... 第3个人: ...... 3. 实现要求: (1) 使用数组存放发牌情况。 (2) 编写不同方法完成不同功能。 提交:打包为可以执行的JAR文档,其中要包含源程序文件。

java斗地主随机发牌_Java 简单实现斗地主创建牌组与随机发牌、看牌

今天闲着无聊,用基础的随机数,写一个简单的斗地主发牌,给需要用到的同学做一个参考。package com.linlx.Individual.service;import java.util.ArrayList;import java.util.HashSet;import java.util.Iterator;import java.util.List;import java.util.Set;i...

weixin_35796523的博客 448

扑克牌随机发牌java实现

写了一个简单的发扑克牌小程序,原理很简单,就是产生不重复的随机数

自动发牌程序

初学者简单写的一个模拟扑克牌发牌的程序,简单的生成52张的发牌,还有分发每个牌,并显示花色和点数,纯属随机

JAVA之实现小项目——斗地主(随机发牌)

斗地主逻辑分析 1、准备牌: 准备牌54张,存储到一个集合中【特殊牌大王、小王】, 定义一个数组List colors = List.of( “♠”, “♥”, “♣”, “♦” ); 定义一个数组存储所有的牌13张List colors = List.of( “2”,“A”…“3” ); 2、洗牌: 随机打乱顺序再发牌 使用集合工具类 Collections 的方法 循环嵌套遍历所有的牌 shuffle(List<?> list, Random rnd):使用指定的随机源对指定列表进行置换。

qq_44796093的博客 1175

STM32F407 HAL库定时器触发ADC采集与DMA数据传输(定时器TIM+ADC+DMA)

在STM32F407系列微控制器的开发中,结合定时器、ADC(模数转换器)与DMA(直接存储器访问)控制器,能够显著提升数据采集与传输的效率。本文将指导你如何使用STM32 HAL库,通过定时器触发ADC1的单通道采集,利用DMA传输数据,最终通过串口将电压值打印出来。具体实现中,我们将读取ADC1的通道5(对应引脚PA5),并将转换得到的电压值发送到串口助手上进行显示。

jmlinux的博客 7011

用java的泛型写个小斗地主随机发牌

用java的泛型写个小斗地主随机发牌 斗地主的步骤: 1.准备牌 2.洗牌 3.发牌 4.看牌 如图: package Test; import java.util.ArrayList; import java.util.Collections; /* 斗地主综合案例: 1.准备牌 2.洗牌 3.发牌 4.看牌 */ public class DouDiZhu { public stati

xky1214的博客 306

保姆级教程:在Ubuntu 22.04上搞定PX4 V1.14 + ROS2 Humble的HITL仿真(避坑实录)

本文提供在Ubuntu 22.04上配置PX4 V1.14与ROS2 Humble的HITL仿真环境的详细教程,涵盖环境准备、固件编译、QGroundControl配置、ROS2通信设置及联调测试。特别针对版本兼容性、Gazebo插件构建和MicroDDS配置等常见问题提供避坑指南,帮助开发者高效搭建无人机仿真系统。

weixin_30836759的博客 1001

ConvLSTM时空预测实战代码详解

ConvLSTM代码复现

JaysonWong的博客 1万+

Java—斗地主的洗牌发牌系统(积小流成江海)

扑克牌经典游戏“斗地主”相信很多人都会玩,这次就用Java语言来编写一个斗地主的洗牌发牌程序,要求按照斗地主的规则完成洗牌发牌的过程。

weixin_54620350的博客 7101

STM32CubeMX——循迹传感器TCRT5000的使用

前言 人生如逆旅,我亦是行人。 ————苏轼《临江仙·送钱穆父》 一、介绍 TCRT5000描述:(带有晶体管输出的反射光学传感器) TCRT5000是一种反射式光学传感器,它包括一个红外发射器和一个3.5mm引线封装的光电晶体管,可阻挡可见光。还具有1mA 典型被测输出电流,2.5mm峰值工作距离,可应用传感与仪表,工业等行业。 TCRT5000具有紧凑的结构,其中发射光源和探测器布置在同一方向,通过使用来自物体的反射红外光束来感知物体的存在。工作波长为950毫米,探测器由光电晶体管组成

W_Oilpicture的博客 1万+

Java之棋牌游戏——编写一个斗地主洗牌发牌的程序,要求按照斗地主的规则完成洗牌发牌的过程

编写一个斗地主洗牌发牌的程序,要求按照斗地主的规则完成洗牌发牌的过程。 规则描述: 每张牌由花色和数字组成(包括JQKA),还有大王、小王。 将54张牌打乱顺序,有3位玩家参与游戏,每人轮流一次摸一张牌,剩余3张作为底牌。最后,打印每人手中的纸牌和底牌。 实现思路: 1.生成54张牌 (1)创建两个集合,一个存储花色,一个存储数字。 (2)创建一个map集合,对每一张牌设置一个编号,然后通过嵌套循环组合成52张牌, (3)最后再单独添加大王和小王。 2.洗牌:打乱排列顺序 创建一个数字集合(list),使用

hey,欢迎浏览我的博客,希望能给你提供帮助。 4712

SAP 批量修改 工艺路线 和 BOM

1、在运维的过程中经常会遇到用户需要批量更改组件,或者是批量更改数量,还是组件里面的一些标识,当处理这些批量数据处理的业务时,BOM的批量更改一个想到的就是CS20,但是CS20当BOM需要替换的时候就不是很适用。当前工作区域:选择 SAP_ITEM 对BOM行项目进行变更,工艺路线也是可以批量更改的,根据实际的业务进行选择,我这里选择的就是BOM的组件变更。5、本博客将使用新的一种方式进行BOM的批量变更,标准的事务代码:CEWB对BOM进行批量更改。3、使用LSMW的方式进行BOM的批量更改。

我小时候很黑的博客 4093

VSCode PlantUML 插件超详细教程:从安装配置到实战绘图全流程

VSCode PlantUML 插件超详细教程:从安装配置到实战绘图全流程

weixin_69237381的博客 908

Java简单实现斗地主洗牌、发牌

本文摘自:https://funyan.cn/p/403.html 需求分析 按照斗地主的规则,完成洗牌发牌的动作。 具体规则: 使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。 代码实现 import java.util.ArrayList; import java.util.Collection; import java.util.C...

renhandong321的博客 2823

即梦(Dreamina)技术浅析(六):多模态生成模型

多模态生成模型的目标是结合不同模态的数据(如文本和图像),生成新的视觉内容。其核心思想是利用文本描述引导图像或视频的生成过程,使得生成结果能够准确反映用户的意图。

m0_75253143的博客 1333

学校作业-斗地主随机发牌并保留底牌且对玩家手牌排序

学校作业-斗地主随机发牌并保留底牌且对玩家手牌排序斗地主系统效果Card类Card类主代码花色通过枚举类实现Card类完整代码:玩家类Main完整代码:其中重写了Comparator以实现自定义类的List的排序 斗地主系统 该系统是学校作业,java实现的不完善斗地主系统,仅实现了发牌功能。 效果 如下: Card类 Card类主代码 public class Card { public int cardSuit; public int cardPoints; public C

qq_36060389的博客 2072

谱方法学习笔记-下(超详细)

《谱方法学习笔记》深入介绍了傅立叶谱方法在解决偏微分方程问题中的理论和实践,提供了清晰的步骤、Matlab代码以及对一维、二维波动方程等不同问题的解析,适合对谱方法感兴趣的学习者。

图灵的猫的博客 2853

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Java实现斗地主发牌功能(含按顺序发牌和玩家牌排序显示等功能)

斗地主是全国范围内的一种桌面游戏,尽管全国各种类型,但大同小异,今天我们先来实现一下斗地主中的发牌功能,为了程序的可读性以及可拓展性,此次我们使用面向对象的方法来实现此功能。 首先,斗地主要求有扑克和玩家才能开始游戏,所以这里我们首先要创建一个扑克牌实体类和一个玩家实体类,具体代码如下: 首先是Poker类,含点数,花色和排序属性,大小王之后额外添加,这里我们必须实现一个Comparable接口,...

weixin_45416065的博客 2551

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

扑克随机发牌

简介 斗地主是大家都熟悉的一个游戏,其原理也很简单,就是将51扑克牌平均分到三个人手中,然后将剩下的三张牌分配到地主手中,其代码就根据这个原理进而实现发牌功能。 玩家类 给玩家定义一个序号,姓名,再定义一个地主属性,代码如下: import java.util.ArrayList; public class Player { private int id...

Huaazai的博客 2911

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java语言实现斗地主洗牌发牌程序

任务 编写一个斗地主洗牌发牌的程序,要求按照斗地主的规则完成洗牌发牌的过程。 总共有54张牌,牌面由和数字(包括J,Q,K,A字母)组成,花色有 "♠","♥","♦","♣"这4种,分别表示黑桃、红桃、方块和梅花,小☺表示小王,大☻表示大王。将这54张牌打乱顺序,共有3位玩家参与游戏,每人轮流一次摸一张牌,剩下3张留为底牌。程序结束,打印每人手中的纸牌和底牌。 思路 (1)要实现纸牌程序,首先需要完成纸牌的组装。牌面是由花色和数字(包括J,Q,K,A字母)两部分组成,可以创建两个ArrayList集

weixin_42563549的博客 1915

【详解】斗地主随机发牌项目

使用JAVA实现斗地主的洗牌功能,详细解释了个个功能代码的实现,利用ArrayList(JAVA自带)的功能来实现,巩固知识。

2301_80035594的博客 2231

Java实现模拟斗地主洗牌发牌

按照斗地主的规则,完成洗牌发牌看牌的动作。最终结果预计为: 具体规则: 1.组装54张扑克牌 2.将54张扑克牌顺序打乱 3.三个玩家参与游戏,三人交替摸牌,每人17张,最后三张做底牌 4.查看三人手中各自的牌(按牌的大小排序)、底牌 实现代码步骤: 1.首先,要修改java文件编码,由GBK修改为UTF-8,因为默认的字符编码GBK没有梅花、方片...

hepei_i的博客 1万+

用Java来写一个模拟斗地主发牌的小程序

一副扑克有54张牌:大小王+4*13,接下来我们来模拟一下斗地主的发牌过程 首先,我们需要买牌,新买来的牌都是按顺序摆放的,因此下一步是洗牌,最后就是发牌了,不过发牌的时候要注意还要在最后留三张底牌。 主要使用的类有 ArrayList:用来存储扑克,Collections用来洗牌。 import java.util.ArrayList; import java.util.Collecti...

七宝.博客 5450
上一篇: Java并发--线程计数器
下一篇: .gitignore设置注意事项
yayaqwl
博客等级 码龄13年 28粉丝 103原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值