当前位置: 首页 > article >正文

【Java 数据结构】如何写一副扑克牌 (附:全部码源) !!!

 🔥博客主页🔥:【 坊钰_CSDN博客 】

欢迎各位点赞👍评论✍收藏⭐

目录

1. 牌面的创建

2. 牌面的设计

2.1 创建一副牌

2.2 洗牌

2.3 发牌

3. 全部码源

3.1 MyCard.java 

3.2 MyCardGame.java

3.3 PlayCard.java

3.4 运行图片

4. 小结


 

1. 牌面的创建

可以先创建一个类来表示牌面的花色和面值

public class MyCard {
    //扑克牌牌面数值
    public int value;
    //扑克牌花色
    public String design;

    @Override
    public String toString() {
        return "[ "+design+" "+value+" ]";
    }
}

2. 牌面的设计

牌面创建好了之后,需要进行许多加工

2.1 创建一副牌

/*
* 创建一副牌
* */
public List<MyCard> createCard() {
    List<MyCard> list = new ArrayList<>(51);
    for (int i = 1; i <= 13; i++) {
        for (int j = 0; j < SUIT.length; j++) {
            MyCard myCard = new MyCard();
            myCard.design = SUIT[j];
            myCard.value = i;
            list.add(myCard);
        }
    }
    return list;
}

2.2 洗牌

/*
* 洗牌
* */
public void shuffleCard(List<MyCard> list) {
    Random random = new Random();
    for (int i = list.size() - 1; i >= 0; i--) {
        int ranCount = random.nextInt(52);
        swap(list,i,ranCount);
    }
}

/*
* 交换
* */
private void swap(List<MyCard> list,int i,int ranCount) {
    MyCard ret = list.get(i);
    list.set(i,list.get(ranCount));
    list.set(ranCount,ret);
}

2.3 发牌

/*
* 现有 5 个人,每人抽 6 张牌比大小
* */
List<List<MyCard>> peoples = new ArrayList<>();
peoples.add(new ArrayList<>());
peoples.add(new ArrayList<>());
peoples.add(new ArrayList<>());
peoples.add(new ArrayList<>());
peoples.add(new ArrayList<>());
peoples.add(new ArrayList<>());

for (int i = 0; i < 5; i++) {  // 5人
    for (int j = 0; j < 6; j++) {  //抽 6 张牌
        peoples.get(i).add(list.remove(0));
    }
}

System.out.println("第一个人的牌:");
System.out.println(peoples.get(0));
System.out.println("第二个人的牌:");
System.out.println(peoples.get(1));
System.out.println("第三个人的牌:");
System.out.println(peoples.get(2));
System.out.println("第四个人的牌:");
System.out.println(peoples.get(3));
System.out.println("第五个人的牌:");
System.out.println(peoples.get(4));

3. 全部码源

3.1 MyCard.java 

package deom1;

public class MyCard {
    //扑克牌牌面数值
    public int value;
    //扑克牌花色
    public String design;

    @Override
    public String toString() {
        return "[ "+design+" "+value+" ]";
    }
}

3.2 MyCardGame.java

package deom1;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class MyCardGame {
    /*
    * 定义花色的种类
    * */
    public String[] SUIT = {"♥","♣","♦","♠"};

    /*
    * 创建一副牌
    * */
    public List<MyCard> createCard() {
        List<MyCard> list = new ArrayList<>(51);
        for (int i = 1; i <= 13; i++) {
            for (int j = 0; j < SUIT.length; j++) {
                MyCard myCard = new MyCard();
                myCard.design = SUIT[j];
                myCard.value = i;
                list.add(myCard);
            }
        }
        return list;
    }

    /*
    * 洗牌
    * */
    public void shuffleCard(List<MyCard> list) {
        Random random = new Random();
        for (int i = list.size() - 1; i >= 0; i--) {
            int ranCount = random.nextInt(52);
            swap(list,i,ranCount);
        }
    }

    /*
    * 交换
    * */
    public void swap(List<MyCard> list,int i,int ranCount) {
        MyCard ret = list.get(i);
        list.set(i,list.get(ranCount));
        list.set(ranCount,ret);
    }

}

3.3 PlayCard.java

package deom1;

import java.util.ArrayList;
import java.util.List;

public class PlayCard {
    public static void main(String[] args) {
        MyCardGame myCardGame = new MyCardGame();
        System.out.println("新的扑克牌:");
        List<MyCard> list = myCardGame.createCard();
        System.out.println(list);

        System.out.println("洗牌:");
        myCardGame.shuffleCard(list);
        System.out.println(list);

        /*
        * 现有 5 个人,每人抽 6 张牌比大小
        * */
        List<List<MyCard>> peoples = new ArrayList<>();
        peoples.add(new ArrayList<>());
        peoples.add(new ArrayList<>());
        peoples.add(new ArrayList<>());
        peoples.add(new ArrayList<>());
        peoples.add(new ArrayList<>());
        peoples.add(new ArrayList<>());
    
        for (int i = 0; i < 5; i++) {  // 5人
            for (int j = 0; j < 6; j++) {  //抽 6 张牌
                peoples.get(i).add(list.remove(0));
            }
        }
    
        System.out.println("第一个人的牌:");
        System.out.println(peoples.get(0));
        System.out.println("第二个人的牌:");
        System.out.println(peoples.get(1));
        System.out.println("第三个人的牌:");
        System.out.println(peoples.get(2));
        System.out.println("第四个人的牌:");
        System.out.println(peoples.get(3));
        System.out.println("第五个人的牌:");
        System.out.println(peoples.get(4));

    }
}

3.4 运行图片

4. 小结

以上就是对 该算法 的了解,具体还需宝子们去实践,如果觉得该博客对你有用的话,希望一键三连,点个关注不迷路,谢谢支持  


http://www.kler.cn/a/443541.html

相关文章:

  • WebSocket封装
  • NVR管理平台EasyNVR设备通过ONVIF接入出现404访问错误是什么原因?
  • HTML基础到精通笔记
  • Logo设计免费生成器工具:轻松创建独特标志
  • 【UVM】搭建一个验证平台
  • springcloud各个组件介绍
  • 量子通信学习路径(一)
  • JS使用random随机数实现简单的四则算数验证
  • transformer学习笔记-位置编码
  • 使用 NVIDIA DALI 计算视频的光流
  • 【设计模式】单例模式的应用场景
  • 计算机的错误计算(一百八十五)
  • AI-PR曲线
  • C++中如何实现单例模式?
  • 【Maven】基础(一)
  • 深度神经网络(DNN)在时序预测中的应用与缺陷
  • 前端 计算发布时间(如“1小时前”、“3天前”等)
  • Mybatis plus查询开用了Redis缓存,一开始挺快,用户多/时间拉长就变慢了
  • django基于python的图书馆管理系统
  • 重生之我在异世界学智力题(8)
  • Python中exifread库使用
  • microk8s使用
  • 通过枚举值调用函数
  • 详解CompletableFuture
  • 写SQL太麻烦?免费搭建 Text2SQL 应用,智能写 SQL | OceanBase AI 实践
  • SSM 寝室管理系统:住宿管理的科技之光