山东大学面向对象上机实验.doc

山东大学面向对象上机实验.doc

ID:59204101

大小:231.50 KB

页数:7页

时间:2020-09-10

山东大学面向对象上机实验.doc_第1页
山东大学面向对象上机实验.doc_第2页
山东大学面向对象上机实验.doc_第3页
山东大学面向对象上机实验.doc_第4页
山东大学面向对象上机实验.doc_第5页
资源描述:

《山东大学面向对象上机实验.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、面向对象上机实验(solitaire纸牌游戏)一、实验要求和目的单人纸牌游戏,牌桌上有7个堆共28张牌,第一堆1张牌,第二堆2张……第7堆7张,每一堆的第一张牌朝上,其他朝下。牌桌上还有4个suitpiles,一个deckcard堆和一个discardcard堆,布局参考windows的纸牌游戏。设计一个简单的CardGames程序,运用面向对象封装、继承、抽象类、抽象方法、多态、动态绑定等概念。二、开发环境硬件环境:win7软件环境:eclipseVersion:LunaRelease(4.4.0)三、小组成员及分工四、实验分析1.此程序需要完成要求:牌桌上有7个堆共28张

2、牌,第一堆1张牌,第二堆2张……第7堆7张,每一堆的第一张牌朝上,其他朝下。同时牌桌上还有4个suitpiles,一个deckcard堆和一个discardcard堆来放置纸牌。通过鼠标的点击和拖动等操作,实现游戏的进行。2.任务定义:(1)如何存储和定义52张牌,所选择的储存结构需要便于实现实验给出的题目要求。(2)如何设计鼠标操作程序,实现纸牌的拖动和放置,实现只有当纸牌拖动到合适的位置才可放置。(3)如何设计翻牌程序,包括点击DiscardPile堆中的纸牌的翻牌,以及桌面纸牌当移走最上方的纸牌后的自动翻牌。(4)如何设置纸牌的初始化:实现随机配牌。3.原始数据的输入:

3、由于在程序中引入随机数生成器随机配牌,因此程序不需要任何形式的输入,只需用户选择执行或不执行此程序,程序执行后,用户进行相应的操作执行游戏。一、实验内容1.主要技术这次的设计主要囊括了面向对象中的封装,多态,继承中的特化子类化等概念。2.主要思路先定义纸牌拥有的包括大小花色数值和图片的属性,接着创建牌堆类,有5种牌堆,先编写一个总牌堆CardPile,定义好其属性,然后通过对基类CardPile的继承和改写实现其他的几个牌堆。牌堆的方法有判空,得到top的纸牌,弹出纸牌,以及接受纸牌,是否能接受纸牌等等的方法。其中discardpile类增加一个加牌的方法,suitpile类

4、中添加了判断纸牌是否能放入的方法,tablepile类的实现重写了总牌堆的某些方法,加了是否选中纸牌的方法。得到纸牌的花色,点数以及各类其他属性的方法。同时还定义了一个暂存移动的牌的牌堆(movecardpile)的类,多了一个size(),和移除增加牌的方法。3.主要代码Card.java:定义了牌堆的基本特性和操作,作为基类,便于后面各类牌堆的继承使用。publicclassCardPile{protectedintx;protectedinty;publicStackthePile;publicCardPile(intxl,intyl){x=xl;y=yl;

5、thePile=newStack();//将牌堆的数据结构定义为堆栈}publicCardtop(){//显示最上层,否则返回空if(!(thePile.empty()))return(Card)thePile.peek();elsereturnnull;}publicbooleanisEmpty(){//判断牌堆是否为空returnthePile.empty();}publicCardpop(){try{return(Card)thePile.pop();//将堆栈中的第一张牌弹出}catch(EmptyStackExceptione){returnnull;}

6、}publicbooleanincludes(inttx,intty){//通过牌的坐标和宽高判断是否在区域内部returnthis.x<=tx&&tx<=this.x+Card.width&&this.y<=ty&&ty<=this.y+Card.height;}publicintselect(inttx,intty){//select执行响应鼠标单击的行为if(includes(tx,ty)){if(isEmpty())return-2;elsereturnthePile.size()-1;}elsereturn-1;}//同名多方法调用publicvoidaddCard

7、(Objectcard){Cardcards;if(cardinstanceofArrayList){for(intn=0;n<((ArrayList)card).size();n++)thePile.push(((ArrayList)card).get(n));}else{cards=(Card)card;thePile.push(cards);}}publicvoidremoveCard(Collectioncard){thePile.removeAll(card

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。