基于JAVA的“五子棋”网络游戏开发.pdf
《基于JAVA的“五子棋”网络游戏开发.pdf》由会员分享,可在线阅读,更多相关《基于JAVA的“五子棋”网络游戏开发.pdf(75页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基于 JAVA 的“五子棋”网络游戏开发1第一章 系统概述1.1 课题意义本程序旨在用 JAVA 实现一个基本于 C/S 模式的五子棋网络对战游戏。玩家作为客户端通过服务器端与其它玩家进行对战,聊天等功能。通过实现本程序加深对计算机网络编程的了解。1.2 国内外有关研究动态电脑游戏行业经过二十年的发展,已经成为与影视、音乐等并驾齐驱的全球最重要的娱乐产业之一,其年销售额超过好莱坞的全年收入。互联网的出现为电脑游戏行业发展注入了新的活力,凭借信息双向交流、速度快、不受空间限制等优势,让真人参与游戏,提高了游戏的互动性、仿真性和竞技性,使玩家在虚拟世界里可以发挥现实世界无法展现的潜能,改变了单机版
2、游戏固定、呆板、与机器对话的状况。网络游戏的这些优势不仅使其在电脑游戏行业中异军突起并在某种程度上取代了单机版游戏,而且成为网络业三大(网上金融、网上教育和网络游戏)赢利且利润优厚的领域之一1。网络作为一种新兴的传播方式,主要包括三大内容:娱乐、资讯、通讯。提到网络娱乐,过去主要指的是单机版游戏,没有引入网络的概念2但随着科技的发展,游戏娱乐产业也在成长3目前,国内的游戏娱乐产业正处于起步阶段,特点表现为:第一,它是一种文化的传播。娱乐产业可以潜移默化地改变人的观念,当前,很多多媒体的播放已被电脑网络所取代4。第二,网络游戏加强了人与人的沟通。第三,网络游戏具有一定的教育意义5。网络游戏所具有
3、的角色扮演的功能,使得玩家能通过互助更好地完成游戏中的各项任务。网络无国界,游戏在网络文化产业世界的发展中地位会越来越高6。目前在国外,休闲游戏如棋类等,玩家的年龄跨度非常大,这和我国目前网游市场以青少年为主要消费人群的状况截然不同7。其实,网络可以解决空间的问题,网络和生活越来越息息相关,因此,开辟适合各个年龄层的游戏产品迫在眉睫。同时,这也涉及到一个企业开发的能力。娱乐产业发展到一定程度,通过不断锻炼和经验的积累,完全可以通过融入娱乐的成分把教条的东西深入浅出地展现给消费者8。基于 JAVA 的“五子棋”网络游戏开发2就国内的发展来看,最近這两三年内国内的游戏公司如雨后春笋般的成立,所開發
4、或代理的网络游戏更是不胜枚举。以全球游戏业界的发展来看,這几年韩国的表现最为突出,特別是在网络游戏的技术研发兴游戏制作,其所发行的网络游戏更成为全球游戏产业重要的指标之一。去年在美国洛杉矶所举行的 E3(Electronic EntertainmentExposition)展中,已经有几家的韩国厂商挤入世界第一线的游戏开发厂商之列9。近几年来,由于 3D 硬体绘图技术的突破,使得即时描绘的书面越来越精致,而且3D 遊戏性更多元化更逼近真实世界,因此在遊戏产业中,3D 游戏已经逐渐取代 2D 游戏为游戏市场的主流,即使是网络游戏,也慢慢趋向 3D 化。然而游戏 3D 化将会带来的游戏开发上的困难
5、等问题,这些问题以后都需要逐步解决10。1.3 课题主要内容及创新之处五子棋是一种受大众广泛喜爱的游戏,其规则简单,变化多端,非常富有趣味性和消遣性。本程序是用 JAVA 实现的一个基本于 C/S 模式的五子棋网络对战游戏。JAVA是一种简单的,面向对象的,分布式的,解释的,健壮的,安全的,结构中立的,可移植的,性能很优异的多线程的,动态的语言。因此用 Java 开发的网络应用系统可以在各种平台上运行,实现了设备无关性,一次开发处处运行,大大增加了开发效率,减少了重复劳动。玩家作为客户端通过服务器端与其它玩家进行对战,聊天等功能11。本程序作为一种网络游戏,其乐趣是人与人之间的对抗,而不仅仅是
6、人与事先设置的各种程序的对抗,所以比普通的人机对战游戏更具有生命力,更具有趣味性12。而且通过实现本程序可以加深对计算机网络编程的了解。基于 JAVA 的“五子棋”网络游戏开发3第二章 五子棋简介2.1五子棋起源、历史、简介五子棋起源于中国古代的传统黑白棋13。现代五子棋日文称之为連珠,英译为Renju,英文称之为Gobang或FIR(Five in a Row 的缩写),亦有连五子、五子连、串珠、五目、五目碰、五格等多种称谓。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征短、平、快,又有古典哲学的高深学问阴阳易理;它既有简单易学的特性,为人民群
7、众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有场的概念,亦有点的连接。它是中西文化的交流点,是古今哲理的结晶。2.2五子棋规则说明2.2.1 棋盘棋盘正中一点为天元。棋盘两端的横线称端线。棋盘左右最外边的两条纵线称边线。从两条端线和两条边线向正中发展而纵横交叉在第四条线形成的四个点称为星。天元和星应在棋盘上用直径约为 0.5 厘米的实心小圆点标出。以持黑方为准,棋盘上的纵轴线从左到右用英文字母 AO 标记。横行线从近到远用阿拉伯数字 115 标记。纵横轴上的横纵线交叉点分别用横纵线标记的名称合写成。如天元H8,四个星分别为 D4、D12、
8、L12、L4 等。见图 2.1基于 JAVA 的“五子棋”网络游戏开发4图 2.1 棋盘2.2.2 基本规则黑白双方依次落子,任一方先在棋盘上形成横向、竖向、斜向的连续的相同颜色的五个(含五个以上)棋子的一方为胜。2.2.3 阳线和阴线阳线:棋盘上可见的横纵直线。阴线:棋盘上无实线连接的隐形斜线。2.2.4 连在棋盘某一阳线或阴线上形成 5 个以上的同色棋子不间隔地相连。五连:在棋盘上形成的 5 个同色棋子的连。长连:在棋盘上形成的 6 个或 6 个以上同色棋子的连。2.2.5 四包括活四和冲四图 2.2 活四说明活四:在棋盘某一条阳线或阴线上有同色 4 子不间隔地紧紧相连,且在此 4 子两端
9、延长线上各有一个无子的交叉点与此 4 子紧密相连。见图 2.2冲四:除活四外的,再下一着棋便可形成五连,并且存在五连的可能性的局面。见图 2.3基于 JAVA 的“五子棋”网络游戏开发5图 2.3 冲四说明白棋再下一着可形成长连的局面也视为四。见图 2.4图 2.4 白棋长连形成的四2.2.6 三指活三,包括连三和跳三活三:在棋盘某一条阳线或阴线上有同色 3 子不间隔地紧紧相连,且在此 3 子两端延长线上各有一个无子的交叉点与此 3 子紧密相连。连三:在棋盘某一条阳线或阴线上有同色三子相连,且在此三子两端延长线上有一端至少有一个,另一端至少有两个无子的交叉点与此三子紧密相连。跳三:中间仅间隔一
10、个无子交叉点的连三,但两端延长线均至少有一个无子的交叉点与此三子相连。2.2.7 三手可交换是指黑棋下盘面第 3 着棋后,白方在应白 4 着棋之前,如感觉黑方棋形不利于己方,可提出交换,即执白棋一方变为执黑棋一方,而黑方不可以不换。2.2.8 五手两打是指黑棋在下盘面上关键的第 5 手棋时,必须下两步棋,让白棋在这两步棋中任选一步,然后再继续对弈。一般说来,白棋肯定拿掉对白方不利的一点,而保留对黑方较为不利的那点让黑方行棋。2.2.9禁手规则无禁手:是指采用最简单古老的规则。黑白双方依次落子,任一方先在棋盘上形成横向、竖向、斜向的连续的相同颜色的五个(含五个以上)棋子的一方为胜。这种规则非常简
11、单容易理解。适合初学的业余五子棋爱好者。但是在这种规则下黑棋胜算较大。甚至已经有人证明在黑白双方都不出现错误的情况下,黑棋可以必胜。所以一般要求连续基于 JAVA 的“五子棋”网络游戏开发6玩两盘以上,既任一方执黑,执白各一次。有禁手:鉴于无禁手规则黑棋必胜,人们不断采用一些方法限制黑棋先行的优势,以平衡黑白双方的形式。于是针对黑棋的各种禁手逐渐形成。禁手最简单地说就是一手棋形成长连(连成五个以上连续相同的棋子),或两个以上的活三,或者两个以上的四,并且这些四、活三和长连都要包括这一手棋。并且规定,当禁与连五同时出现时为黑方取胜禁手不成立,禁手是针对黑棋而言的,白棋没有任何禁手。例如:黑棋长连
12、是禁手,白棋长连算赢棋。国际比赛规则规定:对局中如黑方出现禁手,白方应立即指出禁手点,黑方即负。如白方在黑方出现禁手后,又落一步白子,黑棋禁手则不成立了。所以 在有禁手的房间里,如果黑方出现禁手,白方应立即按下禁手按钮。程序会判黑方负。如果这时白方又在棋盘上落一子,黑棋禁手则不成立了。基于 JAVA 的“五子棋”网络游戏开发7第三章 方案设计及开发工具的选取3.1选用 Java 进行开发的原因Java 是一种简单的,面向对象的,分布式的,解释的,健壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言14。因此用 Java 开发的网络应用系统可以在各种平台上运行,大大增加了开发效
13、率,减少重复劳动。而且,Java 集成的网络功能分有利于开发网络应用系统15。Java 具有许多的优点:3.1.1 简单Java 最初是为对家用电器进行集成控制而设计的一种语言,因此它必须简单明了。Java 语言的简单性主要体现在以下三个方面:1.Java 的风格类似于 C+,因而 C+程序员是非常熟悉的。从某种意义上讲,Java 语言是 C 及 C+语言的一个变种,因此,C+程序员可以很快就掌握 Java 编程技术。2.Java 摒弃了 C+中容易引发程序错误的地方,如指针和内存管理。3.Java 提供了丰富的类库。3.1.2 面向对象面向对象可以说是 Java 最重要的特性。Java 语言
14、的设计完全是面向对象的,它不支持类似 C 语言那样的面向过程的程序设计技术。Java 支持静态和动态风格的代码继承及重用。单从面向对象的特性来看,Java 类似于 SmallTalk,但其它特性、尤其是适用于分布式计算环境的特性远远超越了 SmallTalk。3.1.3 分布式Java 包括一个支持 HTTP 和 FTP 等基于 TCP/IP 协议的子库。因此,Java 应用程序可凭借 URL 打开并访问网络上的对象,其访问方式与访问本地文件系统几乎完全相同。为分布环境尤其是 Internet 提供动态内容无疑是一项非常宏伟的任务,但 Java 的语法特性却使我们很容易地实现这项目标。基于 J
15、AVA 的“五子棋”网络游戏开发83.1.4 健壮Java 致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java 自己操纵内存减少了内存出错的可能性。Java 还实现了真数组,避免了覆盖数据的可能。这项功能特征大大缩短了开发 Java 应用程序的周期。Java 提供 Null 指针检测数组边界检测异常出口字节代码校验3.1.5 结构中立另外,为了建立 Java 作为网络的一个整体,Java 将它的程序编译成一种结构中立的中间文件格式。只要有 Java 运行系统的机器都能执行这种中间代码。现在,Java运行系统有Solaris2.4(SPARC),Win32系统
16、(Windows95和WindowsNT)等.Java 源程序被编译成一种高层次的与机器无关的 byte-code 格式语言,这种语言被设计在虚拟机上运行,由机器相关的运行调试器实现执行。3.1.63.1.63.1.63.1.6 安全安全安全安全Java 的安全性可从两个方面得到保证。一方面,在 Java 语言里,像指针和释放内存等 C+功能被删除,避免了非法内存操作。另一方面,当 Java 用来创建浏览器时,语言功能和一些浏览器本身提供的功能结合起来,使它更安全。Java语言在你的机器上执行前,要经过很多次的测试。它经过代码校验,检查代码段的格式,检测指针操作,对象操作是否过分以及试图改变一
17、个对象的类型。3.1.7 可移植的同体系结构无关的特性使得 Java应用程序可以在配备了 Java解释器和运行环境的任何计算机系统上运行,这成为 Java 应用软件便于移植的良好基础。但仅仅如此还不够。如果基本数据类型设计依赖于具体实现,也将为程序的移植带来很大不便。例如在 Windows3.1 中整数(Integer)为 16bits,在 Windows95 中整数为 32bits,在 DECAlpha 中整数为 64bits,在 Intel486 中为 32bits。通过定基于 JAVA 的“五子棋”网络游戏开发9义独立于平台的基本数据类型及其运算,Java 数据得以在任何硬件平台上保持一
18、致。Java 语言的基本数据类型及其表示方式如下:byte8-bit 二进制补码short16-bit 二进制补码 int32-bit 二进制补码 long64-bit 二进制补码float32-bitIEEE754 浮点数 double32-bitIEEE754 浮点数 char16-bitUnicode字符。在任何 Java 解释器中,数据类型都是依据以上标准具体实现的。因为几乎目前使用的所有 CPU 都能支持以上数据类型、864 位整数格式的补码运算和单/双精度浮点运算。Java 编译器本身就是用 Java 语言编写的。Java 运算系统的编制依据 POSIX 方便移植的限制,用 ANS
19、IC 语言写成。Java 语言规范中也没有任何同具体实现相关的内容。3.1.8 多线程Java 的多线程功能使得在一个程序里可同时执行多个小任务。线程有时也称小进程,是一个大进程里分出来的小的独立的进程。因为 Java 实现的多线程技术,所以比 C 和 C+更健壮。多线程带来的更大的好处是更好的交互性能和实时控制性能。当然实时控制性能还取决于系统本身(UNIX,Windows,Macintosh 等),在开发难易程度和性能上都比单线程要好。任何用过当前浏览器的人,都感觉为调一副图片而等待是一件很烦恼的事情。在 Java 里,你可用一个单线程来调一幅图片,而你可以访问 HTML 里的其它信息而不
20、必等它。3.1.9 与 C 和 C+语言的异同Java 提供了一个功能强大语言的所有功能,但几乎没有一点含混特征。C+安全性不好,但 C 和 C+还是被大家所接受,所以 Java 设计成 C+形式,让大家很容易学习。Java 去掉了 C+语言的许多功能,让 Java 的语言功能很精炼,并增加了一些很有用的功能,Java 去掉了以下几个 C 和 C+功能和特征:指针运算结构typedefs#define需要释放内存全局变量的定义这个功能都是很容易引起错误的地方。基于 JAVA 的“五子棋”网络游戏开发103.2客户端服务器模式3.2.1 C/S 模式简介客户 机/服务器(Client/Serve
21、r)模式是指两个逻辑(往往是物理的)系统(客户机/服务器)及其应用程序逻辑组件之间复杂关系的协同16。一般而言,C/S 应用系统从物理上都可划分为客户机与服务器两大部分,而逻辑上又可分解为三部分:表达逻辑、业务处理逻辑和数据管理逻辑。C/S 应用系统的格局和性能主要取决于这些逻辑成份在客户机上或在服务器上的组织与分配。C/S 模式将一个应用分为两个部分:前端(客户端)、后端(服务器)。客户机指提供客户机服务的逻辑系统,服务器指向服务器请求提供服务的逻辑系统。一般来说,客户机向服务器发出请求为其完成一部分工作服务器则处理客户机的请求并返回结果。C/S 两层模式主要有以下特点:分布的处理与集中的数
22、据操作管理有机地结合;开放式的系统;用与操作系统、网络协议无关的方式存取数据,支持多平台和跨平台;服务器对用户是透明的;交互性强;相对 B/S 模式,C/S 模式速度快,更利于处理大量数据。C/S 两层模式中,客户机并不是毫无运算能力的输入、输出设备,而是具有了一定的数据处理和数据存储能力,通过把应用软件的计算和数据合理地分配在客户机和服务器两端,可以有效地降低网络通信量和服务器运算量。由于服务器连接个数和数据通信量的限制,这种结构的软件适于在用户数目不多的局域网内使用。国内目前的大部分 ERP(财务)软件产品即属于此类结构。C/S 模式(Client-Server Architecture)
23、可能是应用软件开发所使用的最成功的一种模式。它首先是出现在主机系统中,在局域网环境下,其性能显的格外的突出。而现在,C/S 模式已经成为一种基本的开发设计模式。虽然 C/S 应用软件包含了 Client 和 Server 部件并且在网络中相互交互。但这并不代表说所有的 C/S 应用软件均需要按照这样来设计(即网络不是必须的),它是允许在单机上运行的。虽然 两 层 系统有以上的优点,但在多用户、多数据库、且非安全的网络环境下(例如 Internet),两层的应用就有明显的局限性。服务器端的数据库必须同每一个活动基于 JAVA 的“五子棋”网络游戏开发11的客户保持连接,这些连接消耗了大量的运算资
24、源,其结果是随着客户数目的增加,性能不断下降.由于应用逻辑全部驻留在客户端,当应用环境发生变化需要改变事务逻辑时,每个客户机上的程序都需要更新,给系统的维护和管理造成了一定的困难。随着应用系统越来越复杂,客户端应用程序变得越来越庞大,对客户机的处理能力要求越来越高,成为所谓的“胖客户机”在 C/S 模式中,工作原理可以简单的理解为:Client 向 Server 提交一个请求,Server 则使用一些方法处理这个请求,并将效果返回给 Client.见图 3.1图 3.1 C/S 模式原理图在处理 Client 的请求时,Server 本身可以成为另一个 C/S 模式中的 Client.见图 3
25、.2图 3.2 server 与 client 关系图大部份的人认为在 Client-Server 应用软件中,Server 做了几乎所有的工作。但实际上基于 JAVA 的“五子棋”网络游戏开发12并不是这样。在实际应用中,Client 执行了大部份的软件逻辑并完成了大部份的工作。Server 当然也做了些工作。但它主要的工作是接受 client 的请求并返回结果。有许多人说 C/S 结构是分布式结构中最常用的一个例子。的确,它确实是一个常用的架构模式,而且它也确是通过网络进行 Client 和 Server 之间的交互,但是,严格来说,C/S 模式有可能不是真正意义上的分布式结构。为什么这么
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 JAVA 五子棋 网络游戏 开发
限制150内