Java作业:抽象扑克牌与牌堆类的设计
需积分: 0 53 浏览量
更新于2024-08-05
收藏 140KB PDF 举报
在本次Java第二次大作业中,学生杨琳设计了一个纸牌游戏(空当接龙)的实现。核心是通过抽象和封装来构建一个复杂的牌类结构。以下是主要类及其功能的详细说明:
1. **Card类**:
- 设计目的:抽象出单张扑克牌的基本属性,如点数(`int face`)、花色(`intsuit`)以及位置坐标(`int x`, `int y`)。
- 封装部分:包含这些属性作为数据成员。
- 方法:
- 返回类型:`Card(int, int)` - 构造方法,接收点数和花色作为参数创建新的扑克牌实例。
- `DisplayCard(Graphics)` - 方法用于显示特定扑克牌,接受一个`Graphics`对象,用于图形渲染。
2. **Cards类**:
- 设计目的:抽象出一副扑克牌,包括52张牌,且不包含大小王。
- 封装部分:使用`LinkedList<Card>`存储牌的集合,`list`。
- 方法:
- 返回类型:`Cards()` - 构造方法,初始化牌堆并将52张牌随机排序。
- `deal()` - 发牌方法,从牌堆中移除并返回第一张牌。
- 其他辅助方法如`isContain()`和`canCollect()`用于游戏中判断牌堆内的卡片匹配规则。
3. **Collection类**:
- 设计目的:表示游戏中按顺序收集牌的牌堆,比如右上方的牌堆。
- 封装部分:包含顺序(`int order`)、牌堆列表(`LinkedList<Card>`)等。
- 方法:
- 返回类型:`Collection(int)` - 构造方法,接收顺序作为参数。
- `isContain()` - 判断指定坐标是否在牌堆内。
- `canCollect(Lin)` - 判断是否可以与另一牌堆合并,考虑花色和点数规则。
- `Merge()` - 合并指定牌堆到当前牌堆。
- `Display(Graphics)` - 显示牌堆内容。
- `is13()` - 判断牌堆是否已收集满13张。
- `CollectedSize()` - 返回已收集的牌数量。
4. **TransferStation类**:
- 设计目的:代表游戏中暂存牌的牌堆,如左上角的牌堆。
- 封装部分:包括顺序、牌堆列表和额外的`int x`坐标信息。
- 方法:
- 返回类型:`TransferStation(int)` - 构造方法,接收顺序作为参数。
整个设计的核心在于将游戏中的实体(扑克牌、牌堆)进行抽象,通过类和方法的组合实现牌的管理和操作,满足空当接龙游戏的需求。同时,利用数据结构如链表处理牌的动态添加和删除,以及判断和合并规则,确保游戏逻辑的顺畅执行。
758 浏览量
1443 浏览量
842 浏览量
1645 浏览量
625 浏览量
4068 浏览量
高中化学孙环宇
- 粉丝: 16
- 资源: 338
最新资源
- everyfile:通过目录结构递归并处理每个文件!
- flink-connector-jdbc_2.12-1.14.3.jar中文-英文对照文档.zip
- ixgen:Ixgen是又一个开源的,多平台的生成器,用于在具有全局peeringdb API的IX上进行对等配置,但是它也可以启动自己的“兼容”服务器以取得更快的结果。 Ixgen以INI或JSON样式的格式进行配置,生成自定义模板驱动或固定json样式的配置,这些配置可在终端上打印,生成文件或通过HTTP提供服务。 已计划直接访问路由器REST-API和sshscp-upload
- adhoc-client:客户端上的Adhoc-api
- rent_program
- CollectionManager:电视节目和电影收藏经理
- 行业分类-设备装置-承载平台与应用于承载平台的挠性元件.zip
- Echarts商业级数据图表库模块v1.6.0.241含源码【模块及示例大全】
- Sim-EKB-Install-2024-08-08-password-1 密码:1
- 30-半年收入分析表.zip
- command-line::keyboard:命令行选项和参数解析器
- spring-data-redis-2.0.9.RELEASE.jar中文-英文对照文档.zip
- 寄存器GPIO学习之按键操作点灯(记录个人学习)
- 基于PHP实现的曼特斯通用型网上商店系统_osc_70_电子商务(源代码+html).zip
- 行业分类-设备装置-多媒体数据传输方法及多媒体数据传输系统.zip
- WAAWire:更灵活的音频节点连接和断开连接