学位论文基于java的坦克网战游戏的设计论文和实现.docx
- 文档编号:14232848
- 上传时间:2023-06-21
- 格式:DOCX
- 页数:28
- 大小:233.49KB
学位论文基于java的坦克网战游戏的设计论文和实现.docx
《学位论文基于java的坦克网战游戏的设计论文和实现.docx》由会员分享,可在线阅读,更多相关《学位论文基于java的坦克网战游戏的设计论文和实现.docx(28页珍藏版)》请在冰点文库上搜索。
学位论文基于java的坦克网战游戏的设计论文和实现
基于Java的坦克网战游戏的设计和实现
学生:
指导教师:
内容摘要:
坦克游戏是一款众所周知的休闲游戏,在网络日益发达的今天,局域网游戏为上班一族在工作闲暇之际提供了很好的放松空间。
Java语言简单易学,并且能够在所有的计算机上运行,所以越来越多的程序员用它编写游戏。
而本文介绍了基于Java的坦克网战游戏的设计和实现,主要介绍了相关技术理论,系统总体设计,各功能设计以及游戏的实现。
本游戏在Eclipse平台上开发调试,分为两大部分,即服务器端和客户端。
服务器端建立主机,客户端通过连接主机IP地址进行联机,联机成功自动进入游戏。
游戏过程中玩家通过键盘来控制坦克,可以进行聊天,选择暂停,游戏结束玩家可以选择重玩,但需要另一玩家同意。
关键词:
Java坦克局域网Eclipse
DesignandachievementofnetworkTanksbasedonJava
Abstract:
Tanksisawell-knowncasualgame.WiththeincreasingdevelopmentoftheInternet,LAN-basedgameprovideagoodrelaxplatformforthoseofficeworkerstospendtheirleisuretime.AgrowingnumberofprogrammerchoicetouseJavalanguagetoprogramgamebecausethiskindoflanguageiseasytolearnanditcanbeoperatedonallthecomputers.ThisarticleisaboutthedesignandachievementoftheTankswhichisbasedonJava,anditmainlyintroducessomerelevanttechnologicaltheories,thesystemintegrateddesign,diversefunctiondesignandthegame’sachievement.ThisgameisdevelopedanddebuggedonEclipseplatform,whichcontainsServer-sideandClient-side.TheServer-sideaimsatbuildingmainframe,andtheClient-sidethroughconnectingmainframe’sIPaddresstoloadgameautomatically.Playerscancontroltankthroughkeyboardandchatorsuspendwhileplayingthegame.Theycanalsochoicetorestartthegameifanotherplayerpermits.
Keywords:
JavaTanksnetworkEclipse
目录
前言1
1了解java1
1.1Java语言的发展1
1.2Java技术理论1
1.3三种平台简介2
1.4Java程序开发过程2
1.4.1编写Java源文件3
1.4.2编译Java源文件3
1.4.3运行Java程序3
1.5关于Eclipse3
2系统分析4
2.1可行性分析4
2.2游戏规则和系统功能介绍4
3总体设计5
3.1程序运行流程5
3.2总体构架5
4程序模块7
4.1主体模块7
4.2通信模块7
4.3坦克模块7
4.4子弹模块8
4.5墙模块8
4.6关卡模块8
5程序实现8
5.1游戏窗口界面设计9
5.2游戏控制12
5.3游戏网络通信13
5.4游戏元素15
5.4.1坦克15
5.4.2游戏墙18
5.4.3游戏中子弹和爆炸效果19
5.5游戏整体实现效果20
6结束语21
参考文献22
基于Java的坦克网战游戏的设计和实现
前言
在人们工作压力日益加大的今天,休息时间有限使娱乐项目越来越少,为了让上班族疲惫的心灵得以休息,开发了可在局域网内联机玩耍的坦克游戏让人们放松一刻。
本款游戏设计时,考虑到实际操作性,简化了游戏的操作,只要操作键盘上的方向控制坦克运动,键按住攻击键发射子弹就可以玩该游戏,轻松享受玩游戏的喜悦,可操作性好,弥补了单机游戏的自娱自乐的弊端,而且不会让玩家过分痴迷于该游戏,它的益智性让玩家头脑更灵活和它基于局域网可以增进同事同学之间的配合度,无论是学习还是工作都起到积极作用。
Java语言越来越被程序员认可,无论是高校的计算机专业还是IT培训学校,都把Java作为主要的教学内容之一。
本款游戏利用了Java语言的的面向对象,多平台运行,稳定和多线程工作的优良特征在传统C++语言编写的坦克游戏基础上进行改编,让其具备相对简单的功能。
本文通过对系统的需求分析,选择在Eclipse平台上开发调试。
分为主机端和客户端,分别由十八个和十四个类组成。
实现了局域网内联机游戏,玩家通过键盘进行相应控制。
为了增加游戏的趣味性,本游戏设有辅助道具,游戏过程中玩家可以进行信息传递。
设置九个循环关卡,玩家通关后,自动进入下一关卡,使游戏具有多样性让玩家享尽局域网所带来的乐趣。
1了解java
1.1Java语言的发展
因为C++语言具有一定的复杂性,也不能实现跨平台运行,因此出现了基于C++语言开发设计的一种新语言,即Oak语言。
Java语言便是从该语言的基础上升级,并拥有了一定的优越性。
Oak语言最先是用于家用电器,在家用电器程序设计过程中,它实现了对家用电子产品的有效控制和信息流通。
后来程序开发人员有效的利用Oak语言编写了HotJava浏览器,从此Java语言步入了历史舞台。
随着Java语言第一个开发包的发布,Java语言一步一步走向成熟,J2SE1.5的发布更是一个里程碑。
现如今,越多的程序设计人员选择Java语言进行相关程序设计,不光是它具有跨平台,多线程和相对安全性,它的开源也是吸引众多程序员的一个重要因素。
1.2Java技术理论
Java语言是一种简单、面向对象的、分布的、解释的、健壮的、安全的、体系结构中立、可移植的、高性能、多线程的以及动态执行的程序设计语言,有以下特性:
●跨平台(体系结构中立),Java程序能够在网络上任何地方执行;完全统一的语言版本,实现平台无关性;字节代码与平台无关性;访问底层操作系统功能的扩展类库,不依赖于具体系统等[1]。
●安全性好,除了Java语言具有的许多安全特性以外,Java提供了字节码校验器、文件访问限制机制、类装载器和运行时内存布局四级安全保证机制[1]。
●面向对象,面向对象的技术是当今软件开发的主流技术之一。
Java语言是一个彻底的纯面向对象的程序设计语言,它具有面向对象的封装、继承和多态三大特点[1]。
1.3三种平台简介
目前Java运行平台主要分为下列3个版本:
JavaSE:
称为Java标准版或Java标准平台,JavaSE提供了标准的JDK开发平台,利用该平台可以开发Java桌面应用程序和低端的服务器应用程序,也可以开发JavaApplet程序[1]。
JavaEE:
称为Java企业版或Java企业平台,可以构建企业级的服务应用,JavaEE平台包含了JavaSE平台,并增加了附加类库,以便支持目录管理、交易管理和企业级消息处理等功能[1]。
JavaME:
称为Java微型版或Java小型平台,JavaME是一种很小的Java运行环境,用于嵌入式的消费产品中,如移动电话、掌上电脑或其他无线设备等[1]。
1.4Java程序开发过程
一个Java程序的开发过程主要由三个过程组成:
编写源文件,编译Java源文件,运行Java程序,如图如图1.4-1所示:
图1.4-1Java程序开发过程图
1.4.1编写Java源文件
源文件是由若干个类组成,编程人员使用Java语言编写好源代码,形成源文件。
文件名的后缀为.java。
可以使用文本编辑器,如Edit或记事本来编写源文件。
不可使用Word编辑器,因为它含有不可见字符。
源文件在命名时有一定规则,如果源文件中有多个类,那么只能一个类是public类,如果一个类是public类,那么源文件的名字必须与这个类的名字完全相同[1]。
1.4.2编译Java源文件
编译Java源文件:
当创建源文件后,使用Java编译器来编译Java源文件,生成一种二进制的中间码,称为字节码(bytecode),形成字节码文件。
文件名的后缀为.class。
如果源文件进行了修改,那么必须重新编译,在生成新的字节码文件[1]。
1.4.3运行Java程序
运行Java程序:
使用Java虚拟机中的Java解释器来解释执行编译生成的字节码,完成Java程序要实现的功能,Java应用程序总是从主类main方法开始执行[1]。
1.5关于Eclipse
Eclipse是跨平台的自由与集成的开发环境。
起初主要用于Java语言的开发,但目前也有人利用插件将它用作其他计算机语言比如C++和Python的开发工具。
Eclipse的原身仅是一个框架平台,但是越来越多插件的支持让Eclipse拥有其他功能相对稳定的IDE软件很难拥有灵活性。
所以现在,许多程序员将Eclipse作为框架开发属于自己的IDE。
Eclipse最初由OTI及IBM两家公司的IDE产品开发团队共同开发。
IBM提供了最初的Eclipse代码基础,包括Platform、JDT和PDE。
现在由IBM带领,围绕关于它的项目已发展成了一个庞大的Eclipse联盟,现目前有百余家软件公司和大量程序开发员参与到此项目中,其中包括Borland、RationalSoftware、RedHat及Sybase等。
Eclipse是一个开发源码项目,它其实是VisualAgeforJava的替代品,其界面与以前的VisualAgeforJava差不多,但因为其开源,每个人都可以免费获取,以便程序开发人员在此源码的基础上进行创意修改开发出自己需要的产品,所以越来越多的开发公司和团队选择它。
最近包括Oracle等许多大型程序开发公司相继研究该项目,经过一段时间的开发研究,他们一致认为Eclipse将来会形成可以进行多种语言开发的IDE集合体,使用者只需下载各种语言的插件即可。
2
系统分析
2.1可行性分析
本款游戏的设计和开发是在C++语言开发的传统坦克游戏基础上进行改编,要实现它的相应基本功能。
分析研究传统坦克游戏得知,本款游戏要实现的功能主要主窗口的实现以及相应功能按键的功能实现,画出坦克,可以控制键盘让坦克移动,可以发射子弹,坦克被子弹击中消失并产生爆炸效果,防止坦克重叠运动等。
研究课题设计要求得知,需要实现局域网联网功能。
在选择开发语言的时候,需要考虑到开发目标。
然而本次设计的目的完全可以由Java语言来实现。
因为Java语言具有面向对象的特性,可以很好的将游戏中各个元素进行封装管理,降低开发难度。
游戏运行过程不是单一过程,是多态同时进行,然而Java具有多线程的特性,这样恰恰满足了开发的需要,所以选择Java语言进行开发是不二的选择。
在玩家进行娱乐的时候,美观的界面是必不可少的,为了增强观赏性,可能在设计过程中需要从外部载入图片。
玩家坦克可以通过监听玩家键盘响应事件控制。
对于敌方坦克,在设计游戏过程中要考虑到不能同时出现太多,还能让敌方坦克自主进行移动和向目标开火。
以此同时,因为敌方坦克是自主随机移动,需要考虑到坦克与坦克之间不能相互重叠和穿越,也不能同时做同意动作。
那么利用Java语言的多线程能保证坦克有序运行。
与传统单机坦克游戏不同,本款游戏需要实现局域网通信。
然而通Java语言中有套接字Socket实现通信功能。
综合以上分析可以得出,利用Java语言的各种优越特性能够实现本次设计的总体要求,也能实现相应功能。
2.2游戏规则和系统功能介绍
在本款游戏中,玩家坦克受玩家键盘向东南西北方向移动,并由玩家控制开火键对目标进行打击,玩家双方坦克免受对方火力攻击。
敌方坦克随机运动,并发射子弹。
游戏中,坦克和子弹能够击毁普通砖墙,但不能击穿钢墙,坦克能够穿越草丛不能穿越河流,子弹能够穿越河流和草丛。
游戏过程中,玩家除了保证自己免受伤害同时也要保障基地安全,玩家消灭敌方闪烁坦克可以获得额外辅助道具,两玩家在游戏过程中可以聊天,也可以请求暂停。
每个关卡设置二十个敌方坦克,当坦克完全被消灭后,进入下一关卡,当玩家基地被毁或双方玩家生命耗尽,游戏结束,玩家可以选择重玩,但需要双方做出一致选择。
3
总体设计
3.1程序运行流程
本游戏程序运行需要玩家双方在局域网内建立通信,也可在同一电脑上建立通信,但只能操作一个玩家。
具体运行流程如图3.1-1所示:
图3.1-1程序运行流程如图
3.2总体构架
本游戏在设计过程中,为了降低设计难度,将整个程序按模块进行单独编写,包括主类、通信类、坦克类、子弹类、墙类、辅助类、服务器类、客服端类、敌人坦克类、关卡类以及时钟类。
各个类和实现的功能表如表3.2-1所示:
表3.2-1各个类和实现的功能表
类
实现功能
主类
实现游戏窗口的显示
提供公共接口
通信类
实现玩家间建立游戏
使玩家间可以进行信息交流
坦克类
添加坦克图片
控制坦克移动
让坦克可以发出子弹
让玩家坦克死亡后重置
使坦克不能穿墙和其他坦克
使坦克可以穿草丛不能穿河
子弹类
画出子弹
控制子弹
让普通子弹可以击毁普通砖墙不能击毁钢墙
让子弹可以穿越草丛和河流
墙类
添加砖墙图片
添加钢墙图片
添加草丛图片
添加河流图片
显示图片
辅助类
添加辅助图片
敌方闪烁坦克阵亡后随机显示辅助图片
玩家获得辅助图片后得到相应辅助功能
服务器类
建立主机
控制游戏进程
客服端类
输入主机IP连接主机
控制游戏进程
关卡类
添加墙类图片并进行排版编辑
显示添加图片
时钟类
刷新线程
对玩家事件进行监听
控制游戏运行与休眠
4程序模块
本游戏程序由多个模块同时运行而实现,也体现了Java语言的优越性。
通过各个模块的相互调用,它能完成游戏显示,通信建立,控制进程等一系列操作,使游戏规范化,易于操作。
4.1主体模块
主体模块首先构建接口,因为Java不支持多继承性,即一个类只能有一个父类。
单继承性使得Java简单,易于管理程序。
为了克服单继承的缺点,Java使用了接口,一个类可以实现多个接口。
使用关键字interface来定义一个接口。
接口的定义和类的定义很相似,分为接口的声明和接口体。
其次是画出游戏面板和游戏窗口的显示,在游戏窗口中添加了几个功能按键,主要进行联机操作,游戏进程操作等。
游戏过程中,游戏版面显示当前关卡数,敌人剩余数,玩家生命数以及玩家获得的分数。
4.2通信模块
通信模块通过Java语言中套接字Socket编写通信类,针对游戏中客户端和服务器的联机功能的实现,它的通信过程是基于TCP/IP协议中传输层接口socket实现。
通过通信模块玩家可以进行信息传递以便协同作战,为本游戏添加乐趣。
4.3坦克模块
坦克模块部分主要由玩家坦克和敌人坦克组成,敌方坦克随机出现,并随机移动,玩家通过键盘操作来控制坦克的移动和对敌方坦克进行攻击。
玩家坦克可以对敌方闪烁坦克进行攻击,并得到额外辅助道具,获得道具后玩家坦克具备相应功能。
敌方坦克由游戏窗口上方按照左中右依次出现,敌方在移动过程中随机发出子弹,如遇见障碍则随机改变运动方向。
玩家在第一关卡时,最多同时出现三辆敌方坦克,随着游戏的进行敌方坦克数量随之增加且敌方坦克运动速度加快,和经典单机坦克游戏十分相似,将玩家带入童年回忆。
4.4子弹模块
在该模块中,初始玩家一次只能发射一颗子弹,且只对敌方坦克和普通砖墙有效,当子弹消失后才能接着发射。
子弹击毁时出现爆炸效果,玩家子弹和敌方坦克发出的子弹可以撞毁,敌方坦克向四个方向随机移动并发射子弹。
游戏工程中玩家获得相应辅助道具后,子弹速度加快且可以进行连续射击。
4.5墙模块
墙模块是由四个类共同组成,包括砖墙、钢墙、草丛和河流。
通过这四个类的组合,编辑成游戏地图。
游戏地图中,玩家基地周围是由砖墙包围,在墙模块中,砖墙是最基本的组成,玩家或敌方坦克都能将其摧毁,钢墙只有玩家获得特殊辅助后才能摧毁,玩家和敌方发出的子弹都能穿越草丛和河流。
4.6关卡模块
为了增加游戏的趣味性,游戏中设计了九个循环关卡。
在游戏过程中,玩家双方各有3条生命,当玩家双方均把生命耗尽时,通关失败,只有双方选择重玩时才重新开始游戏。
在关卡进行时,任一玩家可以选择暂停游戏,在每个关卡中设置了玩家基地,当玩家基地被毁,则通关失败。
每个关卡设计20辆敌方坦克,当敌方坦克均被消灭,游戏自动进入下一关卡。
游戏玩家具体游戏流程如图4.6-1所示:
图4.6-1玩家游戏流程图
5程序实现
5.1游戏窗口界面设计
游戏窗口使用Frame类,Frame类是Container类的间接子类。
当需要一个窗口时,可使用Frame或其子类创建一个对象。
窗口也是一个容器,可以向窗口添加组件。
该游戏界面包括文本输入框和按钮,因为服务器端和客户端窗口相似,以下提供客服端游戏窗口设计代码:
publicclassServerViewextendsJFrame{
publicdrawingPanelmainPanel;
publicJButtoncreateServer,exit,pauseAndResume,help,hiddenButton;
publicJTextFieldmessageField;
publicJButtonsendMessage;
publicServerControlercontroler;
publicServerModelmodel;
publicServerView(){
super("基于Java的坦克网战游戏");
try{UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(Exceptione){}
getContentPane().setLayout(null);
mainPanel=newdrawingPanel();
mainPanel.setLayout(null);
mainPanel.setBounds(0,22,679,605);
mainPanel.setBackground(newColor(128,64,128));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(150,130,640,590);
setVisible(true);
setResizable(false);
model=newServerModel(this);
controler=newServerControler(this,model);
/*
*添加按键和文本框并实现相应功能
*/
messageField=newJTextField();
messageField.setBounds(0,519,560,22);
messageField.setEnabled(false);
sendMessage=newJButton("发送");
sendMessage.setBounds(570,518,62,24);
sendMessage.setFocusable(false);
mainPanel.add(messageField);
mainPanel.add(sendMessage);
getContentPane().add(mainPanel);
mainPanel.setFocusable(true);
createServer=newJButton("建立主机");
createServer.setBounds(0,0,120,22);
getContentPane().add(createServer);
createServer.setFocusable(false);
pauseAndResume=newJButton("暂停/继续");
pauseAndResume.setBounds(120,0,120,22);
getContentPane().add(pauseAndResume);
pauseAndResume.setFocusable(false);
help=newJButton("帮助");
help.setBounds(240,0,120,22);
getContentPane().add(help);
help.setFocusable(false);
exit=newJButton("退出");
exit.setBounds(360,0,120,22);
getContentPane().add(exit);
exit.setFocusable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(150,130,640,590);
setVisible(true);
setResizable(false);
model=newServerModel(this);
controler=newServerControler(this,model);
}
publicstaticvoidmain(String[]args){
newServerView();
}
}
游戏运行界面使用JPanel创建一个面板,再向这个面板添加组件。
主要分为游戏界面和玩家信息界面,如图5.1-1所示:
图5.1-1游戏运行界面图
游戏界面显示游戏实时画面,玩家信息界面主要显示玩家生命值,玩家得分情况,关卡进读,和剩余敌方坦克数量。
部分代码如下:
publicclassdrawingPanelextendsJPanel{
publicImageoffScreenImage;
publicString[]messageQueue;
publicActor[]drawingList;
publicbooleangameStarted;
publicintgreen,red,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学位 论文 基于 java 坦克 游戏 设计 实现