目录

1. 准备一张牌

2. 拿一副牌出来

3.洗牌(打乱牌的顺序)

4.开始发牌


代码gitee链接   20220711/src · 雷晓恒/Java - 码云 - 开源中国 (gitee.com)

1. 准备一张牌

一张扑克牌里面有点数和花色,

class Card {public int rank;//点数public String suit;//花色public Card(int rank, String suit) {this.rank = rank;this.suit = suit;}@Overridepublic String toString() {return suit+" "+rank;}
}

2. 拿一副牌出来

先搞一个数组存放牌的花色

    public static final String [] suits = {"♥", "♠", "♣", "♦"};

再循环一副牌出来

    public List<Card> buyDeskCard() {List<Card> cards = new ArrayList<>();for (int i = 1; i <= 13; i++) {for (int j = 0; j < 4; j++) {Card card = new Card(i,suits[j]);cards.add(card);}}return cards;}

试着打印看一下

    public static void main(String[] args) {CardDemo cardDemo = new CardDemo();List<Card> ret = cardDemo.buyDeskCard();System.out.println(ret);}

3.洗牌(打乱牌的顺序)

循环 让 i 存这个牌的数组从后到前开始循环,让 i 从 0 到 i-1 的某一个数组下标的牌交换,交换完成后i-- ,一直循环完成后,洗牌也就完成了、

洗牌

    public void shuffle(List<Card> cards) {for (int i = cards.size()-1; i > 0; i--) {//产生随机数Random random = new Random();int index = random.nextInt(i);//交换swap(cards,index,i);}}

 交换

    private void swap(List<Card> cards, int i, int j) {Card tmp = cards.get(i);cards.set(i,cards.get(j));cards.set(j,tmp);}

洗牌的方法写好了,我们试着调用一下

    public static void main(String[] args) {CardDemo cardDemo = new CardDemo();List<Card> ret = cardDemo.buyDeskCard();cardDemo.shuffle(ret);System.out.println(ret);}

4.开始发牌

如果是三个人每个人拿五张牌,这样发牌的话

发牌也就是将洗好的牌从数组中删除

而且发牌也要考虑,这张牌发给了谁,要能对应上

    public List<List<Card>> test(List<Card> cards) {//new三个人出来List<Card> hand1 = new ArrayList<>();List<Card> hand2 = new ArrayList<>();List<Card> hand3 = new ArrayList<>();List<List<Card>> hands = new ArrayList<>();hands.add(hand1);hands.add(hand2);hands.add(hand3);//轮流拿五张牌for (int i = 0; i < 5; i++) {for (int j = 0; j < 3; j++) {Card card = cards.remove(0);hands.get(j).add(card);}}return hands;}

 写好发牌的方法,试着调用一下

    public static void main(String[] args) {CardDemo cardDemo = new CardDemo();List<Card> ret = cardDemo.buyDeskCard();System.out.println(ret);System.out.println("洗牌:");cardDemo.shuffle(ret);System.out.println(ret);System.out.println("发牌:");List<List<Card>> ret2 = cardDemo.test(ret);for (int i = 0; i < ret2.size(); i++) {System.out.println("第"+i+"个人的牌:"+ ret2.get(i));}System.out.println("剩余的牌:");System.out.println(ret);}


顺序表实现简单的【扑克牌】相关推荐

  1. c++:用顺序表实现简单的栈

    main.cpp #include<iostream> #include<string> #include"Stack.hpp" using namespa ...

  2. 用顺序表实现学生信息管理系统

    用顺序表实现学生信息管理系统 问题描述: 定义一个包含学生信息(学号,姓名,成绩)的顺序表,使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息: (2) 逐个显示学生表中所有学生的相关信息 ...

  3. 约瑟夫环c语言代码顺序存储,顺序表实现约瑟夫环地问题,C语言.doc

    顺序表实现约瑟夫环地问题,C语言 计算机科学与工程学院 PAGE PAGE 2 <算法与数据结构>试验报告 计算机科学与工程学院 <算法与数据结构>试验报告[一] 专业班级 1 ...

  4. 顺序表实现学生管理系统

    定义一个包含学生信息(学号,姓名,成绩)的顺序表和链表,使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息: (2) 逐个显示学生表中所有学生的相关信息: (3) 根据姓名进行查找,返回此 ...

  5. 顺序表讲解和顺序表实现增删查改

    前言 顺序表是一种参见的数据结构 特点:类似数组的储存,需要预先开辟空间已备数据插入.(1)同时顺序表也因此会存在和数组同样的问题(例如:越界)(2)同时因为其类似与数组的结构给二分查找这种算法提供了 ...

  6. 顺序表实现扑克牌小游戏

    package Test0327;import java.util.ArrayList; import java.util.Collections; import java.util.List;//表 ...

  7. 【数据结构】顺序表实现超详解(保姆级教程)

    [数据结构] 目录 ​ 前言 顺序表 接口实现 各项功能 接口详解 顺序表初始化 顺序表释放 顺序表展示 顺序表容量检查 顺序表数据尾插 顺序表数据头插 顺序表数据前删 顺序表数据尾删 顺序表数据查找 ...

  8. 用C语言写的一个顺序表实现图书馆书籍管理

    Function: 增add_book() 删delete_book() 改modify_book() 查check_book() 实现吧! **************************/ # ...

  9. 栈——用顺序表实现栈操作

    一.线性表特点 线性表:由0个或者多个数据元素组成的有限序列 除了第一个节点(头节点),都有前驱节点 除了最后一个节点(尾节点),都有后继节点 线性表主要由顺序存储结构或者链式存储结构 一般线性表:可 ...

最新文章

  1. Asp.net支持的最大上传文件大小
  2. Worktile完成新一轮融资,将发力研发管理赛道
  3. 定义一个Employee类
  4. MAX2606调频发射芯片
  5. windows powershell
  6. 天的各种书法_寒假书法集训|小考拉硬笔书法班招募中
  7. CVPR 2018 《High-speed Tracking with Multi-kernel Correlation Filters》论文笔记
  8. gen2服务器只显示spbc,gen2-regen培训资料.ppt
  9. Learning-Python【0】:Windows环境下Python2和Python3的安装
  10. 唯品会回应“不正当竞争行为”:接受处罚 进行全面整改
  11. 怎样用springboot开发cs_SpringBoot如何进行学习!
  12. c# 多线程界面卡顿_多线程同步等候 导致主界面UI卡顿,求解~
  13. 轻轻松松统计代码行数
  14. Visual Studio的.NET内存分配分析器解析
  15. js事件冒泡和事件捕获的区别
  16. Linux系统Anaconda下载安装教程
  17. react+UmiJS+Antd Pro简介
  18. html化妆品商城设计,基于HTML5的彩妆购物网站设计任务书
  19. MTK6577+Android4.0之增加重启功能
  20. css flash布局_跳过简介-CSS3是新的Flash

热门文章

  1. 5-羧基四甲基罗丹明TMR标记Polyacetal聚缩醛/HA透明质酸纳米载体TMR--Polyacetal|TMR-HA
  2. 猜数字游戏(小游戏编码)
  3. oracle安装 redo log,Oracle Redo Log 及Logmnr配置使用
  4. R语言学习笔记(1~3)
  5. jerry推荐好玩的做图网站
  6. 闪耀暖暖的3D建模真好吗?
  7. 2022.11.27 第10次周报
  8. 选择防身武器,利用身边的物品才是王道
  9. “咔咔咔”手机拍照过新年 是时候了解下背后的技术了
  10. 这项Avatar专利,让我看到了未来苹果生态与AR/VR头显的融合