目录
- 1.前言
- 2. 正文
- 1.要求:
- 2.思路及代码实现
- 3.结语
1.前言
本文主要用上一篇博客的所有知识点实现的扑克牌小游戏,内涵抽牌洗牌,内编程客栈容详细,跟进小编的步伐!
2. 正文
1.要求:
1.首先要买52张牌(除去牌,J Q K均用数字代替),2.然后进行洗牌打乱顺序,3.有三个人轮流揭牌5张
2.思路及代码实现
- 有52张牌所以首先我们先定义一个Card类用来完成牌包含的内容
我们用private修饰实现了封装,并调用了get set方法,这里小编在语法部分都有写到,其次我们可以重写toString 方法,使输出的效果更符合我们的业务。
这样我们可以直接打印出花色加值。下面我们在定义一个CphpardDemo的类用来存放我们修改Card类的方法
这是我们定义的CardDemo类,首先我们要先放四个花色在这个类中,把这四个花色分配给我的Card类中的suit,我也要定义13个数字分派给我Card中的rank!当我们这些都做完后,我们就该考虑如何存放这些数据,所以我们用到了顺序表的知识!!
我们定义了一个list 用来存放我们的数据!这一步也做完了,可见我们第一步完成下面我们可以看一下现在的代码执行情况
可见代码正常运行,下面我们完成第二部操作打乱牌的次序
- 如何打乱牌的次序!?
在我们之前的学习中,学习到一个Random的类,这个类具有一个nextInt()方法可以实现位置的互换!

接着我们看代码如何实现!!
public void shuffle(ArrayList<Card> list){php
Random random=new Random();
for (int i =list.size()-1 ; i>0; i--) {
int index=random.nextInt(i);
}
}
首先这是我们定义的洗js牌方法,先把下标交换一下

但是在我们定义交换方法的时候,以原本的逻辑代码会报错!这时候就体现了Java的面向对象的特TgIdG点了,我们可以直接调用set方法!!!

这样我们第二步的代码就完成了!!这里的swap方法最好用private封装一下
- 最后我们要完成的是轮流揭牌的操作,这个方法对于刚接触顺序表的我们来说还是有点复杂的,下面小编一 一讲解。
首先看这个图可以很好理解每个人都要有独立的顺序表结构放牌,我们先完成这个方法
public void play(ArrayList<Card> list){
ArrayList<Card> tep0=new ArrayList<>();
ArrayList<Card> tep1=new ArrayList<>();
ArrayList<Card> tep2=new ArrayList<>();
}
接着我们考虑怎么删

然后我们的思路继续向前,三个人轮流拿牌一次拿一张,拿五轮所以我们就要用到循环

用card接收我们揭开的牌,最后我们要把牌放到我们定义的三个tep中,这该怎么放??这时候我们就需要采用二维数组的思想,与上篇博客的杨辉三角形成共鸣
下面看图

由这个图我们就可以最后完善一下代码
public ArrayList<ArrayList<Card>> play(ArrayList<Card> list){
ArrayList<Card> tep0=new ArrayList<>();
ArrayList<Card> tep1=new ArrayList<>();
ArrayList<Card> tep2=new ArrayList<>();
ArrayList<ArrayList<Card>> tep=new ArrayList<>();
tep.add(tep0);
tep.add(tep1);
tep.add(tep2);
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 3; j++) {
Card card=list.remove(0);
tep.get(j).add(card);
}
}
return tep;
}
最后这个方法我们也完成了!! 这个小游戏也结束了。
3.结语
到此这篇关于Java顺序表实现的扑克牌小游戏的文章就介绍到这了,更多相关Java顺序表扑克牌小游戏内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
加载中,请稍侯......
精彩评论