超级玛丽--Java课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
超级玛丽--Java课程设计
《面向对象程序设计》
课程设计报告
题目:超级玛丽软件的设计与实现
院(系):信息科学与工程学院
专业班级:计算机科学与技术1201班
学生姓名:程伟
学号:20121183011
指导教师:吴奕
20 14 年 12 月 29 日至20 15 年 1 月 9 日
华中科技大学武昌分校制
总体设计1天
详细设计1.5天
编制源程序实现3.5天
测试与修改1天
撰写课设报告2天
六、主要参考资料
[1] 张广彬. Java课程设计案例精编(第二版).北京:清华大学出版社, 2011.
[2] 耿祥义. Java课程设计(第二版).北京:清华大学出版社, 2008.
[3] 耿祥义.JAVA大学实用教程.北京:清华大学出版社,2009.
[4] 邹林达.陈国君 Java2程序设计基础.北京:清华大学出版社,2010.
[5] 邹林达.Java2程序设计基础实验指导.北京:清华大学,2010.
目录
1需求与总体设计 (2)
1.1需求分析 (2)
1.2程序功能图 (3)
1.3程序类图 (3)
2详细设计 (4)
2.1 MyFrame实现 (4)
2.1.1窗体对象的序列图 (4)
2.1.2 Myframe详细类图 (5)
2.2 Mario实现 (6)
2.2.1 Mario对象的序列图 (6)
2.2.2 Mario类图 (7)
2.3 Enemy类的实现 (8)
2.4 Obstruction类的实现 (9)
2.5 BackGround类实现 (9)
3编码实现 (10)
3.1 MyFrame类的详细代码....... 错误!未定义书签。
3.2 BackGround类的详细代码.错误!未定义书签。
3.3 Mario类的详细代码........... 错误!未定义书签。
3.4 Enemy类的详细代码........... 错误!未定义书签。
3.5 Obstruction类的详细代码错误!未定义书签。
4系统测试 (60)
4.1 游戏开始界面的测试 (60)
4.2 游戏运行的测试 (60)
4.3 排除错误的处理 (64)
总结 (64)
1需求与总体设计
1.1需求分析
提供一个友好的用户交互界面,简单明了容易操作。并且游戏有一定的难度和娱乐性。开发一个Mario类。一个场景类,以及敌人类,障碍物类。让超级玛丽能够在场景中完成各种动作。并且有场景的切换等等功能。游戏中设计了一些很有意思的陷阱,玩家一步小心掉入陷阱,超级玛丽就会死亡。这样会给人意想不到的惊奇,达到娱乐大众,增加游戏难度的效果。游戏的设计匠心独具,并且都经过了各种测试,除了为玩家增加一些意想不到的游戏陷阱以外,还必须保证玩家能够通关。
1.2程序功能图
如图1所示:
图1
1.3程序类图
系统的整体类图的框架如图2所示。首先是窗体类。他需要调用到Mario和BackGround类中的方法。以便动态的显示Mario类和BackGround。而BackGround里面又包含了Enemy和Obstruction。Enemy,Obstruction和Mario类又调用静态类StaticValue的方法,用以显示真实的图片。而StaticValue则是一个静态类,将存储在硬盘的图片资源加载进入内存以便其他模块调用。
图2
2详细设计
2.1 MyFrame实现
2.1.1窗体对象的序列图
窗体对象继承了JFrame类并且实现了Runnable接口。作为窗体对象,它首先显示窗体,绘制背景。然后启动线程。在run方法里面动态得绘制窗体中需要显示的Mario
的图片,障碍物的图片,敌人的图片。该窗体的run方法是一个死循环,每次执行一个循环调用sleep方法睡眠50毫秒。序列图如图3所示。
图3
2.1.2 Myframe详细类图
private Mario mario;//Mario对象
private boolean isStart = false;//标识游戏是否已经开始
this.paintAllEnemys(g2);//绘制所有的敌人
this.paintAllObstruction(g2);//绘制所有障碍物
2.2 Mario实现
2.2.1 Mario对象的序列图
因为需要有一个专门的线程来实时监测Mario的移动状况,和障碍物和敌人的碰撞情况。所以让Mario类继承了Runnable接口。Mario先启动线程。该线程的run方法也是一个死循环。首先根据Mario的状态changeMarioImage方法修改Mario的显示图片。再根据Mario的determinexy方法决定Mario的移动。然后通过deterMarioWithObstruction方法检测Mario和障碍物之间的碰撞,在根据marioTouchEnemys方法检测Mario和敌人之间的碰撞。然后调用sleep()方法让线程休息5毫秒。如此结束一个循环。序列图如图4所示。
2.2.2 Mario类图
类图中:
private int x;//Mario的x坐标
private int y;//Mario的y坐标
private int life;//Mario的生命
BackGround bg = null;//Mario所在的背景