【顺序表使用练习】发牌游戏

【顺序表使用练习】发牌游戏

  • [1. 介绍游戏](#1. 介绍游戏)
  • [2. 实现52张牌](#2. 实现52张牌)
  • [3. 实现洗牌](#3. 实现洗牌)
  • [4. 实现发牌](#4. 实现发牌)
  • [5. 效果展示](#5. 效果展示)

1. 介绍游戏

首先先为大家介绍一下设计要求

  1. 实现52张牌(这里排除大小王)
  2. 洗牌------打乱牌的顺序
  3. 发牌------3个人,1人5张牌

2. 实现52张牌

  1. 创建Code对象
  2. 创建codelist顺序表,储存52张牌

下面是代码演示:

java 复制代码
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);//创建code
                codeList.add(code);//将每次创建的code都add尾插到顺序表中
                //实现52张牌的存储
            }
        }
        return codeList;
    }

3. 实现洗牌

如何实现洗牌? 第一时间大部分人都会想到随机数 ,那么如何使用随机数实现洗牌呢?

下面是代码实现

java 复制代码
 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 分别是三个人被分到的牌

下面是代码实现

java 复制代码
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函数

java 复制代码
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));
        }
    }
}
相关推荐
努力努力再努力wz6 分钟前
【MySQL进阶系列】一文打通事务机制:从锁、Undo Log 到 MVCC 与隔离级别
c语言·数据结构·数据库·c++·mysql·算法·github
薇茗9 分钟前
【初阶数据结构】 左右逢源的分支诗律 二叉树1
c语言·数据结构·算法
盼小辉丶11 分钟前
PyTorch强化学习实战——构建生成对抗网络生成Atari游戏画面
pytorch·游戏·生成对抗网络
澈20711 分钟前
C++ string全面解析:从入门到精通
数据结构·c++·算法
庞轩px37 分钟前
致远互联实习复盘:一条SQL替代300次循环查询,组织架构选择器从5秒降到300毫秒
java·sql·mysql·mybatis·实习经历·n+1问题·join联表查询
vooy pktc37 分钟前
Spring Security 官网文档学习
java·学习·spring
Irissgwe40 分钟前
算法之滑动窗口
数据结构·算法
钰衡大师41 分钟前
Activiti 7 工作流技术文档
java·数据库·spring boot
纽扣6671 小时前
【算法进阶之路】链表核心:快慢指针与反转链表专题精讲
数据结构·c++·算法·链表
浅念-1 小时前
吃透栈:LeetCode 栈算法题全解析
数据结构·c++·算法·leetcode·职场和发展·