《面向对象程序设计》课程设计报告题目:斗地主软件设计与实现院(系):信息科学与工程学院专业班级:计算机科学与技术1201班学生姓名:程伟学号:20121183011指导教师:吴奕2014年12月29日至2015年1月9日华中科技大学武昌分校制面向对象程序设计课程设计任务书一、设计(调查报告/论文)题目斗地主软件设计与实现二、设计(调查报告/论文)主要内容内容:设计一个斗地主游戏,玩家可以通过键盘或鼠标控制游戏区,游戏设定不同级别,级别越高难度越大,玩家可以根据自己的需要自由设定初始游戏级别,当玩家取得的分数到达一定水平时游戏自动进入下一个级别。游戏以最终玩家获得的分数来判断玩家水平的高低。基本功能与要求:使用Eclipse和JDK1.6工具,操作系统为WINDOWS,采用面向对象方法完成,包括总体设计、详细设计、编码实现、测试。设计要求如下:①游戏由模块组成:游戏区模块,游戏控制模块,级别设置模块和帮助模块。②游戏区模块,为玩家提供主体游戏功能,能够处理玩家的各种游戏操作,显示得分情况,并最终显示游戏结果。③游戏控制模块,该模块为玩家提供游戏控制功能,应包括开始游戏,暂停游戏和退出游戏三部分功能。④级别设置模块为玩家提供自行设置游戏的初始级别功能,主要提供初级,中级和高级三个游戏初始级别设置。三、原始资料1.《面向对象程序设计课程设计》指导书2.耿祥义.JAVA大学实用教程.北京:清华大学出版社,2009.四、要求的设计(调查/论文)成果1.课程设计报告2.课程设计软件五、进程安排布置任务,查找资料、需求分析1天总体设计1天详细设计1.5天编制源程序实现3.5天测试与修改1天撰写课设报告2天六、主要参考资料[1]张广彬.Java课程设计案例精编(第二版).北京:清华大学出版社,2011.[2]耿祥义.Java课程设计(第二版).北京:清华大学出版社,2008.[3]耿祥义.JAVA大学实用教程.北京:清华大学出版社,2009.[4]邹林达.陈国君Java2程序设计基础.北京:清华大学出版社,2010.[5]邹林达.Java2程序设计基础实验指导.北京:清华大学,2010.指导教师(签名):20年月日目录1需求与总体设计..........................................................11.1需求分析..............................................................11.2总体设计..............................................................11.3功能图................................................................11.4类图..................................................................22详细设计................................................................32.1主类Main..............................................................32.2类Card................................................................32.3类CardType............................................................42.4类Common..............................................................42.5类Model...............................................................52.6类Time................................................................53编码实现................................................................63.1JAVA编码实现.........................................................64系统测试...............................................................444.1测试结果.............................................................444.2排错处理.............................................................46总结.........................................................................................................................................................4711需求与总体设计1.1需求分析游戏设计需要用到牌Card的正反面及牌的移动,还有CardType设计出牌种类,还有各种牌的形式,还要设计几个人玩游戏,抢地主的方法,出牌倒计时,出牌和不出牌等等,另外还要设计54张牌,打牌出现的各种结果。1.2总体设计本游戏实现了图形界面的设计、游戏区模块,游戏控制模块,级别设置模块和帮助模块。为玩家提供主体游戏功能,能够处理玩家的各种游戏操作,并最终显示游戏结果。1.3功能图登入主界面创建游戏进行游戏叫地主出牌过牌判定大小决定胜负21.4类图+mouseClicked(MouseEvent):void()+mouseEntered(MouseEvent):void()+mouseExited(MouseEvent):void()+mousePressed(MouseEvent):void()+mouseReleased(MouseEvent):void()+turnFront():void()+turnRear():void()-canClick:boolean-clicked:boolean-up:boolean-name:String-main:MainCard+CardInit():void()+Init():void()+SetMenu():void()+actionPerformed(ActionEvent):void()-container:Container-dizhu:JLabel-dizhuFlag:int-landlord[]:JButton-nextPlayer:boolean-publishCard[]:JButton-start:JMenultem-time[]:JTextField-turn:intMain+run():void()-i:intNewTimer+AI_1(ListString,ListCard,ListString,int):void()+AI_2(ListString,ListString,ListCard,ListString,int):void()+AI_3(ListString,ListCard,ListString,int):void()+AI_4(ListString,ListString,ListCard,ListString,int):void()+AI_5(ListString,ListString,ListCard,ListString,int):void()+ShowCard(int):void()+computer0():void()+computer2():void()+openlord(boolean):void()+run():void()+second(int):void()+timeWait(int,int):void()+turnOn(boolean):void()+win():boolean()-i:int-isRun:boolean-main:MainTimeNewSingCommonModel11mainmain32详细设计2.1主类Main图表说明如下:创建菜单功能按钮publicvoidInit()初始化窗体publicvoidInit()发牌洗牌publicvoidCardInit()抢地主publicvoidgetLord()2.2类Card(1)类图+mouseClicked(MouseEvent):void()+mouseEntered(MouseEvent):void()+mouseExited(MouseEvent):void()+mousePressed(MouseEvent):void()+mouseReleased(MouseEvent):void()+turnFront():void()+turnRear():void()-canClick:boolean-clicked:boolean-up:boolean-name:String-main:MainCard(2)说明:该类主要是设计牌面的正反、牌之间的距离、移动(即出牌时向前移动纸牌),其中有:booleanup;//是否正反面;booleancanClick=false;//是否可被点击4booleanclicked=false;//是否点击过;Stringname;//图片url名字Mainmain;//Main类的引用2.3类CardTypepublicenumCardType列出各种出牌的类型出牌类型单牌,对子,不带,炸弹;3带1、带2,3带2个单、或者一对;4带2对;连子、连队;飞机、飞机带单排.、飞机带对子.不能出牌2.4类Common1)判断牌型publicstaticCardTypejugdeType()2)移动效果的函数,用于发牌publicstaticvoidmove()3)对牌的排序publicstaticvoidorder()4)重新定位flag代表电脑1,2或者是我publicstaticvoidrePosition()5)地主牌权值,看是否抢地主publicstaticintgetScore()6)返回花色publicstaticintgetColor()7)得到最大相同数publicstaticvoidgetMax()8)拆牌publicstaticModelgetModel()各种对子、顺子、飞机、炸弹9)拆连子publicstaticvoidget123()10)拆双顺publicstaticvoidgetTwoTwo()511)拆飞机publicstaticvoidgetPlane()12)拆炸弹publicstaticvoidgetBoomb()13)拆3带publicstaticvoidgetThree()14)拆对子publicstaticvoidgetTwo()15)拆单牌publicstaticvoidgetSingle()16)隐藏之前出过的牌publicstaticvoidhideCards()17)检查牌的是否能出publicstaticintcheckCards()2.5类Model各种牌型publicclassModelListStringa1=newArrayListString();//单张ListStringa2=newArrayListString();//对子ListStringa3=n