1、 通信技术实践 设 计 报 告 课题名称: 专业班级: 学生姓名: 学 号: 指导教师: 起止时间: 2014 年 3月 16 日至 2014 年 6 月 25 日 重庆交通大学 信息科学与工程学院 重庆交通大学信息科学与工程学院课程设计任务书 课 程 通信技术实践 班级 通信工程一班 指导教师 李益才 题 目 基于 java平台的坦克大战 同组人 数 2人 任务要求 用 java 语言来编写坦克大战游戏,实现敌我两军对战模式。现对具体要求总结如下: 1、 坦克能够四处移动 2、 坦克可以打击敌军 3、 敌军能够四处移动 4、 敌军能够打击我军 5、 打击能够模拟爆炸 6、 场景能够产生障碍
2、7、 我军能够增长生命 8、 我军敌军能够重生 9、 我军战亡可计总分 10、双机通信对战敌军 报告书要求 设计报告主要包括内容(参见后面的格式): 1系统的功能需求及分析 2系统总体结构 3系统实现(包括数据结构、主要算法的实现,界面设计等,根据自己的系统实际情况可以增加或删除部分内容) 4系统功能测试 5设计体会 要求: 学生完成设计后,每个同学均应提交设计报告及软 件或硬件(同一小组共同完成的系统可只提交一份软件); 设计报告要求文字通畅,排版规范; 设计报告文字原则上不少于 3000 字(程序代码除外),并装订成册。 指导地点及考核时间 1、指导地点:语音大楼 60103 2、考核时间
3、:第 18 周星期三上午(答辩方式考核,学生用 PPT 汇报及演示) 版面要求 1题目用黑体三号,段后距 18 磅(或 1 行),居中对齐; 2标题用黑体四号,段前、段后距 6 磅(或 0.3 行); 3正文用小四号宋体,行距为固定值“ 20”,程序代码用固定值“ 15”; 4标题按“一”、“”、“ 1”、“”顺序编号。 重庆交通大学信息学院课程设计评分表 序号 项目 评分标准及说明 评分 1 纪律及平时成绩( 20%) 按规定时间到实验室完成实验及综合实验,每缺 1 次实验扣 2 分,缺 4 次及以上不得分。 2 系统演示(功能)及答辩( 40%) 根据学生 PPT 汇报、系统演示及回答问题
4、情况,由答辩组 (老师 )给出答辩等级 (直接在此评分表中打“” ),指导教师按等级相应分值打分 答辩等级 分值 A+ 39-40 A 38 A- 36-37 B+ 34-35 B 32-33 B- 30-31 C+ 28-29 C 26-27 C- 24-25 D 0-23 3 项 目 设 计 报 告( 40%) 根据学生完成的项目设计报告书情况,由指导教师给定等级 (直接在此评分表中打“” )及成绩( 特别提醒:设计报告相同者均记 0 分 ) 报告等级 分值 A+ 39-40 A 38 A- 36-37 B+ 34-35 B 32-33 B- 30-31 C+ 28-29 C 26-27
5、C- 24-25 D 0-23 指导教师: 总分: 1 目 录 一、 课题意义 . 1 二、相关知识 . 2 2.1 Java 语言 . 2 2.2 Eclipse 的安装 . 2 2.3 Java 语言中用到的基本概念 . 3 2.4 Java 语言中用到的重要基本语法 . 4 2.5 实现双机通信的原理 . 4 2.6 实现双机通信的步骤 . 5 三、系统设计 . 6 3.1 坦克大战实现的功能 . 6 3.2 坦克大战总体框架流程图 . 6 3.3 坦克大战游戏规则介绍 . 8 四、系统实现 . 8 4.1 实现条件 . 8 4.2 设计流程图 . 9 4.3 编码与测试 .12 五、设
6、计心得 .17 六、结论与展望 .17 6.1 结论 .17 6.2 展望 .18 七、参考文献 .18 1 一、 课题意义 根据目前我国人民生活水平的提高,人们不再将娱乐停留在物质生活上,更加爱注重精神生活的娱乐性,所以有了越来越多、各式各样的手机电脑游戏的产生。 游戏本身是一种娱乐方式,能带给人们无尽的乐趣,而且游戏行业的发展还将会带动众多周边产业,如五金、塑料、机械、电子、 显像管,高端机型甚至使用了 40 英寸以上的大屏幕背投、液晶显示器等,这些显像设备不但要依赖国内众多显像管生产企业提 供支持,更要针对游戏的内容进行深入开发和优化,以适应游戏内容的飞速发展和变化,大大突破了传统家电类
7、显像设备的限制,对国内显像管制造企业的发展、创新具有极大的推动作用,大型游戏机的外部框体制造涉及工业设计、模具加工、五金加工、塑料成形、特殊印刷等工艺流程,由此带动了一大批相关的零部件生产制造企业,而这些企业均为生产密集型企业,大幅度增加了劳动就业的需求。 坦克大战是一款非常经典游戏,风靡全球,经久不衰,经过我们小组的 j精心选择,决定以编写一个基于 java 基础上的坦克大战,为后来学习基于安卓的程序编译奠定一定的 基础。本次实践通过对一个坦克大战游戏的开发了解了整个游戏开发的过程。而该报告详细阐述了相关知识、系统设计、系统实现和新的体会等软件开发过程。力求将所学到的知识在系统开发中得以全面
8、的应用,并使系统在实际的操作中能按照设计的要求安全有效正确的运行。本文的坦克大战有完整的界面 ,能够实现人机大战。该坦克大战游戏剧情非常简单 ,游戏的主角在保护好自身生命的前提下,消灭所有的敌人,所以非常容易上手。但剧情简单并不代表着一步一步从创建角色到实现功能的步骤是简单的。我和我的搭档从零基础学 Java,经过多加讨论多加学习,才完成 了这次实践设计。 经过这次实践设计,提高了我对 java 语言的相关认识,并对其相关应用更加熟练,还提高了和搭档的团队合作能力,能够和搭档一起从发现问题到解决问题。为毕业设计基于 java 或者安卓的游戏编程奠定了一定的基础。 2 二、相关知识 本次设计是用
9、自己的笔记本电脑在 windows7 操作系统基础上,利用 java语言在开发工具 eclipse 上编写程序代码,并可直接运行调试。这里所用的相关知识,首先是 Java 语言及其编程软件的安装与使用,然后是编程过程中遇到的各种 Java 知识,最后实现游戏功能调试并修改。各主要模块 知识简要介绍如下。 2.1 Java 语言 java 是一种可以撰写跨 平台 应用 软件 的面向对象的 程序 设计 语言 ,是由Sun Microsystems公司于 1995 年 5月推出的 Java程序设计语言和 Java平台 (即JavaEE, JavaME, JavaSE)的总称。 Java 自面世后就非
10、常流行,发展迅速,对C+语言形成了有力冲击。 Java 技术具有卓越的通用性、高效性、平台移植性和 安全 性,广泛应用于个人 PC、 数据中心 、 游戏 控制台、 科学 超级计算机 、移动电话 和 互联网 ,同时拥有全球最大 的开发者专业社群。 在全球 云计算 和 移动互联网 的产业环境下, Java 更具备了显著优势和广阔前景。利用 Java 语言编写游戏代码比较简单易懂,我们在有 C 语言的基础上,从零基础学习它 并不是特别难,而且为学习基于安卓平台的游戏编程奠定了一定的基础。 2.2 Eclipse 的安装 Eclipse 是一个开放 源代码 的、基于 Java 的可扩展开发平台。就其本
11、身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。 Eclipse 附带了一个标准的插件集,包括 Java 开发工具( Java Development Kit, JDK)。 ( 1) 安装 JDK(假设 JDK 安装在 E:Java文件夹中 ) a、安装 jdk-6u1-windows-i586-p.exe; b、在本机配置属性中改变配置环境变量 path,在其结尾添加 “;“后再添加“E:Javajdk-6u1-windows-i586-pbin“(JDK 中 bin 的目录 ); 3 c、测试 JDK 安装是否成功 ,在命令提示符中输入 java 和 javac. ( 2)
12、 安装 Eclipse(假设 Eclipse 的安装目录为 E:eclipse) a、 直按解压文件 “eclipse-SDK-3.2.1-win32.zip“到 E:,文件 eclipse 的安装目录为 E:eclipse. 其中值得非常注意的是:在安装语言包时 ,单独的 “文件 eclipse“是指文件eclipse.exe 文件 ,它的路径是 E:eclipseeclipse.exe; 在文本文件中输入一行字符时 ,盘符、文件夹用 “间隔 .。还有救世配置环境变量的路径一定要配对,否者在运行 eclipse 过程中会遇见大大小小的问题无法解决。 2.3 Java 语言中用到的基本概念 J
13、ava 和 C+语言相似,两者都是面向对象的编程语言, 所以它们的一些基本概念也很多都是相似的,就比如继承,在本次试验中用的算是最多的一个概念,在每一个 c 鞥 lass 类中,可能用到的参数及功能和之前编写的相关类有重复或相似,这时就可以运用继承“ extends”来将原来的父类继承到子类,是子类不需再编写便可以有父类的功能。除了继承以外,下面再介绍一些其它此次编程用到的某些 Java 中的基本概念。 ( 1) 抽象类 :规定一个或多个 抽象 方法的类别本身必须定义为 abstract, 抽象类 只是用来派生子类,而不能用它来创建对象。 ( 2) final 类:又称“最终类”, 它只能用来
14、创建对象,而不能被 继承 ,与抽象类刚好相反,而且抽象类与最终类不能同时修饰同一个类。 ( 3) 包 : Java 中的包是相关类和接口的 集合 ,创建包须使用关键字 package。 ( 4) 多态 类:在 java 中,对象变量是 多态 的。而 java 中不支持多重继承。 ( 5) 接 口 : Java 中的接口是一系列 方法 的 声明 ,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。 ( 6) 封装 :就是把数据和行为结合起在一个包中,并对对象使用者隐藏数据的实现过程,一个对象中的数据叫他的
15、 实例 字段( instance field)。 ( 7) 重载 :当多个方法具有相同的名字而含有不同的参数时,便发生 重载 。编译器 必须挑选出调用哪个方法进行编译。 4 ( 8) 重写 :也可称为方法的“覆盖”。在 Java 中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。值得注意的是, 子类在重新定义父类已有的方法时,应保持与父类完全相同的方法头 声明 。 ( 9) 数组 列表: ArrayList 动态数组 列表,是一个类库,定义在 java.util包中,可自动调节数组的大小。 ( 10)
16、class 类: object 类中的 getclass 方法返回 class 类型的一个实例,程序启动 时包含在 main 方法的类会被加载, 虚拟机 要加载他需要的所有类,每一个加载的类都要加载它需要的类。 2.4 Java 语言中用到的重要基本语法 由于 Java 和 C+以及 C 语言有很大的类似之处,除此之外也有一定的区别,其中非常重要的对不同地方的命名也有一定的要求,例如在 Java 中不再出现函数等名称 ,下面是本次设计中常用到的 Java 语言基本语法,主要为命名方面: ( 1) 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写
17、,例如 MyFirstJavaClass 。 ( 2) 方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。 ( 3) 源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。 ( 4) 主方法入口:所有的 Java 程序由 public static void main(Stringargs)方法开始执行 。 ( 5) 大小写敏感: Java 是大小写敏感的,这就意味着标识符 Hello 与 hello是不同的。 2.5
18、 实现双机通信的原理 这里是利用套接字 socket,以 TCP 协议为信息传输协议的双机通信。所5 谓 socket 通常也称作 “套接字 “,用于描述 IP 地址和端口,是一个通信链的句柄。应用程序通常通过 “套接字 “向网络发出请求或者应答网络请求。 Socket接口是 TCP/IP 网络的 API, Socket 接口定义了许多函数或例程,程序员可以用它们来开发 TCP/IP 网络上的应用程序。要学 Internet 上的 TCP/IP 网络编程,必须理解 Socket 接口。 Socket 接口设计者最先是将接口放在 Unix 操作系统里面的。如果了解 Unix 系统的输入和输出的话
19、,就很容易了解 Socket 了。网络的 Socket 数据传输是一种特殊的 I/O, Socket 也是一种文件描述符。 Socket也具有一个类似于打开文件的函数调用 Socket(),该函数返回一个整型的Socket 描述符,随后的连接建立、数据传输等操作都是通过 该 Socket 实现的。 WinSock 是一个基于 Socket 模型的 API。 WinSock 在 Windows98,Window NT 中使用。 WinSock 一般由两部分组成:开发组件和运行组件。开发组件是供程序员在 windows 环境下开发网络应用程序使用的,它包括应用程序接口库函数、头文件和实现的文档,其
20、中最主要的是 WINSOCK.H 运行组件是以动态链接库 (DlL)来实现 socket 接口的。文件名为 WINSOCK.DLL 应用程序在执行时装入它就能实现网络通信功能 。 2.6 实现双机通信的步 骤 利用 Socket 通信的原理还是比较简单的,实现它大致分为以下几个步骤。 服务器端的步骤: ( 1) 建立服务器端的 Socket,开始侦听整个网络中的连接请求。 ( 2) 当检测到来自客户端的连接请求时,向客户端发送收到连接请求的信息,并建立与客户端之间的连接。 ( 3)当完成通信后,服务器关闭与客户端的 Socket 连接。 客户端的步骤: ( 1) 建立客户端的 Socket,确
21、定要连接的服务器的主机名和端口。 ( 2) 发送连接请求到服务器,并等待服务器的回馈信息。 ( 3) 连接成功后,与服务器进行数据的交互。 ( 4) 数据处理完毕后,关 闭自身的 Socket 连接。 6 三、系统设计 3.1 坦克大战实现的功能 本次实践设计的是坦克大战,主要实现敌我两军对战模式,除以下描述的主要具体功能外,还有一些细节处理,如坦克不能出界、坦克不能互相穿越、坦克与子弹碰撞发生爆炸后坦克便消失处理等等一系列小型问题,主要的具体要求总结如下: 1、 坦克能够四处移动 2、 坦克可以打击敌军 3、 敌军能够四处移动 4、 敌军能够打击我军 5、 打击能够模拟爆炸 6、 场 景能够产生障碍 7、 我军能够增长生命 8、 敌我两军能够重生 9、 我军战亡可计总分 10、 双机通信对战敌军 3.2 坦克大战总体框架流程图 1、 总体框架流程图 由于本次设计的重点在于敌我两军对战,下图则表明从游戏开始到敌我两军对战,其中一方阵亡只至游戏结束的流程图。