【顺序表使用练习】发牌游戏
- 1. 介绍游戏
- 2. 实现52张牌
- 3. 实现洗牌
- 4. 实现发牌
- 5. 效果展示
1. 介绍游戏
首先先为大家介绍一下设计要求
- 实现52张牌(这里排除大小王)
- 洗牌——打乱牌的顺序
- 发牌——3个人,1人5张牌
2. 实现52张牌
- 创建Code对象
- 创建codelist顺序表,储存52张牌
下面是代码演示:
public class Code {//创建Code类String suit;//定义花色int number;//定义数字//创建一个数组储存4种花色public static final String[] suits={"❤","♠","♦","♣"};@Override//重写输出格式public String toString() {return "Code{" +suit +number +'}';}public Code() {}public Code(String suit, int number) {this.suit=suit;this.number=number;}public static List<Code> buycode(){//初始化牌面List<Code> codeList=new ArrayList<>();//创建顺序表for (int i = 0; i < 13; i++) {for (int j = 0; j < 4; j++) {String suit=suits[j];int number=i;Code code=new Code(suit,number);//创建codecodeList.add(code);//将每次创建的code都add尾插到顺序表中//实现52张牌的存储}}return codeList;}
3. 实现洗牌
如何实现洗牌? 第一时间大部分人都会想到随机数,那么如何使用随机数实现洗牌呢?
下面是代码实现
public static List<Code> randcode(List<Code> codeList){//洗牌Random random=new Random();for (int i = codeList.size()-1; i>0; i--) {int a=random.nextInt(i);swap(codeList,i,a);}return codeList;}
4. 实现发牌
创建一个二维顺序表h
h1 h2 h3 分别是三个人被分到的牌
下面是代码实现
public static List<List<Code>> play(List<Code> codeList){List<Code> h1=new ArrayList<>();List<Code> h2=new ArrayList<>();List<Code> h3=new ArrayList<>();List<List<Code>> h=new ArrayList<>();h.add(h1);h.add(h2);h.add(h3);for (int i = 0; i < 3; i++) {for (int j = 0; j < 5; j++) {Code code=codeList.remove(0);h.get(i).add(code);}}return h;}
5. 效果展示
main函数
public class Test {public static void main(String[] args) {Code code=new Code();//初始化牌面List<Code> codeList=code.buycode();System.out.println("初始化牌面:"+codeList);//洗牌System.out.println("洗牌:"+code.randcode(codeList));//发牌List<List<Code>> h=code.play(codeList);System.out.println("发牌:");for (int i = 0; i < h.size(); i++) {System.out.println(h.get(i));}}
}