的洗牌算法
目录
前言
洗牌算法为ArrayList具体使用的典例,可以很好的让我们快速熟系ArrayList的用法。如果你对ArrayList还不太了解除,推荐先看本博主的ArrayList的详解。
问题
我们需要一副完整的扑克牌,除去大小王一共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;
-
}
-
-
-
public 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);
-
}
-
}
以上为我个人的小分享,如有问题,欢迎讨论!!!
都看到这了,不如关注一下,给个免费的赞
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhibbajh
系列文章
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
微信运动停用后别人还能看到步数吗
PHP中文网 07-22 -
excel打印预览压线压字怎么办
PHP中文网 06-22