有很多朋友斗想编一个自己的小游戏,今天我为大家带来的是,如何用java封装对象写斗地主的发牌程序。

首先我们知道一副牌一共有54张,其中大小王是特殊的没有4个花色,其余牌都是有是个花色的。

所以我们根据面向对象的思想,建3个类,分别是大小王的类、其余牌的一个类、一个所有牌的类。分别取名为Booskard、Numkard、Kard(这三个类名可以随机取但要有逻辑性)

让大小王的类和4种花色牌的类都继承所有牌的那个类。

大小王的类

4种花色牌的类

所有牌的类,有点空空的感觉,啥代码都没有(-_-),因为他只是一个被继承的父类

对象类已经准备好了,下面就开始我们的主要代码操作,创建一个有main方法的类

第一步:我们建一个牌的集合,创建一个花色数组,创建一个A-K的数组。

第二步:把牌添加进牌盒的集合,因为我们的牌除了大小王,每一种牌都有4种花色,这里我用了一个双重for实现了这个牌的各种花色的添加效果,外层for控制花色,内层for控制pai的样式变换,这里我运用了多态原理创建子类对象,实现循环添加到牌盒,顺带把大小王的代码在下面写了添加进牌盒去。

这行代码是为了打乱牌的顺序,简单的说就是洗牌。

第三步:创建三个玩家摸的手牌的集合,然后用循环通过k的值取余3(玩家个数)的值来给指定的玩家发牌,细心的你肯定发现为啥for循环哪里有个-3,那是因为我们要留三张底牌不可能吧底牌都发了吧。

这行代码是为了获取刚才我们没有发的底牌三张。

第四步:终于到了看我们发的牌的效果的时候了,你会发现我们发的牌你看不懂,可能心里在想,我是不是被博客主坑了我的牌都看不见,博主很负责的告诉你,你绝对没有被坑,看不到牌的原因是,哪些是每一张牌的对象,但是看不见属性,这是你需要在大小王的类里面按住shift+alt+s选择倒数第四个创建一个toString方法然后把返回值改为name,同样的道理把其它牌的那个类创建一个toString方法然后把返回值改为color+name,大功告成,快去试试吧,是不是看得见牌了。

初次写技术博客,新手上道多多关照,欢迎指出错误,谢谢欣赏。

最新文章

  1. SSH,SCP,SFTP命令汇总
  2. python progressbar 多行_使用单击.progressbar在Python中使用多处理
  3. 20应用统计考研复试要点(part34)--简答题
  4. 同一工作组无法访问_工作组,域
  5. linux编译ffmepg,在Ubuntu下编译FFmpeg
  6. app inventor2 打地鼠_春节越南旅行攻略必备手机APP推荐!旅游必备实用简单越南语...
  7. css将空的div撑开,如何使用css将空的浮动div伸展到可用的全高度?
  8. 求合作开发伙伴 .NET 中高级工程师 1-2名
  9. 计算机组装故障排除方法,计算机组装 常见的硬件故障及排除方法
  10. 创客教室-中小学创客教育课程介绍
  11. Flutter 数据库ORM框架floor使用详解
  12. 德莱联盟(判断两个线段是否相交)
  13. 解决Apache/2.4.39 (Win64) PHP/7.2.18 Server at localhost Port 80问题
  14. 为什么我要选择使用Yarn来做Docker的调度引擎
  15. java基于微信小程序的共享单车电动车租赁系统 uniapp 小程序
  16. oracle数据库 参考文献,数据库参考文献格式
  17. 买菜App综合服务水平排行:盒马、多点、每日优鲜排前三
  18. python matplotlib 画图保存图片简单例子
  19. 基于Processing和Leap Motion的绘画系统
  20. 技术人攻略访谈三十七-程显峰:IT病得有多重?技术圈交际花谈研发管理怪现状

热门文章

  1. kali下载速度慢_Linux系统软件安装更新下载太慢解决方法(转载)
  2. 大数据all_in环境搭建
  3. COVID-19检测方法汇总
  4. 使用码云同步谷歌 Chrome 浏览器书签
  5. Ubuntu设置仅允许特定用户或特定IP通过ssh访问
  6. C# 获取url 状态,获取重定向(HttpWebRequest)
  7. 电商平台减少服务器性能,电商平台服务器数据安全灾备方案规划.doc
  8. ThinkPHP6+swoole+easywechat使用教程
  9. ✿2021NEWCTF6.1萌新赛✿MISC-all-WP
  10. 调用企业微信API,ios端异常