Java发牌程序事例

根据提供的信息,我们可以总结出以下知识点: ### 一、接口与实现 #### 1. 花色接口和实现 **接口定义:** ```java public interface IHuase { public String[] getHuase(); } ``` **实现类:** ```java public class CHuasePuke implements IHuase { @Override public String[] getHuase() { String[] hua = {"红", "黑", "梅", "方"}; return hua; } } ``` **知识点解析:** - **接口IHuase** 定义了一个获取花色的方法 `getHuase()`。 - **实现类CHuasePuke** 实现了IHuase接口,并具体实现了获取花色的方法,返回一个字符串数组,表示四种花色。 #### 2. 点数接口和实现 **接口定义:** ```java public interface IDianshu { public String[] getDianshu(); } ``` **实现类:** ```java public class CDianshuPuke implements IDianshu { @Override public String[] getDianshu() { String[] dian = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"}; return dian; } } ``` **知识点解析:** - **接口IDianshu** 定义了一个获取点数的方法 `getDianshu()`。 - **实现类CDianshuPuke** 实现了IDianshu接口,并具体实现了获取点数的方法,返回一个字符串数组,表示所有可能的点数。 ### 二、单张牌与牌组定义 #### 1. 单张牌定义 ```java public class SinglePai { public String tag; } ``` **知识点解析:** - **SinglePai** 类定义了一个单张牌,其中包含一个属性 `tag` 用于标识该牌的具体信息(如红桃A)。 #### 2. 一副牌定义接口 ```java public interface IPai { public SinglePai[] getInstance(); } ``` **知识点解析:** - **接口IPai** 定义了一个获取一副牌的方法 `getInstance()`,返回一个SinglePai类型的数组。 #### 3. 一副牌实现 ```java public class Puke implements IPai { private SinglePai[] puke = new PukeFactory().produce(); @Override public SinglePai[] getInstance() { return puke; } } ``` **知识点解析:** - **类Puke** 实现了IPai接口,通过调用 `PukeFactory` 的 `produce` 方法来创建并返回一副完整的扑克牌。 ### 三、工厂模式 #### 1. 工厂接口 ```java public interface IFactory { public SinglePai[] produce(); } ``` **知识点解析:** - **接口IFactory** 定义了一个创建牌的方法 `produce()`,返回一个SinglePai类型的数组。 #### 2. 工厂实现 ```java public class PukeFactory implements IFactory { private IHuase hua; private IDianshu dian; @Override public SinglePai[] produce() { hua = new CHuasePuke(); dian = new CDianshuPuke(); int i = hua.getHuase().length; int j = dian.getDianshu().length; SinglePai[] pai = new SinglePai[54]; for (int m = 0; m < i; m++) { for (int n = 0; n < j; n++) { pai[m * j + n] = new SinglePai(); pai[m * j + n].tag = hua.getHuase()[m] + dian.getDianshu()[n]; } } pai[52] = new SinglePai(); pai[52].tag = "小王"; pai[53] = new SinglePai(); pai[53].tag = "大王"; return pai; } } ``` **知识点解析:** - **类PukeFactory** 实现了IFactory接口,通过组合IHuase和IDianshu接口的实例来构建完整的牌组,并在最后添加大小王。 - 使用了循环结构,将花色和点数组合起来,形成52张牌的基本部分,再额外添加大小王。 ### 四、发牌与洗牌 #### 1. 发牌接口和实现 **接口定义:** ```java public interface IFapai { public void fapai(IPai pai, Player[] player); } ``` **实现类:** ```java public class Fapai_puke_1by1 implements IFapai { @Override public void fapai(IPai pai, Player[] player) { int m = pai.getInstance().length - 3; int n = player.length; int j = 0; for (int i = 0; i < m; i++) { if (i % n == 0) { j = 0; } player[j].ZhuaPai(pai.getInstance()[i]); j++; } } } ``` **知识点解析:** - **接口IFapai** 定义了一个发牌方法 `fapai()`,参数为一副牌和玩家数组。 - **实现类Fapai_puke_1by1** 实现了IFapai接口,按顺序将牌分发给玩家,每次循环发一张牌给每个玩家。 ### 总结 本案例通过使用Java语言实现了发牌程序的设计模式。其中涉及到了接口、抽象类、具体类等概念的应用,以及工厂模式的运用。通过定义不同的接口和实现类,程序能够灵活地管理牌的信息,包括花色、点数等,并能够创建出一副完整的扑克牌。此外,还实现了发牌的功能,可以按照指定的规则将牌分发给玩家。这样的设计不仅提高了代码的复用性和可维护性,也为进一步扩展功能提供了便利。
























- 过天2012-09-27这个太多了吧,还行,就是注释少.全是英文的

- 粉丝: 1
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 嵌入式系统及应用-Chapter1-嵌入式系统导论.ppt
- 网络营销精英培训计划.pptx
- 最新毋岩毕业设计正文(基于单片机设计的数字电子钟).doc
- 乐活网电子商务解决方案.doc
- 数字图像处理(冈萨雷斯)第一章-绪论.ppt
- 校园网络维护记录[最终版].pdf
- 循环程序设计陈.doc
- 主流计算机图像技术.doc
- 云计算关键技术与应用技能协作训练组集训专项方案.doc
- 数据库原理与技术课程习题答案.doc
- 网络工程生产实习报告.doc
- 学习]网络科学导论度分布.ppt
- 专升本《计算机软件基础》模拟题试卷.doc
- 互联网应用与安全.ppt
- 项目管理技术在工程成本方面的综合运用.doc
- 网络游戏营销方案.pptx


