基于Java的坦克大战游戏的设计与实现
游戏由服务器端和客户端两部分组成。
在服务器端,ServerModel类主要用来创建主机,ServerView类主要负责服务器端图形界面的面板信息的设置,ServerControler类处理来自服务器视图框架的输入,包括创立通信与帮助信息等,enemy类主要负责敌方坦克的创建,player类主要用来设置玩家的得分及其显示位置等信息,drawingPanel类主要负责服务器端界面窗口的创建和设置,powerUp类主要用来设置子弹属性,例如加快速度、提升火力等,feedbackHandler类主要用来解码从客户端发来的指令字符串,再将其转换成指令来判断游戏失败后玩家是否继续游戏的问题。
在客户端,ClientModel类主要用来设置与服务器的连接,ClientView类主要负责客户端端图形界面的面板信息,ClientControler类主要负责处理来自客户端视图框架的输入和创立通信与帮助信息等,drawingPanel主要用来设置客户端窗口界面,instructionHandler类主要用来解码从服务器端发来的指令字符串,再将其转换成指令来判断游戏失败后玩家是否继续游戏的问题,shield类主要负责设置坦克吃掉头盔图标获得保护时的状态,normalObject类主要用来创建和描绘其他物体对象。
在服务器端和客户端中都存在的类中,Actor类主要用来创建接口,base类主要用来创建基地并设置属性,bullet类主要用来创建子弹并设置属性,Ticker类主要用来创建时间信息,bomb类主要用来创建子弹打出后产生的爆炸效果,river类主要用来创建河道并设置属性,grass类主要负责创建草坪并设置属性,Steelwall类主要用来创建铁墙并设置属性,wall类主要用来创建和设置普通墙及其属性,level类负责创建关卡。如表1,表2所示。
表1 游戏服务器端各类功能表
ServerModel | 创建主机 |
ServerView | 设置服务器端图形界面的面板信息 |
ServerControler | 处理来自服务器视图框架的输入 |
enemy | 创建敌方坦克 |
player | 设置玩家的得分及其显示位置等信息 |
drawingPanel | 创建和设置服务器端界面窗口 |
powerUp | 加快子弹速度并提升火力 |
feedbackHandler | 判断指令并执行 |
Actor | 创建接口 |
base | 创建并设置基地 |
Ticker | 创建并设置时间信息 |
bullet | 创建子弹并设置属性 |
bomb | 设置爆炸效果 |
river | 创建河道并设置属性 |
grass | 创建草坪并设置属性 |
Steelwall | 创建铁墙并设置属性 |
wall | 创建普通墙并设置属性 |
level | 创建关卡 |
表2 游戏客户端各类功能表
ClientModel | 设置与服务器的连接 |
ClientView | 设置客户端端图形界面的面板信息 |
ClientControler | 负责处理来自客户端视图框架的输入 |
drawingPanel | 设置客户端窗口界面 |
instructionHandler | 判断指令并执行 |
shield | 设置玩家坦克防护盾 |
normalObject | 创建并描绘其他的物体对象 |
level | 创建关卡 |
base | 创建并设置基地 |
Ticker | 创建并设置时间信息 |
bullet | 创建子弹并设置属性 |
bomb | 设置爆炸效果 |
river | 创建河道并设置属性 |
wall | 创建普通墙并设置属性 |
客户端玩家输入主机地址来完成与服务器玩家的连接,双方通过使用指令键来操控自己的坦克,敌方坦克和子弹则是自主随机运行,游戏中会对玩家的分数进行记录,还增加了特殊武器,另外,此游戏还进行了小小的创新,添加了通信功能,客户端与服务器端的连接访问通过使用套接字Socket来实现。
其总体功能如图1所示。
3.2 坦克大战总体流程图
如图2所示。
图2 总体流程图
游戏启动测试
运行Eclipse中的server项目和client项目或双击server文件夹和client文件夹下的Play.BAT文件来运行游戏,游戏启动成功,看到了游戏界面。如图3所示。
具体内容较多,可以参看
链接:https://pan.baidu.com/s/1FdglA0IQ9fs_YM1A0XyQsQ?pwd=pqzw
提取码:pqzw