扑克牌炸金花

1.创建类

使用权限修饰符定义所需要参数,使用this关键字生成方法

public class gamejinhua {
private String suit;//花色

private int rank;//数字

public gamejinhua(String suit, int rank) {
this.suit = suit;

this.rank = rank;

}

2.使用快捷键生成get和set方法,作用是调取方法

public gamejinhua() {
// TODO Auto-generated constructor stub

}

public String getSuit() {
return suit;

}

public void setSuit(String suit) {
this.suit = suit;

}

public int getRank() {
return rank;

}

public void setRank(int rank) {
this.rank = rank;

}

3.传入花色

@Override

public String toString() {
return "{ "+suit+" "+rank+"}"; //重写toString方法,调用时产生花色与牌号

}

private static final String[] suits = {"♥","♣","♦","♠"};

4.创建list集合

public List<gamejinhua> takePoker(){
List<gamejinhua> pokers = new ArrayList<>();

for (int i = 0; i < 4; i++) { //外循环为4种花色

for (int j = 1; j <= 13; j++) { //内循环为A~K13张牌

gamejinhua poker = new gamejinhua(suits[i], j);

pokers.add(poker); //通过循环产生52张牌并放入集合中

}

}

return pokers;

5.使用random随机数生成打乱顺序

public void shuffle(List<gamejinhua> pokers){
for (int i = pokers.size()-1; i > 0; i--) {
Random random = new Random(); //用random随机函数打乱牌序

int index = random.nextInt(i);

swap(pokers,i,index);

}

}

6.调用方法

private void swap(List<gamejinhua> pokers, int i, int j){
gamejinhua tmp = pokers.get(i);

pokers.set(i,pokers.get(j)); //调用时,产生随机的花色和数字

pokers.set(j,tmp);

}

7.创建人的对象摸牌规则

public List<List<gamejinhua>> game(List<gamejinhua> pokers){
List<List<gamejinhua>> hand = new ArrayList<>();

List<gamejinhua> hand1 = new ArrayList<>();

List<gamejinhua> hand2 = new ArrayList<>();

List<gamejinhua> 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++) {
gamejinhua removePoker = pokers.remove(0); //循环控制三个人轮流摸牌,一人摸五张,一共15张

hand.get(j).add(removePoker);

}

}

return hand;

}

8.创建主函数并运行

public static void main(String[] args) {
gamejinhua game = new gamejinhua();

List<gamejinhua> pokers = game.takePoker();

System.out.println(pokers);

//洗牌

game.shuffle(pokers);

System.out.println("洗牌:");

System.out.println(pokers);

//揭牌

List<List<gamejinhua>> hand = game.game(pokers);

System.out.println("揭牌:");

for (int i = 0; i < hand.size(); i++) {
System.out.println("第 "+(i+1)+"个人的牌:"+hand.get(i));

}

System.out.println("剩下的牌");

System.out.println(pokers);

}

}

package twlveth;
 
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
 
public class gamejinhua {
    private String suit;//花色
    private int rank;//数字
 
    public gamejinhua(String suit, int rank) {
        this.suit = suit;
        this.rank = rank;
    }
 
   

package twlveth;
 
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
 
public class gamejinhua {
    private String suit;//花色
    private int rank;//数字
 
    public gamejinhua(String suit, int rank) {
        this.suit = suit;
        this.rank = rank;
    }
 
    public gamejinhua() {
        // TODO Auto-generated constructor stub
    }
 
    public String getSuit() {
        return suit;
    }
 
    public void setSuit(String suit) {
        this.suit = suit;
    }
 
    public int getRank() {
        return rank;
    }
 
    public void setRank(int rank) {
        this.rank = rank;
    }
 
    @Override
    public String toString() {
        return "{ "+suit+" "+rank+"}";        //重写toString方法,调用时产生花色与牌号
    }
    private static final String[] suits = {"♥","♣","♦","♠"};
    
    public List<gamejinhua> takePoker(){
        List<gamejinhua> pokers = new ArrayList<>();
        for (int i = 0; i < 4; i++) {                    //外循环为4种花色
            for (int j = 1; j <= 13; j++) {                //内循环为A~K13张牌
                gamejinhua poker = new gamejinhua(suits[i], j);
                pokers.add(poker);                        //通过循环产生52张牌并放入集合中
            }
        }
        return pokers;
    }
    public void shuffle(List<gamejinhua> pokers){
        for (int i = pokers.size()-1; i > 0; i--) {
            Random random = new Random();                //用random随机函数打乱牌序
            int index = random.nextInt(i);
            swap(pokers,i,index);
        }
    }
 
    private void swap(List<gamejinhua> pokers, int i, int j){
        gamejinhua tmp = pokers.get(i);
        pokers.set(i,pokers.get(j));                    //调用时,产生随机的花色和数字
        pokers.set(j,tmp);
    }
    public List<List<gamejinhua>> game(List<gamejinhua> pokers){
        List<List<gamejinhua>> hand = new ArrayList<>();
        List<gamejinhua> hand1 = new ArrayList<>();
        List<gamejinhua> hand2 = new ArrayList<>();
        List<gamejinhua> 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++) {
                gamejinhua removePoker = pokers.remove(0);                //循环控制三个人轮流摸牌,一人摸五张,一共15张
                hand.get(j).add(removePoker);
            }
        }
        return hand;
        
    }
    public static void main(String[] args) {
        gamejinhua game = new gamejinhua();
        List<gamejinhua> pokers = game.takePoker();
        System.out.println(pokers);
 
        //洗牌
        game.shuffle(pokers);
        System.out.println("洗牌:");
        System.out.println(pokers);
 
        //揭牌
        List<List<gamejinhua>> hand = game.game(pokers);
        System.out.println("揭牌:");
        for (int i = 0; i < hand.size(); i++) {
            System.out.println("第 "+(i+1)+"个人的牌:"+hand.get(i));
        }
        System.out.println("剩下的牌");
        System.out.println(pokers);
    }
    
}
 

50543891cebb411b9320dbe6c6c8e042.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/257968.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

静态库和动态库

静态库 编译&#xff08;链接&#xff09;时把静态库中相关代码复制到可执行文件中&#xff0c;程序中已包含代码&#xff0c;运行时不再需要静态库 占用更多磁盘和内存空间&#xff0c;但程序运行时无需加载库&#xff0c;运行速度快 升级时&#xff0c;程序需要重新编译链…

WPF仿网易云搭建笔记(7):HandyControl重构

文章目录 专栏和Gitee仓库前言相关文章 新建项目项目环境项目结构 代码结果结尾 专栏和Gitee仓库 WPF仿网易云 Gitee仓库 WPF仿网易云 CSDN博客专栏 前言 最近我发现Material Design UI的功能比较简单&#xff0c;想实现一些比较简单的功能&#xff0c;比如消息提示&#xff0…

电脑风扇控制软件Macs Fan Control mac支持多个型号

Macs Fan Control mac是一款专门为 Mac 用户设计的软件&#xff0c;它可以帮助用户控制和监控 Mac 设备的风扇速度和温度。这款软件允许用户手动调整风扇速度&#xff0c;以提高设备的散热效果&#xff0c;减少过热造成的风险。 Macs Fan Control 可以在菜单栏上显示当前系统温…

HTS318 红外热释传感器处理芯片 PIR控制芯片 用于红外感应灯、走廊灯等

HTS318是一颗高度集成的用于热释电红外传感器 (PIR) 的控制芯片。HTS318单片集成了热释电被动红外移动探测的所有必需组件模拟前端可以直接与模拟型PIR探测器使用电容连接&#xff0c;内置3V LDO&#xff0c;给PIR探测器供电。内置高精度模数转换器&#xff0c;可将探测器信号转…

漏刻有时数据可视化Echarts组件开发(45)机场流程导航线和指示点的开发记录

路径线 ECharts中的路径线是指用于连接起点和终点的线。在ECharts中&#xff0c;路径图主要用于带有起点和终点信息的线数据的绘制&#xff0c;如地图上的航班、路线等。路径线可以用于展示数据点之间的连接关系&#xff0c;以及数据点之间的相对位置。 {//路径图name: 路线图…

宣布推出 ML.NET 3.0

作者&#xff1a;Jeff Handley 排版&#xff1a;Alan Wang ML.NET 是面向 .NET 开发人员的开源、跨平台的机器学习框架&#xff0c;可将自定义机器学习模型集成到 .NET 应用程序中。ML.NET 3.0 版本现已发布&#xff0c;其中包含大量新功能和增强功能&#xff01; 此版本中的深…

智能优化算法应用:基于学校优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于学校优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于学校优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.学校优化算法4.实验参数设定5.算法结果6.…

Jmeter实现性能测试--高并发

高并发场景 高并发场景是指系统在相对短时间内面对大量用户同时访问的情况。这种场景常见于在线服务、电商平台、社交网络、金融交易等需要处理大量并发请求的系统。以下是一些典型的高并发场景&#xff1a; 在线购物活动&#xff1a; 在特定促销或购物节期间&#xff0c;电商…

飞天使-k8s-知识点1-kubernetes架构简述

文章目录 名词功能要点 k8s核心要素CNCF 云原生框架简介k8s组建介绍 名词 CI 持续集成, 自动化构建和测试&#xff1a;通过使用自动化构建工具和自动化测试套件&#xff0c;持续集成可以帮助开发人员自动构建和测试他们的代码。这样可以快速检测到潜在的问题&#xff0c;并及早…

STM32 RTC总结

RTC入侵检测Tamper RTC Tamper功能就是&#xff0c;MCU在Tamper管脚检测到一个指定边缘信号&#xff08;可配置&#xff09;时&#xff0c;就主动清除所有备份寄存器数据的功能。如果需要&#xff0c;可以使能Tamper中断&#xff0c;在每次检测到Tamper信号后执行指定代码。 在…

多线程面试题

文章目录 1. 如何停止正在运行的线程2. 请你谈谈JMM&#xff08;java内存模型&#xff09;3. AQS4. ReentrantLock实现原理5. 死锁怎么检测 1. 如何停止正在运行的线程 设置一个共享变量作为线程退出的标记&#xff0c;当这个标记不满足时while循环&#xff0c;线程一直运行&a…

做题总结 242. 有效的字母异位词

242. 有效的字母异位词 我的答案思路优化出错的知识点&#xff08;Java&#xff09;1、String相关&#xff08;1&#xff09;String转换成char数组&#xff08;2&#xff09;String不能直接用下标访问 2、HashMap 相关&#xff08;1&#xff09;初始化&#xff08;2&#xff09…

向本地maven中加载依赖

1、现在maven官网仓库找到相应依赖 Maven Repository: Search/Browse/Explore (mvnrepository.com) 2、下载相应jar包 3、使用maven命令在jar所在文件加内cmd运行 注意修改参数 -DgroupId&#xff1a;表示jar对应的groupId <groupId>io.confluent</groupId>…

HarmonyOS应用开发-手写板(二)

在前一篇手写板的文章中&#xff08;HarmonyOS应用开发-手写板-CSDN博客&#xff09;&#xff0c;我们通过使用Path实现了一个基本的手写板&#xff0c;但遗憾的是&#xff0c;无法保存所绘制的图像。在本文中&#xff0c;我们将采用canvas和Path2D来重新构建手写板应用。依然只…

ArcGIS Pro中去除黑边方法汇总

在有些时候&#xff08;比如镶嵌栅格后&#xff09;&#xff0c;我们获取到的影像数据可能会有黑边&#xff0c;这里为大家汇总一下在ArcGIS Pro中去除黑边的方法&#xff0c;希望能对你有所帮助。 数据来源 本教程所使用的数据是从水经微图中下载的影像数据&#xff0c;除了…

YOLOv8改进 | 主干篇 | 轻量级网络ShuffleNetV1(附代码+修改教程)

一、本文内容 本文给大家带来的改进内容是ShuffleNetV1&#xff0c;这是一种为移动设备设计的高效CNN架构。它通过使用点群卷积和通道混洗等操作&#xff0c;减少了计算成本&#xff0c;同时保持了准确性&#xff0c;通过这些技术&#xff0c;ShuffleNet在降低计算复杂度的同时…

1.【分布式】分布式事务详解

分布式事务 1.分布式事务是什么&#xff1f;数据库事务 2.分布式事务产生的原因&#xff1f;存储层拆分服务层拆分 3.分布式事务解决方案4.分布式事务有哪些开源组件SeateTCC 分布式服务组件基于消息补偿的最终一致性 5.两阶段提交&#xff0c;三阶段协议详解二阶段提交协议三阶…

长短期记忆(LSTM)神经网络-多输入分类

目录 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 亮点与优势&#xff1a; 二、实际运行效果&#xff1a; 三、部分程序&#xff1a; 四、完整程序下载&#xff1a; 一、程序及算法内容介绍&#xff1a; 基本内容&#xff1a; 本代码基于Matlab平台编译&am…

SpringCloud源码探析(十二)-基于SpringBoot开发自定义中间件

1.概述 中间件是一种介于操作系统和应用软件之间&#xff0c;为应用软件提供服务功能的软件&#xff0c;按功能划分有消息中间件&#xff08;Kafka、RocketMQ&#xff09;、通信中间件&#xff08;RPC通信中间件&#xff0c;dubbo等&#xff09;&#xff0c;应用服务器等。中间…

k8s-ingress特性 9

TLS加密 创建证书 测试访问 auth认证 创建认证文件 rewrite重定向 进入域名时&#xff0c;会自动重定向到hostname.html 示例&#xff1a; 测试 版本的升级迭代&#xff0c;之前利用控制器进行滚动更新&#xff0c;在升级过程中无法做到快速回滚 更加平滑的升级&#xff1…
最新文章