ImageVerifierCode 换一换
格式:DOC , 页数:23 ,大小:8.21MB ,
资源ID:11989281      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/11989281.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(基于JAVA语言的坦克大战.doc)为本站上传会员【仙人****88】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

基于JAVA语言的坦克大战.doc

1、 通信技术实践 设 计 报 告 课题名称: 专业班级: 学生姓名: 学 号: 指导教师:平时指导学生的教师姓名 起止时间: 2014年3月16日至2014年6月25日

2、 重庆交通大学 信息科学与工程学院 重庆交通大学信息科学与工程学院课程设计任务书 课 程 通信技术实践 班级 通信工程一班 指导教师 李益才 题 目 基于java平台的坦克大战 同组人数 2人 任务要求 用java语言来编写坦克大战游戏,实现敌我两军对战模式。现对具体要求总结如下:1、 坦克能够四处移动 2、 坦克可以打击敌军 3、 敌军能够四处移动 4、 敌军能够打击我军 5、 打击能够模拟爆炸 6、 场景能够产生障碍

3、 7、 我军能够增长生命 8、 我军敌军能够重生 9、 我军战亡可计总分 10、双机通信对战敌军 报告书要求 设计报告主要包括内容(参见后面的格式): 1.系统的功能需求及分析 2.系统总体结构 3.系统实现(包括数据结构、主要算法的实现,界面设计等,根据自己的系统实际情况可以增加或删除部分内容) 4.系统功能测试 5.设计体会 要求: Ø 学生完成设计后,每个同学均应提交设计报告及软件或硬件(同一小组共同完成的系统可只提交一份软件); Ø 设计报告要求文字通畅,排版规范; Ø 设计报告文字原则上不少于3

4、000字(程序代码除外),并装订成册。 版面要求 1.题目用黑体三号,段后距18磅(或1行),居中对齐; 2.标题用黑体四号,段前、段后距6磅(或0.3行); 3.正文用小四号宋体,行距为固定值“20”,程序代码用固定值“15”; 4.标题按“一”、“㈠”、“1”、“⑴”顺序编号。 指导地点及考核时间 1、指导地点:语音大楼60103 2、考核时间:第18周星期三上午(答辩方式考核,学生用PPT汇报及演示) 重庆交通大学信息学院课程设计评分表 序号 项目 评分标准及说明 评分 1 纪律及平时成绩(20%) 按规定时间到实验室完成实验及综合实验,每缺1次实

5、验扣2分,缺4次及以上不得分。 2 系统演示(功能)及答辩(40%) 根据学生PPT汇报、系统演示及回答问题情况,由答辩组(老师)给出答辩等级(直接在此评分表中打“√”),指导教师按等级相应分值打分 答辩等级 分值 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分) 报

6、告等级 分值 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 指导教师: 总分: 目 录 一、 课题意义 1 二、相关知识 2 2.1 Java语言 2 2.2 Eclipse的安装 2 2.3 Java语言中用到的基本概念 3 2.4 Java语言中用到的重要基本语法 4 2.5 实现双机通信的原理 5 2.6 实现双机通信的步骤 5 三、系统设计 6 3.1 坦克大战实现的功

7、能 6 3.2 坦克大战总体框架流程图 6 3.3 坦克大战游戏规则介绍 8 四、系统实现 8 4.1实现条件 8 4.2设计流程图 9 4.3编码与测试 12 五、设计心得 17 六、结论与展望 17 6.1结论 17 6.2展望 18 七、参考文献 18 一、 课题意义 根据目前我国人民生活水平的提高,人们不再将娱乐停留在物质生活上,更加爱注重精神生活的娱乐性,所以有了越来越多、各式各样的手机电脑游戏的产生。 游戏本身是一种娱乐方式,能带给人们无尽的乐趣,而且游戏行业的发展还将会带动众多周边产业,如五金

8、塑料、机械、电子、 显像管,高端机型甚至使用了40英寸以上的大屏幕背投、液晶显示器等,这些显像设备不但要依赖国内众多显像管生产企业提供支持,更要针对游戏的内容进行深入开发和优化,以适应游戏内容的飞速发展和变化,大大突破了传统家电类显像设备的限制,对国内显像管制造企业的发展、创新具有极大的推动作用,大型游戏机的外部框体制造涉及工业设计、模具加工、五金加工、塑料成形、特殊印刷等工艺流程,由此带动了一大批相关的零部件生产制造企业,而这些企业均为生产密集型企业,大幅度增加了劳动就业的需求。 坦克大战是一款非常经典游戏,风靡全球,经久不衰,经过我们小组的j精心选择,决定以编写一个基于java基础上的

9、坦克大战,为后来学习基于安卓的程序编译奠定一定的基础。本次实践通过对一个坦克大战游戏的开发了解了整个游戏开发的过程。而该报告详细阐述了相关知识、系统设计、系统实现和新的体会等软件开发过程。力求将所学到的知识在系统开发中得以全面的应用,并使系统在实际的操作中能按照设计的要求安全有效正确的运行。本文的坦克大战有完整的界面,能够实现人机大战。该坦克大战游戏剧情非常简单,游戏的主角在保护好自身生命的前提下,消灭所有的敌人,所以非常容易上手。但剧情简单并不代表着一步一步从创建角色到实现功能的步骤是简单的。我和我的搭档从零基础学Java,经过多加讨论多加学习,才完成了这次实践设计。 经过这次实践设计,提

10、高了我对java语言的相关认识,并对其相关应用更加熟练,还提高了和搭档的团队合作能力,能够和搭档一起从发现问题到解决问题。为毕业设计基于java或者安卓的游戏编程奠定了一定的基础。 二、相关知识 本次设计是用自己的笔记本电脑在windows7操作系统基础上,利用java语言在开发工具eclipse上编写程序代码,并可直接运行调试。这里所用的相关知识,首先是Java语言及其编程软件的安装与使用,然后是编程过程中遇到的各种Java知识,最后实现游戏功能调试并修改。各主要模块知识简要介绍如下。 2.1 Java语言 java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun

11、Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaEE, JavaME, JavaSE)的总称。Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。利用Java语言编写游戏代码比较简单易懂,我们在有C语言的基础上,从零基础学习它并不是特别难,而且为学习基于安卓平台的游戏编程奠定了一定的基础。

12、 2.2 Eclipse的安装 Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。 (1) 安装JDK(假设JDK安装在E:\Java\文件夹中)    a、安装jdk-6u1-windows-i586-p.exe;   b、在本机配置属性中改变配置环境变量path,在其结尾添加";"后再添加"E:\Java\jdk-6u1-windows-i586-p\bin"(JDK中bi

13、n的目录);  c、测试JDK安装是否成功,在命令提示符中输入java和javac.     (2) 安装Eclipse(假设Eclipse的安装目录为E:\eclipse\)    a、 直按解压文件"eclipse-SDK-3.2.1-win32.zip"到E:\,文件eclipse的安装目录为E:\eclipse\.     其中值得非常注意的是:在安装语言包时,单独的"文件eclipse"是指文件eclipse.exe文件,它的路径是E:\eclipse\eclipse.exe;  在文本文件中输入一行字符时,盘符、文件夹用"\\"间隔.。还有救世配置环境变量的路径一定要配对,

14、否者在运行eclipse过程中会遇见大大小小的问题无法解决。 2.3 Java语言中用到的基本概念 Java和C++语言相似,两者都是面向对象的编程语言,所以它们的一些基本概念也很多都是相似的,就比如继承,在本次试验中用的算是最多的一个概念,在每一个c鞥lass类中,可能用到的参数及功能和之前编写的相关类有重复或相似,这时就可以运用继承“extends”来将原来的父类继承到子类,是子类不需再编写便可以有父类的功能。除了继承以外,下面再介绍一些其它此次编程用到的某些Java中的基本概念。 (1)抽象类:规定一个或多个抽象方法的类别本身必须定义为abstract,抽象类只是用来派生

15、子类,而不能用它来创建对象。 (2)final类:又称“最终类”,它只能用来创建对象,而不能被继承,与抽象类刚好相反,而且抽象类与最终类不能同时修饰同一个类。 (3)包:Java中的包是相关类和接口的集合,创建包须使用关键字package。 (4)多态类:在java中,对象变量是多态的。而java中不支持多重继承。 (5)接口:Java中的接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。 (6)封装:就是把数据和行为结合起在一个包中,并对对象使用者隐藏数据的实现过程,

16、一个对象中的数据叫他的实例字段(instance field)。 (7)重载:当多个方法具有相同的名字而含有不同的参数时,便发生重载。编译器必须挑选出调用哪个方法进行编译。 (8)重写:也可称为方法的“覆盖”。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。值得注意的是,子类在重新定义父类已有的方法时,应保持与父类完全相同的方法头声明。 (9)数组列表:ArrayList动态数组列表,是一个类库,定义在java.util包中,可自动调节数组的大小。 (10)class类: obje

17、ct类中的getclass方法返回class类型的一个实例,程序启动时包含在main方法的类会被加载,虚拟机要加载他需要的所有类,每一个加载的类都要加载它需要的类。 2.4 Java语言中用到的重要基本语法 由于Java和C++以及C语言有很大的类似之处,除此之外也有一定的区别,其中非常重要的对不同地方的命名也有一定的要求,例如在Java中不再出现函数等名称,下面是本次设计中常用到的Java语言基本语法,主要为命名方面: (1)类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。 (2

18、方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。 (3)源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记Java是大小写敏感的),文件名的后缀为.java。(如果文件名和类名不相同则会导致编译错误)。 (4)主方法入口:所有的Java 程序由public static void main(String[]args)方法开始执行。 (5)大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的。 2.5 实现双机通信的原理 这里是利用套接字socket,以TCP协议

19、为信息传输协议的双机通信。所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具

20、有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。 WinSock是一个基于Socket模型的 API。WinSock在 Windows98,Window NT中使用。WinSock一般由两部分组成:开发组件和运行组件。开发组件是供程序员在windows环境下开发网络应用程序使用的,它包括应用程序接口库函数、头文件和实现的文档,其中最主要的是WINSOCK.H运行组件是以动态链接库(DlL)来实现socket接口的。文件名为WINSOCK.DLL应用程序在执行时装入它就能实现网络

21、通信功能 。 2.6 实现双机通信的步骤 利用Socket通信的原理还是比较简单的,实现它大致分为以下几个步骤。   服务器端的步骤: (1) 建立服务器端的Socket,开始侦听整个网络中的连接请求。  (2) 当检测到来自客户端的连接请求时,向客户端发送收到连接请求的信息,并建立与客户端之间的连接。  (3)当完成通信后,服务器关闭与客户端的Socket连接。  客户端的步骤: (1) 建立客户端的Socket,确定要连接的服务器的主机名和端口。  (2) 发送连接请求到服务器,并等待服务器的回馈信息。  (3) 连接成功后,与服务器进行数据的交互。  (4

22、 数据处理完毕后,关闭自身的Socket连接。 三、系统设计 3.1 坦克大战实现的功能 本次实践设计的是坦克大战,主要实现敌我两军对战模式,除以下描述的主要具体功能外,还有一些细节处理,如坦克不能出界、坦克不能互相穿越、坦克与子弹碰撞发生爆炸后坦克便消失处理等等一系列小型问题,主要的具体要求总结如下: 1、 坦克能够四处移动 2、 坦克可以打击敌军 3、 敌军能够四处移动 4、 敌军能够打击我军 5、 打击能够模拟爆炸 6、 场景能够产生障碍 7、 我军能够

23、增长生命 8、 敌我两军能够重生 9、 我军战亡可计总分 10、 双机通信对战敌军 3.2 坦克大战总体框架流程图 1、 总体框架流程图 由于本次设计的重点在于敌我两军对战,下图则表明从游戏开始到敌我两军对战,其中一方阵亡只至游戏结束的流程图。 2、 开始界面所包括的事件 由于时间和技术问题,我和我的搭档并没有做出登陆界面相关的东西,于是开始界面便直接可以作战,所以开始界面包括事件如下: 3.3 坦克大战游戏规则介绍 游戏开始界面包括上图的

24、一辆我军坦克、十辆敌军坦克、墙体以及可移动能量;当然还有左上角的计分墙。下面将说明游戏操作及规则。 1、 按键操作说明。 我军坦克在人为操作下可实现八个方向的移动和发放子弹,上下左右键即上下左右移动,左上、左下、右上、右下方向分别是左上、左下、右上、右下键分别同时按来实现。其中键F为发射单颗子弹,键A为放射超级子弹(即同时在可运动的八个方向同时发射子弹)。 2、 生命值的说明。 我军坦克生命值为100, 每接收一次敌军攻击减少20, 一共可接收五次攻击。敌军可接收我军一次攻击。界面内有五处随机移动的血块(能量),我军坦克可以移动到相应位置添满血量,否则血块消失。 3、 复活说

25、明 在我军战亡的时候,可按键F2,我军复活可继续对战,计分重新开始;若敌军开始界面的十辆战亡后,再每次产生新的五辆继续对战。 4、 计分说明 我军坦克每消灭一辆敌军坦克加五十分,直至我军战亡计总分。并在每一次我军阵亡之后保存分数,进行一个多次分数排名,排名只取前五名。 5、 双机通信共战说明 在本游戏更加完善的情况下,还可以实现两台电脑,以至多台电脑通信,进行对战或者共战敌军,操作以及其他方面都无太大改变,在计分时可分别计分;双机对战的话,随机产生的敌军对于双方来说都属于敌军。 四、系统实现 4.1实现条件 硬件条件:装Microsoft Windows 7 的

26、PC电脑 软件条件:Eclipse1.7版本 编程语言:Java语言 4.2设计流程图  本系统一共包括8个Java源文件,其中TankClient为主类,其中包括主方法,应用包括Tank类、Blood类、方向类、爆炸类、子弹类、墙体类以及PropertyMgr类,如下功能结构图所示: 根据本次设计的难易程度,我和我的搭档将以上描述的几个大类进行分工,在进行统合讨论之后,油杜海霞负责Tank类、子弹类以及PropertyMgr类的编写,其余的由我负责,然后再一起统筹起来调试并修改。下面是我负责部分的具体说明。 1、 主类TankClient系统说明 TankCli

27、ent是继承Java中frame控件,这个系统文件中包括游戏窗口、界面中事件绘画处理、背景图片的更新、坦克主窗口的显示,按键执行以及主方法。 游戏窗口要定义其大小;规定我军坦克和障碍物的初始位置,要求位置不能重复;声明爆炸、子弹、敌军坦克和血液等空间并赋值;积分板块各参数的定义;敌军重生;子弹销往;爆炸发生;背景更新主要包括其坦克图片方向和其他颜色变化等;按键要运用键盘监听,分别在按下和放开时执行相应功能;主方法是程序执行入口,在运行程序时必须要在拥有主方法的类。 2、 血液Blood类 这个类的主要功能是在界面五个规定地方显示按一定轨迹运动的血液(能量),我军坦克在吃掉血液之后

28、可以将血液恢复至100,即增加血液。在被我军坦克吃掉之后便消失,若是没有被吃掉,一定时间过后也会消失。下面是该算法流程图: 3、 方向Direction类 这是本次设计中最简单的一个类,其中定义了上、下、左、右以及左上、左下、右上、右下八个方向,方便在其他类里面的应用,代码如下: package com.keshe.tank; public enum Direction { L, LU, U, RU, R, RD, D, LD, STOP } 4、 爆炸Explode类 爆炸类的主要功能是在我军坦克和敌军坦克互相攻击

29、的时候产生爆炸效果,并将其模拟出来。这里主要是调用了系统文件images里的爆炸图片,利用多张不同的爆炸图片来实现动态爆炸,在爆炸发生前一刻将游戏界面中所被我军子弹接触的敌军坦克移除,这样就实现了消灭敌人的能力,而我军被敌军子弹接触的时候也产生爆炸,这时不移除我军坦克,但我军坦克头上的血液要对应减少,直至减完便移除我军坦克。先面试该算法流程图: 5、 墙体Wall类 游戏界面中没有调用系统图片来构成墙体,直接是画的矩形框,并对其颜色,大小,位置等进行规划。墙体的构建非常简单,在该游戏的改进计划中,我们将把墙体改进成图片版,并创

30、建子弹能够击破的墙体类,将界面美观化,提升游戏美感. 墙的主要作用在TankClient主类文件中有具体实施,要求子弹和敌方坦克都不能穿过,只能我军坦克穿过,所以在设计的过程中,墙和其他事物的接触或者碰撞检测非常重要,也是核心部分。 4.3编码与测试  在本次设计中,最重要的就是主要类和坦克类,因为它们分别包括了各个类,并对各个类的功能进行实现和调用。由于代码量较多,这里只给出主类的部分代码,包括主方法、以及其他的类的实现。 在实现的过程中也遇到了很多的问题,下面将在主要代码中一一说明实现过程中遇到的问题和如何解决的方法。 1、界面墙体与坦克初始位置重合的问题 下面这段代码

31、包括生成游戏主要框和墙以及我军坦克产生的初始位置。这里主要是要运用程序自带的坐标框架,这样才能使生成的墙在框内以及和其他的墙不迭和。遇到的问题就是生成墙之后,在我军坦克的初始位置定下来后没有坦克出现,后来才反应过来是坦克初始位置和墙体重合了,于是把坐标经过再三改正便避免了这个问题。 /** * 这个类的作用是坦克游戏的主窗口 * */ public class TankClient extends Frame { /** * 整个坦克游戏的宽度 */ public static final int GAME_WIDTH = 800; public sta

32、tic final int GAME_HEIGHT = 700; public static int score = 0 ; 在定义 //定义我军坦克初始位置 Tank myTank = new Tank(350, 350, true, Direction.STOP, this); //墙的初始位置 Wall w1 = new Wall(150, 300, 20, 150, this), w2 = new Wall(250, 150, 300, 20, this),w3 = new Wall(600, 300, 20, 150, this), w4 = new Wall

33、250, 570, 300, 20, this); List explodes = new ArrayList(); List missiles = new ArrayList(); List tanks = new ArrayList(); Image offScreenImage = null; Blood b = new Blood(); 2、各类之间的简单调用问题 下面这段代码实现了子弹、爆炸、坦克的数量规范,敌我两军战亡重生,子弹消亡与爆炸以及各时间的碰

34、撞检测问题。在这段代码中遇到的问题就是不会调用PropertyMgr类来实现重生,因为那个累我和我的搭档是从别人处借鉴来的,于是都看不懂,最后调用也是在网上学习别人是怎么调用的才得以解决重生问题。 public void paint(Graphics g) { /* * 指明子弹-爆炸-坦克的数量 * 以及坦克的生命值 */ g.setColor(Color.WHITE); g.drawString("scores: "+ score , 10 , 40) ;//得分 //g.drawString("missiles count:" + mi

35、ssiles.size(), 10, 50); //g.drawString("explodes count:" + explodes.size(), 10, 70); g.drawString("tanks count:" + tanks.size(), 10, 50); //敌军坦克数量 g.drawString("myTank life:" + myTank.getLife(), 10, 60);//我军坦克数量 //敌军坦克死后重生 if(tanks.size() <= 0) { for(inti=0;i

36、t(PropertyMgr.getProperty("reProduceTankCount")); i++) { tanks.add(new Tank(100*(i+1), 250, false, Direction.D, this)); }} //解决子弹的消亡问题 for(int i=0; i

37、w2); m.hitWall(w3); m.hitWall(w4); m.draw(g); } //得到爆炸,画爆炸 for(int i=0; i

38、sWithWall(w2); t.collidesWithWall(w3); t.collidesWithWall(w4); t.collidesWithTanks(tanks); t.collidesWithTank(myTank); t.draw(g); } //画坦克、墙、血块 myTank.draw(g); myTank.eat(b); w1.draw(g); w2.draw(g); w3.draw(g); w4.draw(g); b.draw(g); } 3、 主窗口的显示

39、这里实现了敌军坦克的生成,也必须相当注意初始位置的确定,保证不和场景内其他事件位置重合。还有就是在退出游戏室弹出的提示框的制作。制作提示框也是借鉴别人程序一般怎么设置的。 /** * 本方法显示坦克主窗口 * */ public void lauchFrame() { //敌军坦克初始位置 int initTankCount = Integer.parseInt(PropertyMgr.getProperty("initTankCount")); for(int i=0; i

40、new Tank(100*(i+1), 50, false, Direction.D, this)); } for(int j=0; j

41、c void windowClosing(WindowEvent e) { JOptionPane.showMessageDialog(null, "少侠您忍心抛弃我么???","萌萌哒!", JOptionPane.ERROR_MESSAGE); System.exit(0) ; }}); this.setResizable(false); this.setBackground(Color.BLACK); this.addKeyListener(new KeyMonitor()); setVisible(true); ne

42、w Thread(new PaintThread()).start(); } //主方法 public static void main(String[] args) { TankClient tc = new TankClient(); tc.lauchFrame(); } 4、 键盘监听的实现 在实现键盘操控子弹的时候,之前是按键便发射子弹,但是有很多弊端,例如按着不放等,于是后来修改为,按键检测,释放键盘便发射子弹,这样便解决了一直发射子弹的问题。 private class KeyMonitor extends KeyAdapter { pu

43、blic void keyReleased(KeyEvent e) { myTank.keyReleased(e); } public void keyPressed(KeyEvent e) { myTank.keyPressed(e);} }} 4.4运行结果及分析 当功能一步步实现完成的时候调试成功的成果如下: 1、 开始时,敌军在上墙和下墙周围各生成4台坦克,随机运动,开发子弹。我军坦克坦克初始位置为最中央。 2、 在敌军第一批坦克战亡之后自动在上墙周围产生五台新坦克继续作战,直至我军战亡,下图为敌军新产

44、生五台坦克。 3、 在我军坦克战亡之后界面弹出提示,提示包含分数总结算,分数计算规则在上面已经讲到,这时可以按键F2使我军重生继续作战,最多重生100次。 五、设计心得  这次通信实践我和我的搭档杜海霞一起用Java语言编写了一个较为简单的坦克大战,实现了坦克能够四处移动、坦克可以打击敌军、敌军能够四处移动、敌军能够打击我军、打击能够模拟爆炸、 场景能够产生障碍、我军能够增长生命、敌我两军能够重生等功能,基本完成了我们的预期要求,其中实现双机或则多机通信对战模块没有像预计那样完成,但在接下来的时间里,

45、我们会继续完善我们的坦克游戏,实现预想的效果或则更加高级的效果。 在这次实践设计中,我从对Java一无所知到现在完成设计,进步了很多,其中有一本书叫做《零基础学Java》帮助了我很多,让我从初始的安装软件到后来的设计游戏,我基本了解了Java语言的语法、思想和应用。Java语言现在也算是较为火热的一门编程语言,这次实践为我开辟了一条新的语言道路。其实在编程方面,注重的都是思想流程的理解,当我们制定了程序实现流程,以及其中问题的解决办法之后,实现起来就并不是那么难。 这次实践过程中我很感谢我的搭档,我们经常一起讨论一起学习,一起讨论不懂的问题,我们在学习和讨论的途中编写了几次大概流程,以及类

46、似子弹碰撞、按键处理的问题解决办法,期间她还给我讲解了很多知识,体现了我们团结协作的精神。 六、结论与展望 6.1结论 在本次实践过程中,首先定位的要求比较高,既要游戏界面的完整性,又要其功能的多样性,还要实现双机以及多机的通信的对战模式。结果我们并没有将事先定好的要求完全实现,我们实现了坦克能够四处移动、坦克可以打击敌军、敌军能够四处移动、敌军能够打击我军、打击能够模拟爆炸、 场景能够产生障碍、我军能够增长生命、敌我两军能够重生等功能,对于我们来说,也是比较满意的。 整个程序我们是分模块来完成的,首先讨论好了各个板块,然后分工各个板块,最后在主类中统一应用。板块的划分又

47、是通过类别来划分的,本系统一共包括8个Java源文件,其中TankClient为主类,其中包括主方法,应用包括Tank类、Blood类、方向类、爆炸类、子弹类、墙体类以及PropertyMgr类,我主要负责的类别有Blood类、方向类、爆炸类、墙体类以及主方法的那个类,其他的有我的搭档负责,当然在主要类的编写时我的搭档也帮助了我很多,是我学习到了很多自己一个人不明白的知识。 6.2展望 本次通信实践设计有一个最重要的功能没有实现,我和我的搭档对它充满展望,那就是双机或则多机通信实现两方主要坦克的对战;还有一点就是实现部分墙体可以让子弹消灭,增加并丰富界面障碍,然后子弹攻击后减少障碍;最后一

48、点是丰富登陆界面,可以实现人物选择等。 其实在丰富界面的同时就可以大幅度提升游戏的功能与美感。针对双机通信方面的添加,我们要专门留下对接接口,建立服务器和客户端,利用套接字来实现通信,在筛选需要传递的数据时,规范相关协议和传递方法,应该就可以简单实现了;针对墙体障碍方面,我们要将绘画的墙体利用图片来实现,就可以实现不同类型不同大小,又具有美感的障碍物,然后将可以让子弹消灭的墙体图片放小,当子弹撞击某点时,规定该点周围多大面积的墙体便产生爆炸并移除界面即可。针对登陆界面以及选择人物的功能呢个,只能利用编程多画几个框,每个框中添加模拟按键和调用人物图片,当然这里说的人物是指坦克。 以上就是我对

49、该设计的不足和期望做的一个总结,希望接下来的时间我和我的搭档可以继续完善,设计出一个既有美感又有趣好玩的坦克大战。 七、参考文献 [1] 常建功等编著,零基础学Java(第3版)[M]. 机械工业出版社,2012年. [2] 张桂珠 刘丽 陈爱国著,Java面向对象程序设计(第2版)[M]. 北京邮电大学出版社. [3] 毕广吉著,Java程序设计实例教程[M]. 北京:冶金工业出版社,2007年. [4] 王保著,Java面向对象程序设计[M].北京:清华大学出版社,2003年. [5] 国家863中部软件孵化器编,:Java从入门到精通[M]. 人民邮电出版社,2010年. [6] (美)埃克尔著 陈昊鹏译,Java编程思想[M].机械工业出版社,2007年. [7] 孙更新著,Android从入门到精通[M].电子工业出版社,2011年. [8] 马士兵著,Java教程视频,2012年. 18

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服