8000 GitHub - polarstormx/java-final: 葫芦娃大作业
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

polarstormx/java-final

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

葫芦娃大作业介绍

程序运行简介

对战方式

在两台连接到同一局域网下(例如同一路由器下)的机器上分别运行项目,在两台机器上分别点击开始游戏。

在之后的选择界面中,某方玩家首先选择正义方(老爷爷图像),根据显示的提示信息等待另一方玩家的进入;另一方玩家选择蝎子精图像(黑暗方),两人自动匹配进入对战界面。 【注意,选择时图像高亮是正确的反应】

在等待入场动画结束后(),正义方可以首先开始移动、攻击操作;操作步数用完后,邪恶方将可以操控,依次循环。

  • 双方界面的顶部会显示剩余的步数,(小喽啰的移动不耗费步数);
  • 双方界面的左侧上部会显示技能栏,技能栏中最多出现三个选项,玩家可以根据根目录下生成的帮助文档(helpDoc.txt),根据需要选择释放的技能。
  • 双方界面的左下方会显示人物信息栏,信息栏会给出人物的姓名、血量和魔力值。
  • 点击右上方的保存按钮可以将之前的战斗过程保存下来。
  • 点击右上方的叉按钮可以退出游戏(退出按键设置了高亮)
  • 鼠标移动时,人物下方会出现高亮的选中圆环,信息栏会更新。鼠标点击人物时,技能栏会更新。

【若点击过快,部分动画可能无法生成完全】

播放方式

在开始界面中选择读取文件选项,在弹出的对话框内选择之前保存或者我们提供的示例xml文件,程序将自动播放对战历程至结束。 提供的示例文件为根目录下的battle Result.xml. 播放模式的播放速度将比程序实际运行时的速度快数倍。

【若存档路径中含有中文,可能因为为编码问题报错】

类、包结构简介 与 工作分配

本项目主要由三个部分构成:

  • 战斗逻辑部分
  • 图形化部分
  • 联网部分

主要包含以下几个包:

  • battle.view 负责图形化界面的设计工作
  • net 负责联网功能
  • unit 单位的设计与逻辑
  • battle 对战的交互控制与图形化
  • battle.conf 相关配置文件
  • battle.rec 回放功能文件
  • Ground 地面坐标与图形坐标转化的辅助工具

此外还有HelpDocGenerator文件负责生成帮助文档等等。

类间关系

  • unit包中,
    • 各种人物类均以HULUCharacter为基类,蝎子精等类拥有控制一些其他单位的能力;HuLuCharacter实现了Runnable接口;基类中定义了人物 的移动、攻击等行为。其中部分参数进行了原子化,以保证线程安全。
      • 蝎子精对喽啰类具有操控能力,在其中维护了一个列表进行命令和交互。
    • 每个具体的人物类均实现了注释接口IsCharacter,可以更快更好地生成帮助文档。(帮助文档的生成见HelpDocGenerator)
  • ground 包中:
    • Tile类是描述一个砖块的显示属性的工具类、
    • GroundView是对场地坐标和像素坐标进行转化的工具类、
    • IntPt和DoublePt是类似于pair的方便程序编写的整形点类和double型点类。
  • battle.view 包中,大部分的文件是对图形界面的描述。少部分是对图像生成和图形化交互的辅助类。
    • 图形界面类如下
      • InfoColumn 信息栏
      • SelectionBar 选择技能栏
      • SelectionModeWindow 选择游戏模式栏
      • StartColumn 开始选择栏
      • StepHint 剩余步数提示栏
      • VolumnBar 血条栏
      • GameEndView 游戏结束时的提示栏
    • 工具类
      • ViewTools 对于交互事件和图形界面设置的工具栏
      • ViewBundle 管理各个人物的图像和攻击效果的图像
      • viewGenerator 是对人物动画生成的管理
  • net 包使用C/S架构,其中有两个类:
    • SocketServer和SocketClient分别为服务器和客户端,正方(葫芦娃)作为服务器,反方(妖怪)作为客户。
    • 两方使用类似TCP连接的方式发现对方地址:
    • 首先SocketServer开启18000端口监听。
    • SocketClient获取本机所有的地址,此举是因为255.255.255.255的全局广播路由器一般不转发,而为了防止VMnet等的干扰,必须对本机所在的所有IP子网进行广播,广播的目的端口号为18000。
    • 广播后监听18001端口。服务器收到广播后得到客户地址,向该地址的18001端口发送一个UDP包,之后开始监听18000的TCP请求,客户收到UDP包后得知服务器地址,向服务器的18000端口建立TCP连接。
  • battle.rec 包中包含了存储和重放的功能
    • AutoPlayer实现了独挡的复现
    • RecordSave实现了命令的格式化存储
  • battle.conf 包中包含了各种配置
    • Configs中重点实现了对各个图片资源文件参数的配置
  • battle 包中实现了大多数的战斗交互逻辑(但其实BattleView可以归类于battle.view的包,它主要是对战斗界面的描述)
    • BattleController是最主要的战斗操控逻辑,包含双方步数、死亡、所有人物的加载和伤害的判定。同时负责大联网部分信息传输的逻辑。
    • Bullet和BulletController主要是对空中武器或技能的各项参数进行控制、计算和判定。
  • default包中主要包含Main函数和文档注释生成器。

工作分配

  • 171860550 王一之 网络连接主要部分,大部分线程同步逻辑的Debug工作,基于前8次作业的战斗逻辑的部分编写与优化,文档管理和注释修改,综合与调试
  • 171860551 韩畅 图形化的主要部分,大部分的配置文件和工具类,小部分线程逻辑与优化,基于前8次作业的战斗逻辑的编写与综合,综合与调试

About

葫芦娃大作业

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

0