首页 > 其他分享 >数据结构之有趣的扑克牌(出牌吧!!)

数据结构之有趣的扑克牌(出牌吧!!)

时间:2024-03-16 18:00:27浏览次数:21  
标签:出牌 下标 cardList 扑克牌 int ArrayList List new 数据结构

题外话

这不是魔法,而是科学小实验!!!

请大家多多支持我,我真的真的太想进步了啊!!!!

正题

扑克牌代码思路

1.代码分为买牌,洗牌还有发牌(三个人每个人五张牌)

2.要熟练掌握javase初阶和数据结构中的ArrayList类

扑克牌代码以及代码详解

package Card;

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

public class CardDemo {
    //先设置四种花色,因为扑克牌花色就四种,所以设置为静态常量
    private final String[] suit={"♠","♣","♥","♦"};
    //1.买牌(没有大小王)共52张牌
public List<Card> buyCard()
{
    //把卡牌全部放入ArrayList中
        List cardList=new ArrayList();
        //i代表四种花色,j代表13张卡牌
        for (int i=0;i<4;i++)
        {
            for (int j=1;j<=13;j++)
            {
                //利用构造方法把扑克牌创建出来放入Card数组,最后放入cardList中
                Card card=new Card(suit[i],j);
                cardList.add(card);
            }
        }
        return cardList;
}
//2.洗牌
public void shuffle(List<Card> cardList)
{
    //先创建Random这个类的对象
    Random random=new Random();
    //洗牌利用交换swap方法洗牌,从51下标开始到0下标结束(0下标不需要交换)
    for (int i=cardList.size()-1;i>0;i--)
    {
        //random.nextInt(i)是指从0-51(包括0,不包括51)随机选一个数字
       int index=random.nextInt(i);
       //把随机选的数字的下标和i下标交换牌值,这里交换swap函数交换的是cardList的i下标和index下标对应的值
       swap(cardList,i,index);
    }

}
//因为交换swap方法只作用于此类,所以就可以封装起来
private void swap(List<Card> cardList,int i,int j)
{           //利用get方法,把cardList的i下标位置的值放入tmp
           Card tmp=cardList.get(i);
           //利用set方法,再利用get方法,把carrdList的j下标位置的值付给
           cardList.set(i,cardList.get(j));
           //用set方法,把tmp的值放到j下标位置
           cardList.set(j,tmp);

}
//三个人一人抓五张牌
public void getCard(List<Card> cardList)
{
    //创建三个对象,代表的就是三个人
    List<Card> list1=new ArrayList();
    List<Card> list2=new ArrayList();
    List<Card> list3=new ArrayList();
    //创建相当于二维数组,把每个人都放进去,一个人相当于一个一维数组
    List<List<Card>> hands=new ArrayList<>();
    hands.add(list1);
    hands.add(list2);
    hands.add(list3);
    //一个人发五张牌
    for (int i=0;i<5;i++)
    {
        for (int j=0;j<3;j++)
        {
            //移除要发的牌,并将要发的牌放入当前人手中
            Card card=cardList.remove(0);
            hands.get(j).add(card);
        }
    }
    //三个人各自手中的牌
    System.out.println("第1个人揭牌如下:");
    System.out.println(list1);
    System.out.println("第2个人揭牌如下:");
    System.out.println(list2);
    System.out.println("第3个人揭牌如下:");
    System.out.println(list3);
    //剩下的牌
    System.out.println("牌堆如下");
    System.out.println(cardList);
}
}

代码运行

小结

记住主要思维逻辑,然后再自己不看代码输入一遍,记得把昨天的杨辉三角打一遍复习一下哦!!!

标签:出牌,下标,cardList,扑克牌,int,ArrayList,List,new,数据结构
From: https://blog.csdn.net/weixin_67836079/article/details/136766594

相关文章

  • 数据结构知识总结笔记------第四章:串(2)串的简单模式匹配算法、KMP算法、KMP算法的改进
    1、简单模式匹配算法对一个串中某子串的定位操作称为串的模式匹配,其中待定位的子串称为模式串。算法的基本思想:从主串的第一个位置起和模式串的第一个字符开始比较,如果相等,则继续逐一比较后续字符;否则从主串的第二个字符开始,再重新用上一步的方法与模式串中的字符做比较,以......
  • 数据结构之顺序表(包学包会版)
    目录1.线性表2.顺序表2.1概念及结构2.2接口实现3.总结halo,又和大家见面了,今天要给大家分享的是顺序表的知识,跟着我的脚步,包学包会哦~规矩不乱,先赞后看!ps:(孙权劝学)1.线性表线性表是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常......
  • 后端返回的数据结构可能是多样的,前端需要对数据进行处理,以适应页面展示的需求。请给出
    在前端开发中,针对后端返回的多变数据结构进行处理以适应页面展示需求的最佳实践包括以下几个方面:定义清晰的数据模型:在前端根据UI设计和功能需求明确所需的数据结构,并创建对应的JavaScript对象模型(或使用TypeScript等类型语言提供静态类型检查)。这有助于前端开发者预先了解......
  • 前端开发时,应该如何考虑开发的主次先后,比如数据结构、数据流转、UI绘制,js逻辑等等,请给
    前端开发时,应该如何考虑开发的主次先后,比如数据结构、数据流转、UI绘制,js逻辑等等,请给出你的最佳实践在前端开发中,正确规划和安排各项任务的主次先后对于项目的顺利进行至关重要。以下是一个针对数据结构、数据流转、UI绘制以及JavaScript逻辑等方面的开发优先级与最佳实践建议:......
  • 后端返回的数据会不会不符合页面上的展示,还是说后端返回的数据结构就是页面上需要展示
    后端返回的数据可能不一定完全符合前端页面展示的需求,这取决于后端API设计和前端UI/UX的设计。有时后端返回的数据可能是原始数据或者为了满足数据库存储需求的结构化数据,而前端可能需要对这些数据进行处理以便更好地呈现给用户。数据适配:如果后端返回的数据结构与前端展示所......
  • 后端返回的值,不能直接用于表单展示,有的表单项的值是根据其他表单项计算出来的,有的是根
    后端返回的值,不能直接用于表单展示,有的表单项的值是根据其他表单项计算出来的,有的是根据下拉框的选中项的其他属性获取到的,这时候该如何处理?还有最后要保存的时候,传给后端的值,与表单的数据结构也不一样,有的甚至没有放在表单属性上,比如当前下拉框选中的对象而非id,整个需要传给后端......
  • 一般后端返回的数据结构是数据库中的存储结构,与前端需要展示的结构不一样对吗?
    是的,一般情况下后端返回的数据结构确实可能与前端需要展示的结构不完全一样。原因有以下几点:数据库存储结构:后端从数据库中查询到的数据通常遵循数据库表的设计,包括关系型数据库中的外键关联、嵌套数据等。这些数据可能是为了满足数据库设计规范和查询效率而组织的,并不一定直......
  • chapter10-非线性数据结构
    机试中考查的一些非线性数据结构,包括二叉树、二叉排序树、优先队列和散列表。1.二叉树(BinaryTree)对于二叉树来说,机试中常考的是其各种遍历方法,分为前序、中序、后序遍历,以及层次遍历。1.2二叉树遍历题目描述+输入输出题目描述:二叉树的前序、中序、后序遍历的定义。前......
  • 数据结构导论
    2024.3.15Author:芝士wa参考视频链接:bilibili-深入浅出数据结构1.数据结构的定义数据结构是一种方法,是计算机存储和组装数据的方式,使这些数据可以得到有效利用2.数据结构的分类AbstarctDataType(ADT)数组Array链表LinkedList栈stack队列queue树tree图grap......
  • 数据结构之链式二叉树
    当我们初步了解二叉树后我们就可以进一步去深入学习二叉树了1.链式二叉树的遍历这里我们先去定义链式二叉树的结构分为两个指针一左一右他们分别指向左子树和右子树typedefintBTDataType;typedefstructBinaryTreeNode{ BTDataTypedata; structBinartTreeNode......