扑克牌炸金花

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.mzph.cn/news/233728.shtml

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

相关文章

车载软件易受攻击,如何规避嵌入式软件漏洞

在汽车开发中&#xff0c;汽车网络安全至关重要&#xff0c;特别是现在汽车软件变得日益互联。阅读本文&#xff0c;了解如何预防汽车网络安全漏洞。 为什么汽车网络安全很重要&#xff1f; 如今&#xff0c;互联汽车的解决方案远不只有简单的从A点到B点。通过实时数据共享、应…

RK3399平台开发系列讲解(内核入门篇)网络协议的分层

🚀返回专栏总目录 文章目录 一、应用层二、传输层三、网络层四、数据链路层(Data Link Layer)五、物理层沉淀、分享、成长,让自己和他人都能有所收获!😄 📢对于多数的应用和用户而言,使用互联网的一个基本要求就是数据可以无损地到达。用户通过应用进行网络通信࿰

【数组Array】力扣-1109 航班预订统计

目录 题目描述 解题过程 题目描述 这里有 n 个航班&#xff0c;它们分别从 1 到 n 进行编号。 有一份航班预订表 bookings &#xff0c;表中第 i 条预订记录 bookings[i] [firsti, lasti, seatsi] 意味着在从 firsti 到 lasti &#xff08;包含 firsti 和 lasti &#xff…

从 MySQL 到 DolphinDB,Debezium + Kafka 数据同步实战

Debezium 是一个开源的分布式平台&#xff0c;用于实时捕获和发布数据库更改事件。它可以将关系型数据库&#xff08;如 MySQL、PostgreSQL、Oracle 等&#xff09;的变更事件转化为可观察的流数据&#xff0c;以供其他应用程序实时消费和处理。本文中我们将采用 Debezium 与 K…

Spring Security 6.x 系列(11)—— Form表单认证流程

一、前言 在本系列文章中介绍了过滤器和相关认证组件&#xff0c;对部分源码也进行详细分析。 本章主要学习 Spring Security 中通过 HTML 表单提供用户名和密码的认证流程。 二、配置表单登录 默认情况下&#xff0c;Spring Security 表单登录处于启用状态。 但是&#xff…

Leetcode—454.四数相加II【中等】

2023每日刷题&#xff08;六十四&#xff09; Leetcode—454.四数相加II 实现代码 class Solution { public:int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) {unordered_map&l…

雷电4.0.50模拟器Android7.1.2安装xposed框架

官方论坛&#xff1a;https://xdaforums.com/t/official-xposed-for-lollipop-marshmallow-nougat-oreo-v90-beta3-2018-01-29.3034811/ Xposed 有分支 [EdXposed 和 LSPosed] 。 Edxposed框架现在支持android 8.0 - android 9.0 &#xff0c;如果是android 7.0或更早的版本&…

2023最新最全【Kali Linux】入门教程【从零基础入门到精通】附安装包

作为一名从事渗透测试的人员&#xff0c;不懂Kali Linux的话&#xff0c;就out了。它预装了数百种享誉盛名的渗透工具&#xff0c;使你可以更轻松地测试、破解以及进行与数字取证相关的任何其他工作。 今天给大家分享一套Kali Linux资料合集&#xff0c;包括12份Kali Linux渗透…

LED恒流调节器FP7126:引领LED照明和调光的新时代(调光电源、汽车大灯)

目录 一、FP7126概述 二、FP7126功能 三、应用领域 随着科技的进步&#xff0c;LED照明成为了当代照明产业的主力军。而在LED照明的核心技术中&#xff0c;恒流调节器是不可或缺的组成部分。今天&#xff0c;我将为大家介绍一款重要的恒流调节器FP7126&#xff0c;适用于LED…

从 Android 手机恢复删除的数据的10个有效工具

您是否曾经在 Android 手机上遇到过数据丢失的情况&#xff0c;即您拍摄的瞬间或其他数据意外丢失&#xff1f; 就我而言&#xff0c;我多次遇到过此类数据丢失的情况&#xff0c;相信我&#xff0c;没有什么比从手机中丢失所有重要数据更严重的了。这就像一场噩梦&#xff0c…

第二十一章 : Spring Boot 集成定时任务(一)

第二十一章 &#xff1a; Spring Boot 集成定时任务&#xff08;一&#xff09; 前言 本章知识点&#xff1a; 介绍使用Spring Boot内置的Scheduled注解来实现定时任务-单线程和多线程&#xff1b;以及介绍Quartz定时任务调度框架&#xff1a;简单定时调度器&#xff08;Simp…

Dubbo线程池

前言 Dubbo使用Netty作为网络调用框架&#xff0c;Netty是一个Reactor模型的框架&#xff0c;线程模型分为boss线程池和worker线程池&#xff0c;boss线程池负责监听、分配事件&#xff0c;worker线程池负责处理事件&#xff0c;简单说就是boss线程池负责hold请求&#xff0c;并…

【算法】选择排序

1、排序逻辑 选择排序逻辑&#xff1a;对数组中的数据&#xff0c;先假定一个最小的数据下标&#xff0c;然后进行循环寻找到最小数据的下标&#xff0c;放在第一层循环的最初始位置 例&#xff1a; 从0 ~ N-1 寻找到最小值&#xff0c;放在0位置 从1~N-1 寻找到最小值 &…

自定义IDEA代码补全插件

目标&#xff1a; 对于项目中的静态方法&#xff08;主要是各种工具类里的静态方法&#xff09;&#xff0c;可以在输入方法名时直接提示相关的静态方法&#xff0c;选中后自动补全代码&#xff0c;并导入静态类。 设计&#xff1a; 初步构想&#xff0c;用户选择要导入的文…

SearchWP WordPress高级网站内容搜索插件

点击阅读SearchWP WordPress高级网站内容搜索插件原文 SearchWP WordPress高级网站内容搜索插件是一个非常强大的工具&#xff0c;可以显着增强您网站的搜索功能。通过向网站访问者提供高度相关和精确的搜索结果&#xff0c;它可以有效地简化他们的搜索过程&#xff0c;促进发…

CentOS 8离线安装telnet

下载telnet rpm安装包&#xff0c;可从https://www.rpmfind.net/linux/rpm2html/search.php?querytelnet&submitSearch…&systemcentos&arch 根据自己的操作系统下载对应的包&#xff0c;这里以CentOS8为例,分别下载如下的rtp包 xinetd-2.3.15-24.el8.x86_64.rpm…

设计师必备的Figma可视化组件库资产已更新至 7.0版本

在当今数字化时代&#xff0c;数据量呈爆炸式增长&#xff0c;大屏可视化的主要程度越来越高&#xff0c;而大屏背后的设计师们面对的挑战也越来越多&#xff0c;其中之一就是大屏可视化设计项目中的重复性元素设计。这一过程不仅耗费时间&#xff0c;还明显降低了设计团队的生…

Qt6.5类库详解:QLineEdit

哈喽大家好&#xff0c;我是20YC小二&#xff01;欢迎关注(20YC编程)&#xff0c;现在有免费《C程序员》视频教程下载哦&#xff01; ~下面开始今天的分享内容~ 1. QLineEdit介绍 QLineEdit是一个单行文本编辑器&#xff0c;允许用户输入和编辑纯文本。它提供了许多有用的编辑…

SSH的交互原理(wireshark的分析)

SSH的交换原理&#xff08;wireshark篇&#xff09; 首先要想了解ssh的交换原理&#xff0c;必须要先了解他的加密方式&#xff0c;他的加密方式是对称加密&#xff0c;和公钥加密。什么意思呢&#xff1f; 首先我们向服务器发送一个请求&#xff0c;然后服务器会发给我们他的…

GitBook安装及使用——使用 Markdown 创建你自己的博客网站和电子书

目录 前言一、依赖环境二、gitbook安装使用1.安装 gitbook-cli2.安装 gitbook3.Gitbook初始化4.创建你的文章5.修改 SUMMARY.md 和 README.md6.编译生成静态网页7.运行以便在浏览器预览8.运行效果 前言 GitBook是一个命令行工具&#xff0c;用于使用 Markdown 构建漂亮的博客网…