当前位置: 首页 > news >正文

简单的洗牌算法

目录

前言

问题

代码展现及分析

 poker类

game类

 Text类


前言

洗牌算法为ArrayList具体使用的典例,可以很好的让我们快速熟系ArrayList的用法。如果你对ArrayList还不太了解除,推荐先看本博主的ArrayList的详解。

ArrayList的详解_WHabcwu的博客-CSDN博客


问题

我们需要一副完整的扑克牌,除去大小王一共52张牌,参与游戏的玩家共3名,在洗牌后分发每名玩家5张扑克牌。


代码展现及分析

面向对象思想解决问题主要分为这3步:

  • 找出其中的所有的对象
  • 实现所有的对象
  • 完成对象之间的交互

我们可以想到这几个类:扑克牌,游戏的操作类, 测试类。

 poker类

描述扑克牌的属性为花色和数字,我们对其进行封装,再重写 toString方法

public class poker {private String suit;private String rank;public poker(String suit, String rank) {this.suit = suit;this.rank = rank;}public String getSuit() {return suit;}public void setSuit(String suit) {this.suit = suit;}public String getRank() {return rank;}public void setRank(String rank) {this.rank = rank;}@Overridepublic String toString() {return "{" + suit + rank + "}";}
}

game类
 

import java.util.ArrayList;
import java.util.List;
import java.util.Random;public class game {private static final String[] SUITS={"♥","♠","♣","♦"};public List<poker> buypoker(){List<poker> pokers=new ArrayList<>();for (int i = 0; i < SUITS.length; i++) {for (int j = 1; j <=13 ; j++) {poker poker = new poker(SUITS[i], j);pokers.add(poker);}}return pokers;}public List<poker> suaffle(List<poker> pokers){Random random = new Random();for (int i = pokers.size(); i >0; i--) {int indx=random.nextInt(i);poker tmp=pokers.get(i);pokers.set(i,pokers.get(indx));pokers.set(indx,tmp);}return pokers;}public void grant(List<poker> pokers){List<poker> hand1=new ArrayList<>();List<poker> hand2=new ArrayList<>();List<poker> hand3=new ArrayList<>();List<List<poker>> hand=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++){poker card=pokers.remove(0);hand.get(j).add(card);}}System.out.println("第一个人的牌:");System.out.println(hand1);System.out.println("---------------------------");System.out.println("第二个人的牌:");System.out.println(hand2);System.out.println("---------------------------");System.out.println("第三个人的牌:");System.out.println(hand3);System.out.println("---------------------------");System.out.println("剩下的牌");System.out.println(pokers);}
}
buypoker方法的解析:

suaffle方法的解析:

 

grant方法的解析:

 Text类

public class Text {public static void main(String[] args) {game game = new game();List<poker> pokers=game.buypoker();System.out.println("牌到手了:");System.out.println(pokers);System.out.println("---------------------------");System.out.println("洗牌:");pokers=game.suaffle(pokers);System.out.println(pokers);System.out.println("---------------------------");game.grant(pokers);}
}

以上为我个人的小分享,如有问题,欢迎讨论!!! 

都看到这了,不如关注一下,给个免费的赞 

 

http://www.lryc.cn/news/128414.html

相关文章:

  • vscode用ssh远程连接linux
  • chapter 3 Free electrons in solid - 3.2 量子自由电子理论对一些现象的解释
  • vue实现打印功能
  • golang—面试题大全
  • Spring、Springboot、SpringCloud--包含的知识点大全
  • MongoDB:数据库初步应用
  • C#之枚举中的按位与()按位或(|)。
  • Blazor前后端框架Known-V1.2.12
  • bug记录:微信小程序 给button使用all: initial重置样式
  • 【计算机视觉|生成对抗】带条件的对抗网络进行图像到图像的转换(pix2pix)
  • [时序数据库]:InfluxDB进阶
  • uniapp编写微信小程序遇到的坑总结
  • Binary operator ‘*‘ cannot be applied to two ‘Double?‘ operands
  • C#如何打包EXE程序生成setup安装文件
  • 【python实现向日葵控制软件功能】手机远程控制电脑
  • 手机系统录屏怎么录?有什么其他录制方法和注意事项?
  • 记录一个编译TubeTK时的报错:at_check问题
  • k8s v1.27.4二进制部署记录
  • C# API 文档注释规范
  • 分类预测 | Matlab实现基于TSOA-CNN-GRU-Attention的数据分类预测
  • 《深度剖析K8s》学习笔记
  • 神经网络基础-神经网络补充概念-49-adam优化算法
  • Java:正则表达式书写规则及相关案例:检验QQ号码,校验手机号码,邮箱格式,当前时间
  • 图数据库_Neo4j_Centos7.9安装Neo4j社区版3.5.4_基于jdk1.8---Neo4j图数据库工作笔记0011
  • 使用Rust编写的一款使用遗传算法、神经网络、WASM技术的模拟生物进化的程序
  • UE4/UE5 “无法双击打开.uproject 点击无反应“解决
  • 【前端】深入理解CSS定位
  • 【问题】分布式事务的场景下如何保证读写分离的数据一致性
  • 常见的Web安全漏洞有哪些,Web安全漏洞常用测试方法介绍
  • 随机微分方程