《计算机网络系统实践》报告.doc
《计算机网络系统实践》报告
2015年09月
基于Java的网络版坦克大战游戏设计
设计要求
1.1设计目的
(1)熟悉开发工具(JAVA)的基本操作;
(2)掌握windows/Linux应用程序的编写过程;
(3)对于Socket编程建立初步的概念。
1.2设计要求
(1)熟悉Socket API 主要函数的使用;
(2)掌握相应开发工具对Socket API 的封装;
(3)设计并实现一对一网络版小游戏,如:Tic-Tac-Toe、五子棋等。
我选择了网络版坦克大战的设计。
开发环境与工具
2.1 编程语言:JAVA
Java 语言是一种跨平台,适合于分布式计算环境的面向对象编程语言。JAVA现在主要用在WEB开发,手机游戏及一些平台游戏的开发,因为它具有很好的跨平台性,在手机等各种电子产品上应用非常广泛。
2.2 运行环境:JDK1.6
2.3 开发工具:My Eclipse 10
MyEclipse,是在eclipse 基础上加上自己的插件开发而成的功能强大的企业级集成开发环境,主要用于Java、Java EE以及移动应用的开发。MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持相当不错。
2.4 网络建立:socket
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,像一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座,就可以得到不同的服务。
设计原理
联机通信机制
网络编程,简单地理解就是两台计算机相互通信。其基本模型就是客户机/服务器模型,也就是通信双方中的一方必须提供一个固定的位置,而另一方只需要知道这个固定的位置,并且建立两者之间的联系,然后完成数据交换。这里提供固定位置的一方通常称为服务器,而建立联系的一方称为客户端。Socket(中文意思为插座),基于客户机/服务器的Soctet通信模式如图3.1所示:
图3.1 基于客户机/服务器的Soctet通信模式图
当客户程序需要与服务器程序通讯的时候,客户程序在客户机创建一个socket对象,Socket类有几个构造函数。两个常用的构造函数是 Socket(InetAddress addr, int port) 和 Socket(String host, int port),两个构造函数都创建了一个基于Socket的连接服务器端流套接字的流套接字。两个函数都通过参数port获得服务器的端口号。假设已经建立连接了,网络API将在客户端基于Socket的流套接字中捆绑客户程序的IP地址和任意一个端口号,否则两个函数都会抛出一个IOException对象。如果创建了一个Socket对象,那么它可能通过调用Socket的 getInputStream()方法从服务程序获得输入流读传送来的信息,也可能通过调用Socket的 getOutputStream()方法获得输出流来发送消息。在读写活动完成之后,客户程序调用close()方法关闭流和流套接字。
四、系统功能描述及软件模块划分
4.1 系统功能描述
4.1.1单机版人机对战
A)玩家通过上、下、左、右键来控制坦克的八个方向:上、下、左、右、左上、右上、左下、右下;
B)出现十个敌方坦克,自由运动并发射炮弹;
C)玩家通过“control”键发射炮弹;
D)打中敌方或被敌方打中,死亡;
E)碰撞时死亡。
4.1.2网络对战模式
在人机在人机对战模式中实现功能基础上,增加以下功能实现网络对战功能:
A)添加网络功能,使两台或者多台不同计算机的玩家通过一定的网络连接,加入到游戏中;
B)能够自动分组选择阵营,一红一篮双方交替进入游戏,填写自己的游戏信息,各个玩家之间实现网络对战功能,并且同是一方的坦克不能相互攻击;
C)玩家ID是自动分配的,采用递加的模式。
4.1.3总体功能设计
坦克大战游戏主要实现玩家参