<>思路:

在实现之前,先要想好步骤,思路清晰才不会出错。
要实现一副扑克牌,首先要创建这个类,然后有一副扑克牌,之后进行洗牌,抓牌。
1.定义一个Card类
2.实现这个游戏:
①构造一副扑克牌(52张)这里不包含大小王
②洗牌
③三个人每个人抓五张牌

<>代码实现及其细节:

<>1.定义一个Card类

一张牌中包括两个属性:花色和牌面值
public class MyCard { public char suit; //花色 public String rank; //牌面值 public
MyCard(String rank, char suit) { this.suit = suit; this.rank = rank; } public
StringtoString(){ return String.format("[%s %c]",rank,suit); } }
<>2.实现这个游戏

写一个CardGame来实现这个扑克牌游戏,其中分为很多细小的分支。
1.买一副牌
前面写了Card来表示一张牌,这里我们买一副牌,就是52个Card放在一起,就组成一个List,所以这里一副牌的类型为List<Card>。
public List<MyCard> buyDeck(){ //首先将花色和牌面值陈列出来 //因为牌面值有A,J,Q,K,这里采用的是字符串数组
//也可以将A,J,Q,K单独处理,剩下的写作一个整型数组 char[] suits={'♦','♥','♠','♣'}; String[] ranks={
"A","2","3","4","5","6","7","8","9","10","J","Q","K"}; //创建52张牌 List<MyCard>
deck=new ArrayList<>(52); for(int i=0;i<4;i++){ for(int j=0;j<13;j++){ deck.add(
newMyCard(ranks[j],suits[i])); } } return deck; }
2.洗牌:
使用随机数
//写一个交换函数方便洗牌方法实现 public void swap(List<MyCard> deck,int i,int j){ MyCard temp=
deck.get(i); deck.set(i,deck.get(j)); deck.set(j,temp); } public void shuffle(
List<MyCard> deck){ //设置随机数 Random r=new Random();//实例化一个Random类 for(int j=deck.
size()-1;j>0;j--){ int i=r.nextInt(j); //随机产生一个大于等于0小于51的整数 swap(deck,i,j);
//将生成的0-51的随机数与与最后一个数交换实现洗牌 } }
3.主函数:

在这里实现发牌,每人五张牌,三个人轮流抓,将三个人放在一个List当中,三个人中的牌信息为List<Card>,所以hands的类型为List<List<Card>>.
public static void main(String[] args){ CardGame cg=new CardGame(); List<
MyCard> deck=cg.buyDeck(); System.out.println("刚买回来的牌:"); System.out.println(
deck); cg.shuffle(deck); System.out.println("洗完的牌:"); System.out.println(deck);
//三人轮流抓牌,一人抓五张 //将三个玩家放到一个List当中 List<List<MyCard>> hands=new ArrayList<>(3);
//三个人手中每个人五张牌 hands.add(new ArrayList<>(5)); hands.add(new ArrayList<>(5));
hands.add(new ArrayList<>(5)); //ABC三个人抓牌 for(int i=0;i<5;i++){ for(int j=0;j<3;
j++){ //从deck里面抓走的 //抓的时候把最顶上的抓走 hands.get(j).add(deck.remove(0));; } } System.
out.println("剩下的牌:"); System.out.println("A手中的牌:"); System.out.println(hands.get
(0)); System.out.println("B手中的牌:"); System.out.println(hands.get(1)); System.out
.println("C手中的牌:"); System.out.println(hands.get(2)); }
<>输出结果:

后面的没显示全

技术
©2019-2020 Toolsou All rights reserved,
程序员的520,送给女友的几行漂亮的代码(python版)基于stm32控制四轮小车电机驱动(一)linux查看磁盘空间命令实验四 自动化测试工具-软件测试axios拦截器封装与使用C语言——qsort函数opencv-python傅里叶变换以及逆变换在算法研究过程中如何进行算法创新nc的安装和简单操作C语言做一个简易的登陆验证(功能)界面