基于j2se的坦克大战_毕业设计论文(编辑修改稿)内容摘要:

脑、移动设备,用的都是 J2ME。 但是,大部分非企业级软件还是在 J2SE 上开发的比较多。 首先,这是因为很多的应用软件都是在 J2SE 上开发的;其次, J2SE 是和 J2EE 兼容的,企业版是在标准版上的扩充,在 J2SE 的版本上开发的软件,拿到企业的平台上是一样可以运行的;再次,一般开发还是在 J2SE 的环境上,只是说 J2ME 提供微型版的一个环境。 在J2SE 上虚拟出一个环境,开发出来的应用软件是可以拿到微型版上运行的。 联机通信机制 网络编程,简单地理解就是两台计算机相互通信。 其基本模型就是客户机 /服务器模型,也就是通信双方中的一方必须提供一个固定的位置,而另一方只需要知道这个固定的位置,并且建立两者之间的联系,然后完成数据交换。 这里提供固定位置的一方通常称为服务器,而建立联系的一方称为客户端。 Socket(中文意思为插座),基于客户机 /服务器的 Soctet 通信模式如图 所示: 8 图 基于客户机 /服务器的 Soctet 通信模式图 当客户程序需要与服务器程序通讯的时候,客户程序在客户机创建一个socket 对象, Socket 类 有 几 个 构 造 函 数。 两 个 常 用 的 构 造 函 数 是 Socket(IAddress addr, int port) 和 Socket(String host, int port),两个构造函数都创建了一个基于 Socket 的连接服务器端 流套接字的流套接字。 两个函数都通过参数 port 获得服务器的端口号。 假设已经建立连接了,网络 API 将在客户端基于 Socket 的流套接字中捆绑客户程序的 IP 地址和任意一个端口号,否则两个函数都会抛出一个 IOException 对象。 如果创建了一个 Socket 对象,那么它可能通过调用 Socket 的 getInputStream()方法从服务程序获得输入流读传送来的信息,也可能通过调用 Socket 的 getOutputStream()方法获得输出流来发送消息。 在读写活动完成之后,客户程序调用 close()方法关闭流和 流套接字。 Java 图形编程 Java 中的 Graphics 类是用于绘图和显示格式化文本的工具类。 在 Java 程序中绘图必须在一个窗口(容器)中进行,绘图窗体经常被设计为一个组件容器。 一般首先在一个面板中进行绘制,然后再将这个面板添加到显示窗口中去。 Graphics 类是在 包中申明,显示格式化文本和绘图时通过调用Graphics 类的 draw()方法实现的,例如 drawString(String),drawLine()等。 绘图采用的坐标系是原点在左上角,纵轴向下以像素为单位的坐标系。 创建 Socket 类的对象 指定服务器端公认的 Socket地址和端口 在 Socket 上监听客户端的链接请求 接收客户端的请求信息 解释并处理请求信息 向服务器发出请求 向服务器端发送链接请求 创建 Socket 类对象 客户端 将处理结果返回给客户端 接收服务结果 服务请求 服务响应 服务器 端 9 本章小结 在本章节中首先介绍了该系统的运行环境,值的注意的是软件环境的配置,因为整个系统都是在虚拟环境下运行的,所以虚拟环境对于整个设计的调试和运行至关重要;其次对开发工具 的简单介绍,利用 eclipse 开发项目,是可以提高项目的开发效率。 还有是对一些技术理论, J2SE 框架, Java 语言,系统运行所支持的操作系统,联机通信机制及 Java 图形编程等理论做了简单的介绍,为本系统后期实现图形化界面和网络通信做了理论支持。 第 3 章 系统设计 系统功能设计 坦克 大战总体功能设计 坦克大战游戏 主要实现 玩家参加游戏的 整个流程,用户 登陆游戏客户端选择游戏模式,可分为单机模式和网络对战模式 , 选择单机模式可以直接进入游戏状态;选择网络对战模式,在启动服务器后,玩家需要选择自己的角色,用户名和ID等玩家相关 资料,成功后使用其 账 号 进行 登录 游戏 (只有 成功 登录 的玩家 才 能参与网络对战游戏 功能); 登陆玩家就 可以 通过控制键盘操作 , 加入对战游戏。 整个网络版坦克大战游戏 流程 图如图 : 10 图 网络坦克大战游戏 流程 TankClient类基本功能分析 TankClient 类是整个系统的核心部分,它承担整个系统的所有可实现功能的调度工作。 是整个游戏运行的场所。 TankClient 类设计流程图如图 所示: 初 始 化 游戏模式 对 战 对 战 随机产生敌方坦克 玩家坦克 判断胜负 玩家一 玩家二 玩家一 玩家二 敌方坦克 我方坦克 判断胜负 结 束 选择角色,填写信息 11 图 TankClient 类设计流程 TankClient 类是主类,通过调用其他类中封装的方法来使整个系统运行起来,下面显示 TankClient 与各个类之间的关系如图 所示: 图 游戏系统类关联图 Tank 类基本功能分析 Tank(坦克)类中,封装了一些变量属性,包括坦克自己的大小开始 初始化坦克 对战双方玩家坦克由键盘控制移动 发射炮弹 碰撞检测(坦克和子弹) 不处理 同角色坦克 产生爆炸 不同角 色坦克 判断胜负 结束 TankClient 类(主类) Tank 类(我方) Tank 类(敌方) New 参数 1 New 参数 2 调用 Missile 类 打中 调用 Explode 类产程爆炸 判断胜负 键盘控制移动 键盘控制移动 打击 12 ( WIDTH,HRIGHT),运动速度 (SPRRD_X:在 x轴方向的速度; SPEED_Y:在 Y轴方向的速度 )、生命值控制( life)、坦克编号( id)、坦克名 (name)、方向控制 (dir)、生死控制 (live)、好坏控制 (good)的变量等。 Tank 类中没有 main 函数,不是主类 ,它当中只封装一些变量属性和静态方法,被 TankClient 类调用来实现坦克的一系列动作。 Tank 类中的主要方法 罗列如下: ( 1) getRect()方法 public Rectangle getRect() { return new Rectangle(x, y, , ); } Rectangle 类是碰撞检测的辅助类,通过得到子弹的 x, y 坐标和宽高度,检测两个矩形是否碰撞(相交); ( 2) draw()方法:负责将所有的活动在屏幕上画出来; ( 3) move()方法:主要负责控制坦克的移动,包括 8个方向(左,左上,上,右上,右,右下,下,左下)的控制以及给坦克一个移动的速度; ( 4) keyPressed()方法:设定使用键盘的“↑”“↓”“←”“→”键控制坦克移动; ( 5) keyReleased()方法:处理按键抬起事件,抬起“ CTRL”键时,发射炮弹并加入新炮弹,能够逐一发射每一发炮弹、抬起“ A”键可以发射超级炮弹等功能; ( 6) locationDirection()方法:定义了炮筒方向,可以向八个方向发射炮弹; ( 7) fire()方法:处理发送子弹的方法; ( 8) bumpWithWall()方法:主要负责处理坦克撞墙事件; ( 9) bumpWithTank()方法 :主要到负责处理坦克和坦克相撞事件; Missile类基本功能分析 Misslile(子弹 )类和 Tank 类一样,只封装一些变。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。