版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象上机实验(solitaire纸牌游戏)1、 实验要求和目的 单人纸牌游戏,牌桌上有7个堆共28张牌,第一堆1张牌,第二堆2张第7堆7张,每一堆的第一张牌朝上,其他朝下。牌桌上还有4个suitpiles,一个deck card堆和一个discard card堆,布局参考windows的纸牌游戏。 设计一个简单的CardGames程序,运用面向对象封装、继承、抽象类、抽象方法、多态、动态绑定等概念。2、 开发环境硬件环境:win7软件环境:eclipse Version: Luna Release (4.4.0)3、 小组成员及分工4、 实验分析1. 此程序需要完成要求:牌桌上有7个堆共2
2、8张牌,第一堆1张牌,第二堆2张第7堆7张,每一堆的第一张牌朝上,其他朝下。同时牌桌上还有4个suitpiles,一个deck card堆和一个discard card堆来放置纸牌。通过鼠标的点击和拖动等操作,实现游戏的进行。2. 任务定义:(1) 如何存储和定义52张牌,所选择的储存结构需要便于实现实验给出的题目要求。(2) 如何设计鼠标操作程序,实现纸牌的拖动和放置,实现只有当纸牌拖动到合适的位置才可放置。(3) 如何设计翻牌程序,包括点击DiscardPile堆中的纸牌的翻牌,以及桌面纸牌当移走最上方的纸牌后的自动翻牌。(4) 如何设置纸牌的初始化:实现随机配牌。3. 原始数据的输入:
3、由于在程序中引入随机数生成器随机配牌,因此程序不需要任何形式的输入,只需用户选择执行或不执行此程序,程序执行后,用户进行相应的操作执行游戏。5、 实验内容1.主要技术这次的设计主要囊括了面向对象中的封装,多态,继承中的特化子类化等概念。 2.主要思路 先定义纸牌拥有的包括大小花色数值和图片的属性,接着创建牌堆类,有5种牌堆,先编写一个总牌堆CardPile,定义好其属性,然后通过对基类CardPile的继承和改写实现其他的几个牌堆。牌堆的方法有判空,得到top的纸牌,弹出纸牌,以及接受纸牌,是否能接受纸牌等等的方法。其中discardpile类增加一个加牌的方法,suitpile类中添加了判断
4、纸牌是否能放入的方法,tablepile类的实现重写了总牌堆的某些方法,加了是否选中纸牌的方法。得到纸牌的花色,点数以及各类其他属性的方法。同时还定义了一个暂存移动的牌的牌堆(movecardpile)的类,多了一个size(),和移除增加牌的方法。 3.主要代码Card.java:定义了牌堆的基本特性和操作,作为基类,便于后面各类牌堆的继承使用。public class CardPile protected int x;protected int y;public Stack thePile;public CardPile (int xl, int yl) x = xl;y = yl;the
5、Pile = new Stack();/将牌堆的数据结构定义为堆栈public Card top() /显示最上层,否则返回空if(!(thePile.empty()return (Card)thePile.peek();elsereturn null;public boolean isEmpty() /判断牌堆是否为空return thePile.empty();public Card pop() try return (Card)thePile.pop();/将堆栈中的第一张牌弹出 catch (EmptyStackException e) return null; public bool
6、ean includes (int tx, int ty) /通过牌的坐标和宽高判断是否在区域内部return this.x = tx & tx = this.x + Card.width &this.y = ty & ty = this.y + Card.height;public int select (int tx, int ty) /select 执行响应鼠标单击的行为if(includes(tx,ty)if(isEmpty()return -2;else return thePile.size() - 1;elsereturn -1;/同名多方法调用public void addCa
7、rd (Object card)Card cards;if(card instanceof ArrayList)for(int n=0;n(ArrayList) card).size();n+)thePile.push(ArrayList) card).get(n);elsecards = (Card)card;thePile.push(cards);public void removeCard (Collection card)thePile.removeAll(card);public boolean isCanAdd(Card card)return false; public void
8、 display (Graphics g)/显示整副牌堆if (isEmpty()Image image= null; try String picture = picture/0.png; image = ImageIO.read(new File(picture); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();System.out.println(class-CardPile-display-if(isEmpty(); g.drawImage(image,this.x,this.y,C
9、ard.width,Card.height, null);elsetop().setX(x);top().setY(y);top().draw(g);DiscardPile.java:通过对CardPile的继承并改写,实现单击左上角的牌叠来拖动更多纸牌。public class DiscardPile extends CardPile public DiscardPile (int x, int y) super (x, y); /调用父类的构造方法public void addCard (Object card)Card cards;if(card instanceof ArrayList
10、)cards=(ArrayList) card).get(0);elsecards = (Card)card;if (!(cards.isFaceup()cards.setFaceup(true);thePile.push(cards);DeckPile.java:直接继承自Cardpile类,为旁边牌堆获取的纸牌提供一个放置的牌堆。public class DeckPile extends CardPile public DeckPile (int x, int y) super(x, y);4.实验结果 纸牌游戏的主界面游戏结束的界面6、 结论分析与体会 通过这个学期的对面向对象的学习和实验,让我对面向对象有了更
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 四川省泸州市泸县五中2024-2025学年高一(上)期末生物试卷(含答案)
- 习作:我的家人 说课稿-2024-2025学年语文四年级上册统编版
- 钼产品深加工技术改造产能提升项目可行性研究报告写作模板-申批备案
- 广西壮族自治区南宁市2024-2025学年八年级上学期期末生物试题(无答案)
- 安徽省淮北市和淮南市2025届高三第一次质量检测历史试卷(含答案)
- 陕西省宝鸡市(2024年-2025年小学六年级语文)部编版期中考试((上下)学期)试卷及答案
- Unit 2 Making a Difference Developing ideas The power of good 说课稿-2023-2024学年高一英语外研版(2019)必修第三册
- Unit 1 developing the topic-Oral communication 说课稿 2024-2025学年仁爱科普版(2024)七年级英语上册
- 贵州黔南经济学院《数据结构Ⅰ》2023-2024学年第一学期期末试卷
- 新疆塔城地区(2024年-2025年小学六年级语文)统编版综合练习((上下)学期)试卷及答案
- YY 0016-1993低频电子脉冲治疗仪
- GB/T 16758-2008排风罩的分类及技术条件
- 银行分管财务副行长个人述职报告4篇全文
- 学校信息中心述职报告(共3篇)
- 小说与散文的区别课件
- 景德镇绿地昌南里项目视频讨论会ua根据0108意见修改
- 豆腐的制作工艺及配方
- DB-T 29-202-2022 天津市建筑基坑工程技术规程
- 福建省社会体育指导员信息表
- DB51∕T 5060-2013 四川省预拌砂浆生产与应用技术规程
- 珠心算习题汇总(可以打印版A4)
评论
0/150
提交评论