扑克牌炸金花

news2024/12/29 12:54:43

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.coloradmin.cn/o/1323575.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于ssm生鲜配送系统设计及实现论文

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对生鲜配送信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差…

换热站数字孪生 | 图扑智慧供热 3D 可视化

换热站作为供热系统不可或缺的一部分&#xff0c;其能源消耗对城市环保至关重要。在双碳目标下&#xff0c;供热企业可通过搭建智慧供热系统&#xff0c;实现供热方式的低碳、高效、智能化&#xff0c;从而减少碳排放和能源浪费。通过应用物联网、大数据等高新技术&#xff0c;…

Java多线程技术三:锁的使用——使用ReentrantReadWriteLock类

1 概述 ReentrantLock类具有完全互斥排它的特点&#xff0c;同一时间只有一个线程在执行ReentrantLock.lock()方法后面的任务&#xff0c;这样做保证了同时写实例变量的线程安全性&#xff0c;但 效率是非常低下的。在JDK提供了一种读写锁ReentrantReadWriteLock类&#xff0c;…

Android开发中报错总结之一

在我们开发中经常会遇到报错&#xff0c;今天主要是记录一下&#xff0c;我在开发中遇到的问题&#xff1a; 问题一&#xff1a;material-1.5.0-alpha03\res\values-v31\values-v31.xml:3:5-94: AAPT: error: resource android:color/system_neutral1_1000 not found 解决方案…

基于“Galera+MariaDB”搭建多主数据库集群的实例

1、什么是多主数据库集群 多主数据库集群是一种数据库集群架构&#xff0c;每个节点都可以接收写入操作和读取操作&#xff0c;并且通过心跳机制同步数据&#xff0c;保证数据一致性和高可用性。因多主数据库集群每个节点都可以承担读写操作&#xff0c;因此它可以充分利用各个…

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

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

数据可视化---柱状图

类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统计学检验箱…

PHPStorm一站式配置

phpstorm安装好之后&#xff0c;先别急着编码。工欲善其事&#xff0c;必先利其器&#xff0c;配置好下面这些之后让编码事半功倍。 主题 Appearance & Behavior -> Appearance -> Theme 选中 [Light with Light Header] 亮色较为护眼 关闭更新 Appearance & …

在本地通过 k8s 部署一个 nginx 镜像

目标 目标:通过 deployment 启动一个 nginx,并且通过浏览器访问。 目的,熟悉并学习一下 k8s 的一些特性,毕竟看文档和实操是两码事。 本地部署 k8s 简单点,也不用 minikube 和 kubeadmin,直接通过 docker desktop 部署 k8s。 下载 docker desktop 下载完成后会自动…

Docker的安装及使用

目录 安装Docker 安装yum工具 更新本地镜像源 安装docker 启动docker 关闭防火墙 docker启动命令 配置镜像加速 docker的使用 拉取nginx 查看本地镜像 把镜像文件nginx导出成tar文件 查看是否导出成功 ​编辑 删除本地镜像nginx:latest 导入镜像文件nginx 拉取…

springCould中的Eureka-从小白开始【2】

目录 1.什么是Eureka ❤️❤️❤️ 2. 组件❤️❤️❤️ 3.单机Eureka配置❤️❤️❤️ 4.服务8001服务入住eureka ❤️❤️❤️ 5.消费端80入住到eureka ❤️❤️❤️ 6.集群Eureka配置 ❤️❤️❤️ 7.将Client发布到eureka集群上 ❤️❤️❤️ 8.服务端8002集群搭建…

OpenHarmony 启动流程优化

目前rk3568的开机时间有21s&#xff0c;统计的是关机后从按下 power 按键到显示锁屏的时间&#xff0c;当对openharmony的系统进行了裁剪子系统&#xff0c;系统app&#xff0c;禁用部分服务后发现开机时间仅仅提高到了20.94s 优化微乎其微。在对init进程的log进行分析并解决其…

uniapp 导入ucharts图表插件 H5项目, 使用echarts eopts配置

先下载ucharts H5示例源码&#xff1a; uCharts: 高性能跨平台图表库&#xff0c;支持H5、APP、小程序&#xff08;微信小程序、支付宝小程序、钉钉小程序、百度小程序、头条小程序、QQ小程序、快手小程序、360小程序&#xff09;、Vue、Taro等更多支持canvas的框架平台&#…

MyBatis的运行原理!!!

MyBatis框架在操作数据库时&#xff0c;大体经过了8个步骤&#xff1a; 1.读取 MyBatis 配置文件&#xff1a;mybatis-config.xml 为 MyBatis 的全局配置文件&#xff0c;配置了 MyBatis 的运行环境等信息&#xff0c;例如数据库连接信息。 2.加载映射文件&#xff1a;映射文…

如何快速优化大数据量订单表

场景 本篇分享以前在广州一家互联网公司工作时遇到的状况及解决方案,这家公司有一个项目是SOA的架构,这个架构那几年是很流行的,哪怕是现在依然认为这个理念在当时比较先进。 当时的项目背景大概是这样,这家公司用的是某软提供的方案,项目已经运行3年多,整体稳定。 数据…

Pycharm中将画出的图以弹窗方式显示

Pycharm中将画出的图以弹窗方式显示 操作方法&#xff1a; File→ Setting → Tools → 取消Python Scientific 即可。 如下图所示。 然后就搞定了&#xff0c;结果如下。

Ansible常用模块详解(附各模块应用实例和Ansible环境安装部署)

目录 一、ansible概述 1、简介 2、Ansible主要功能&#xff1a; 3、Ansible的另一个特点&#xff1a;所有模块都是幂等性 4、Ansible的优点&#xff1a; 5、Ansible的四大组件&#xff1a; 二、ansible环境部署&#xff1a; 1、环境&#xff1a; 2、安装ansible&#…

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

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

学习——html基础

什么是HTML Hyper Text Markup Language (超文本标记语言) 标记又俗称标签(tag)&#xff0c;一般格式&#xff1a; 如 <h1></h1>标签里还可以有属性(Attribute)&#xff1a; <tagName Atrribute “value" /> 如 <meta charset"utf-8"…

长短期记忆(LSTM)神经网络-多输入回归预测

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