Java 小游戏(骑士大战魔王)

小组完成的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类:负责主游戏的键盘输入处理。

构造方法摘要

InputManager() 
          默认构造方法

InputManager(JMainGamePanel contentPanel, Knight knight) 
          带主面板类及骑士对象的构造方法

InputManager(Knight knight) 
          带骑士对象的构造方法


方法摘要

 Knight

GetKnight() 
          获得当前骑士对象

 boolean

IsFightPressed() 
          是否按下攻击键

 boolean

IsMovePressed() 
          是否按下移动键

 void

keyPressed(java.awt.event.KeyEvent e) 
          按键按下处理事件

 void

keyReleased(java.awt.event.KeyEvent e) 
          按键释放处理事件

 void

keyTyped(java.awt.event.KeyEvent e) 
          按键类型

  • 11
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以给你提供一个简单的回合制游戏Java实现,具体实现方法如下: 1. 首先定义一个游戏角色类,包含角色的基本属性和方法,例如名称、生命值、攻击力、防御力等。可以定义一个抽象类或者接口作为基类,再派生出具体的角色类。 ``` public abstract class Character { protected String name; protected int hp; protected int attack; protected int defense; public Character(String name, int hp, int attack, int defense) { this.name = name; this.hp = hp; this.attack = attack; this.defense = defense; } public void attack(Character target) { int damage = this.attack - target.defense; if (damage > 0) { target.hp -= damage; System.out.println(this.name + "攻击了" + target.name + ",造成了" + damage + "点伤害"); } else { System.out.println(this.name + "攻击了" + target.name + ",但是没有造成伤害"); } } public boolean isDead() { return this.hp <= 0; } } public class Hero extends Character { public Hero(String name, int hp, int attack, int defense) { super(name, hp, attack, defense); } public void skill(Character target) { int damage = this.attack * 2 - target.defense; if (damage > 0) { target.hp -= damage; System.out.println(this.name + "使用技能攻击了" + target.name + ",造成了" + damage + "点伤害"); } else { System.out.println(this.name + "使用技能攻击了" + target.name + ",但是没有造成伤害"); } } } public class Monster extends Character { public Monster(String name, int hp, int attack, int defense) { super(name, hp, attack, defense); } } ``` 2. 定义一个游戏控制类,包含游戏的基本逻辑和流程,例如游戏开始、角色选择、回合制战斗等。 ``` import java.util.Scanner; public class Game { private Character hero; private Character monster; public void start() { System.out.println("欢迎来到回合制游戏!"); System.out.println("请选择你的角色:"); System.out.println("1. 勇士(生命值:100,攻击力:20,防御力:10)"); System.out.println("2. 法师(生命值:80,攻击力:30,防御力:5)"); Scanner scanner = new Scanner(System.in); int choice = scanner.nextInt(); if (choice == 1) { hero = new Hero("勇士", 100, 20, 10); } else if (choice == 2) { hero = new Hero("法师", 80, 30, 5); } else { System.out.println("无效的选择"); return; } monster = new Monster("魔王", 150, 25, 15); System.out.println("游戏开始!"); while (true) { heroTurn(); if (monster.isDead()) { System.out.println("你赢了!"); break; } monsterTurn(); if (hero.isDead()) { System.out.println("你输了!"); break; } } } private void heroTurn() { System.out.println("你的回合:"); System.out.println("1. 普通攻击"); System.out.println("2. 技能攻击"); Scanner scanner = new Scanner(System.in); int choice = scanner.nextInt(); if (choice == 1) { hero.attack(monster); } else if (choice == 2) { ((Hero) hero).skill(monster); } else { System.out.println("无效的选择"); } } private void monsterTurn() { System.out.println("魔王的回合:"); monster.attack(hero); } } ``` 3. 在main函数中创建游戏对象并启动游戏。 ``` public static void main(String[] args) { Game game = new Game(); game.start(); } ``` 这样就完成了一个简单的回合制游戏的实现,你可以根据需要修改和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值