小组完成的java期中作业(也是我们第一次团队合作做的小程序,总体感觉不错分享一下)
总体架构是我们的组长,非本人,本人负责跑步模块和欢迎界面
前 言
这是第一次使用java语言和Myeclipse集成开发环境进行多人协作开发一款小游戏,其实,我之前就想让多个人开发一个小程序或软件。毕竟,以后到公司去,开发任何的软件都不是一个人能完成的,如何从现在开始就锻炼大家的团结协作的能力显得非常重要,如果能将多个人的力量有效地整合,就能实现1+1大于2的效果,否则,就无法进行软件的开发。即使一个人的能力很强,如果不能学会与人协作,在这样的社会恐怕不能够生存下去。
本次开发的游戏是RPG(角色扮演)游戏,这样的游戏我们经常见到。本来老师要求是文字版的RPG,我想尽量接近通常玩的那种游戏,尽量少使用文字,当然,如果以目前的知识无法实现的,可以用文字来描述。我们应该以高标准来要求自己,这样才能真正的锻炼自己。
1. 任务分工:(暂定)
张**(组长):负责整体的架构设计及主游戏模块。
房*(组员):跑步模块及游戏介绍模块。
南**(组员):智力闯关模块及帮助模块。
白*(组员):飞镖模块及地图模块。
2. 对所有成员要求:
1).小组成员必须按时完成各自的任务。
2).设计上与技术上有问题的先自行解决(看书、上网查),如不能解决的集体讨论解决。有其它的问题及时提出来!
3).必须写文档(写把各自模块的整体设计用UML图或Viso画的图(尽量不要只是简单的语言叙述)表达出来),学会用面向对象的思想来来设计,采用模块化的思想分解模块。(设计原则与设计模式能用的用)
4)每个类必须有类说明,每个函数也必须有函数说明,函数的具体设计也必须有必要的注释。
5)如果不能遵守规定或要求的可以提前退出,不强留。
(注:即使不会写代码,也没关系,只要一能用UML图或其他的图等表达出自己的设计思想及具体的实现设计也行)
3. 说明:
运行环境:Myeclipse集成开发环境,jdk 1.6版本。
使用语言:Java语言。
版本控制:SVN进行版本控制。
代码管理:Google Code 进行上传下载以实现多人同时开发。
一. 需求分析:
1.1 游戏背景:
时代:剑与魔法的中古骑士时代。
国家:神圣的卡拉斯王国。
社会结构:卡拉斯王国是由多数农民和少数骑士所组成的王国,因此没有和魔王对抗的能力,
背景介绍:
卡拉斯王国的统治者是现任的国王卡拉斯七世,但由于由于受到魔王的危害,使得王国受到了威胁,整个王国实际上被魔王控制,小公主已经在上一次魔王手下的来袭时被抓走了。
一天,在一个残破的村庄,一名有名骑士的妻子生了四个孩子,三个男孩,一个女孩,据村里人说:这四个孩子可能是神之子,他们从小就各个力大无比、与众不同。他们分别是:
人物角色:恶灵骑士、幻影骑士、火龙骑士、玉女骑士。
当他们长到十几岁时,父母告诉他们整个王国都被魔王所控制,国王和公主都被软禁。于是,他们立志要打败魔王,拯救自己的国家。
但他们现在年纪还小,且实力还无法与魔王抗衡。
必须先进行训练(跑步、智力闯关、飞镖练习),获得一定的体力值、智力值及武艺值后,才能出去征战,夺回被魔王占领的土地。要想打败魔王,必须先取得传说中的勇者之剑及勇者之铠。勇者之铠被放置在大陆西边的神殿里,那里已经被魔王的部下所占领了;勇者之剑则要取得大陆南边火山里的金属,再交给老铁匠来打造,老铁匠被魔王绑在大陆东边的暗室里。骑士先来到大陆西边的神殿,打败了占领此地的魔王手下,取得了勇者之铠。接下来南边的火山,在通过了迷宫洞窟的考验后,找到了可以打造勇者之剑的神秘金属。带着神秘的金属去解救被绑的老铁匠,将神秘金属交给他,就可以打造出勇者之剑。有了勇者之剑和勇者之铠之后,前往魔王的宫殿与魔王展开决战,在打败了魔王救回公主后,使王国恢复了和平,而骑士也和公主结婚成为下一任的国王。
1.2游戏设置:
可选人物角色:恶灵骑士、幻影骑士、火龙骑士、玉女骑士。
人物成长等级:0-13。
普通装备:铠甲、盾牌、头盔、战靴、利剑、魔刀等。
(这些装备可以在店铺使用金币购买)
特殊装备:勇者之剑、勇者之铠。
生存值:体力值(血量)、智力值(防御力)、武艺值(攻击力)。
(体力值越高,血量越多;
智力值越高,防御力越高。
武艺值越高,攻击力越高)
训练内容:跑步(获得血量值)
智力闯关(获得防御值)
飞镖练习(获得攻击值)
地图:大陆西边(放着勇者之铠)
大陆南边(铸造勇者之剑的金属)
大陆东边(铸剑师)
大陆北边(魔王的的宫殿)
地图如下:(找个游戏地图)
1.3.功能需求:
A.任务整体分为两大块:
1) 训练阶段(跑步、智力闯关、飞镖练习)。
2) 征战阶段(到西边获取勇者之铠、到南边获取铸造勇者之剑的金属、到东边解救铸剑师、到北边大战魔王)。
B.设计需求:(单机版窗体显示)
1)显示各模块的窗体设计。
2)读文件或读数据库中数据的模块设计。
3)加载音乐的模块。
4)不同人物及资源类的设计。
C.用例图:
D.功能模块图:
二 、总体设计
1. 架构设计:
1) 采用MVC的架构模式
A. 包UI(视图、界面层):只负责界面的显示。
B. 包Business(业务逻辑层):核心业务的处理。
C. 包DataAccess(数据访问层):读写数据。
2) 文件组织结构:
2. 业务处理流程图:
3. UML图:
MVC架构图
A. 主模块设计:
B. 训练模块:
1)跑步模块:
2)飞镖模块:
3)智力模块
三. 详细设计:
1. UI包:
(1).CommonFrm类:
公共窗体,其他窗体都继承自它,保持窗体的一致性,其设置了窗体的大小和显示位置。
(2).JMainMenuFrm类:
显示游戏主菜单,包括:新建游戏、加载游戏、游戏设置、游戏帮助及退出按钮。
(3)JPlayGameFrm类:
主游戏显示窗口,主要显示游戏。
(4)JLaborTrainFrm类:
体力训练模块(跑步)界面。
(5)JIntelligenceTrainFrm类:
智力训练界面(走迷宫)界面。
(6)MartialArtsTrainFrm类:
武艺训练(射击)界面。
(7)JSettingFrm类:
游戏设置界面。
(8)JSkillTraining类:
选择开始主游戏还是个训练的界面。
(9)JGameDescription类:
游戏简介。
2. Business大包:
A. 输入管理包(Business.Input)
(1).InputManager类:负责主游戏的键盘输入处理。
构造方法摘要 |
|
|
|
方法摘要 |
|
|
|
|
|
|
|
|
|
|
|
|
|
(2) RunKeyDown类:跑步模块的输入类
|
|
|
|
|
|
|
|
B. 面板管理包(Business.PanelManager)
(1).JMainGamePanel类:负责主游戏的面板业务逻辑,通过重写paintComponet(Graphics g)方法,来加载显示的界面。
构造方法摘要 |
|
|
|
方法摘要 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
C. 人物类管理包(Business.PersonFile)
(1).Person类:
构造方法摘要 |
|
|
|
方法摘要 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(2).Knight类:
构造方法摘要 |
|
|
|
|
|
方法摘要 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
获得人物数 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(3).Demon类:
构造方法摘要 |
|
|
|
|
|
方法摘要 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
D. 资源管理包(Business.ReourceManager)
(1).ResourceManager类:
构造方法摘要 |
|
|
方法摘要 |
|
|
|
|
|
(2).SoundManager类:
构造方法摘要 |
|
|
方法摘要 |
|
|
|
|
|
|
|
|
|
|
|
|
|
(3).FileManager类:
构造方法摘要 |
|
|
方法摘要 |
|
|
|
|
|
|
|
|
|
|
|
|
|
E. 换武器包(Business.WeaponBehaviour)
(1).ChangeWeapon接口
方法摘要 |
|
|
|
|
|
|
|
|
|
|
|
|
|
(2).AxeWeapon类:
实现以上接口。
(3).KnifeWeapon类:
实现以上接口。
(4).HammerWeapon类:
实现以上接口。
(5).Weapon类:
方法摘要 |
|
|
|
|
|
|
|
|
|
|
|
|
|
F. 跑步训练包(Business.LaborTrain)
(3) RunPanel类:
构造方法摘要 |
|
|
|
方法摘要 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
G. 智力训练包(Business.Intelligence)
(1) showinteligence类:
方法摘要 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
H. 射箭训练包(Business.MartarialArt)
(1)主要的类和接口:
武艺训练窗体类:Class JMartialArtsTrainFrm{};
武艺训练面板类:Class JMartialArtsTrainPanel{};
接口:interface Draw{};
(2)主要的方法有:
2.1构造方法public JMartialArtsTrainPanel(){};
2.2飞镖的计时器
timer1.schedule(new TimerTask() {
2.3 盘的计时器
timer2.schedule(new TimerTask() {
2.3 绘制骑士最后输赢状态
public void drawGame(Graphics g)
2.4 判断飞镖是否可以移动
public boolean JianMove()
2.5 设置计分制,飞镖射击靶数等
public void drawValue(Graphics g)
2.6 显示当前分数
public void drawScore(Graphics g)
2.7从JPanel派生子类,复写父类中paintComponent(Graphics g)方法。
@Override
protected void paintComponent(Graphics g)
3. DataAcess包:
(1). 加载文件类(LoadImage)
主要方法
|
loadImage |
|
LoadImageIcon |
(2). 加载音乐类(LoadMusic)
方法摘要 |
|
|
|
|
|
|
|
|
|
|
|
|
|
(3). 读文本文件类(ReadData)
方法摘要 |
|
|
|
|
|
|
|
方法摘要 |
|
|
|
|
|
|
|
|
写整型数据 |
四. 测试与实现:
1. 欢迎界面
2、游戏主菜单界面
新建游戏,进入游戏简介
3. 游戏选择菜单界面
4. 主游戏界面
5. 跑步训练游戏界面
6. 射箭训练游戏界面
7. 智力训练游戏界面
8. 游戏设置界面
9. 帮助界面
五. 总结:
张**的总结:
通过对RPG游戏的开发,使我学到了很多东西,但我认为最重要的是如何多人协作共同开发一款软件,这是最重要的东西,因为现在的软件的都是多人同时并行开发,没有单打独斗的软件了,学会与人协作就显得十分重要了。如何有效的协调每个人的任务,如何使得四个人相加的结果大于4.这是一门很深的学问,还需要继续学习。但我觉得我们这一组,不管是任务分工,还是沟通交流都还不错,大家也都很尽力。从最后完成的作品来看,效果还不错。
我们在软件的架构初期,就用了MVC这样的好的框架,这为后面的不同类之间的访问和协调都提供了好的框架基础。这一点我觉得做的比较好。也有效的分装了变化,为软件的扩充打下了坚实的基础。在软件的设计过程中也是遇到了各种问题,从最初的什么都不会,到遇到各种困难然后逐一解决,再到最后完成了整个软件,在这其中有最初的BUG到处有的痛苦、也有解决了某个问题时的激动等酸甜苦辣。正是由于我们不惧困难,坚持不懈,有着不解决它就誓不罢休的精神,才使得我们坚持到最后,并很好地完成它。当然,学到的东西只有自己清楚,不光是java的技术,更是软件设计及沟通协作的思想和技巧。
房*的总结:
通过这次小组一起开发RPG游戏,总体感觉学了不少知识,一些通过组长的讲解整体架构和参看组长的代码,另外通过自己查找资料,感觉组长的整体架构非常好,同时也感觉到java语言编程比较容易上手,更加增加我对java语言的学习兴趣。 在编写代码过程中遇到过不少的问题,通过不段的思考,反复修改和寻求组长等组员帮助,最终解决了问题。感觉在小组中,相互之间学到很多,而且编起代码来更有激情,看到了别人的编程思想,学习他人,改进自己,学习非常高效。
南**总结:
这次RPG游戏的制作,非常的感谢组长的努力,为我们的整体构架打下了非常好的基础,运用了mvc架构方式,第一次了解到,感觉整体架构非常清晰,修改和添加都非常容易,是一个非常好的架构模式,并且在主框架下,用到了组长所写的的一些函数,使我的智力模块的编写如雨得水,通过此次的RPG游戏编写,熟悉了封装类的实现,不仅使代码非常清晰,而且容易读懂,这次的编写让我对java产生了深深的兴趣,更会激励我在未来的路上好好学习
白*总结:
飞镖模块的整体设计过程还算是比较顺利的,没有什么过多的算法,就只要实现分数的计算就行。在一开始还没有学习Java Swing图形用户界面的时候,觉得游戏无从下手,在组长已经设计好整个框架的时候还是不知道怎么做,我的模块也就做的有点晚了,开始只实现了飞镖的移动,盘没有设置成移动的,游戏玩起来玩家只可以控制飞镖的发射,操作是否进行下一轮的游戏,而且分数都是随机生成的,这样一来,感觉整个游戏失去了趣味性。后来在组长的审查和小组讨论后,对游戏做了进一步改进,首先让盘也动起来,然后让玩者控制什么时候发射飞镖,并且可以对飞镖的速度进行操控,这样便使得游戏玩着更有趣了。整个飞镖模块的游戏界面友好,符合主题,基本功能也实现了。期间遇到了各种各样的问题,但是在请教我们的组长和其他成员之后,问题得到了解决,通过这些错误的修改,个人的分析能力也得到了加强。对于我们小组的整个RPG游戏设计,由我们组长精心策划,为我们设计出了MVC这样好的框架,并为大家分配好了每个人的任务,我们都在组长的指导下顺利的完成了我们的任务。以后希望还会有这样的合作学习,向大家学习更多的东西,不断扩展自己的知识面。
软件的优点:有漂亮的图形界面,有很好的架构设计,用户体验较好,功能多样以满足不同玩家的需求,有游戏帮助及游戏设置等完善的功能等。
软件的缺点:部分功能还未实现,如商店购买装备等。有些地方还可以进一步改进。
总体而言,软件较好的完成了功能需求!***
源代码:http://download.csdn.net/detail/fangxin205/7337163
转载自原文链接, 如需删除请联系管理员。
原文链接:Java 小游戏(骑士大战魔王),转载请注明来源!