1、 I 摘 要 目前,随着计算机网络的的发展,游戏已经成为现在人生活的一部分,人们以不同的方式通过网络来娱乐,休闲。以计算机技术和网络技术为核心的现代网络技术已经在现实生活和生产中得到了广泛的使用,休闲类网络游戏集趣味性,娱乐性,互动性和益 智性于一体,已经成为多数人群的休闲方式,也为多数人所喜好。当然 , 为了满足没有网络同样能娱乐的要求,许多小游戏做成了单机网络的双功能。 本程序使用 JAVA 语言实现,通过对图形界面,绘图,布局管理器等去构造出五子棋游戏界面,在此基础上,利用 套接字 的知识,建立起服务器与客户端 之间的 连接,利用多线程技术来处理服务器端与客户端之间的数据传输、 通信问题
2、,使得客户端和服务器端之间能够同步的进行处理。 通过对软件的编写,更深入的理解万物皆对象这句话的理解,增强了对象的封装能力,也 体会到利用面向对象语言处理一些问题的优势。同时也加深了对多线程、 流 、 套接字等高级技术的理解。 关键词 : 多线程,套接字, GUI,五子棋II Abstract Now, with the development of computer network, the game has become a part of life now people, people in different ways through the network to the entert
3、ainment and leisure. Computer and network technology as the core of modern network technology has been widely used in real life and production, casual game set interesting, entertaining, interactive and puzzle in one, has become the majority population leisure, but also for the majority preference.O
4、f course, in order to meet the no network requirements of the same entertainment, many games made a stand-alone and network function. This program uses the JAVA programming language to achieve, through the GUI, graphics, layout manager to construct the interface of Gobang, on this basis, the use of
5、the knowledge of the socket, and establish a connection between the server and client, multi threading technology to handle data transfer between the server and the clients, communication problems, making the synchronization processing between the client and server side. Through the preparation of t
6、he software, a more in-depth understanding of all things is an object of this sentence to understand, enhance the package of the object, but also realize the advantages of object-oriented language to deal with some problems. Also deepened the understanding of the multi-threaded, streams, sockets and
7、 other senior technical. KEY WORDS: multiple threads,socket, GUI, Gobang1 目 录 前 言 . 1 第 1 章 绪 论 . 2 1.1 JAVA 语言历史 . 2 1.2 JAVA 语言的特点 . 2 1.3 JAVA 的开发环境 . 3 1.4 JAVA 的编译环境 . 3 1.41 JDK 介绍及安装 . 4 1.42 JAVA 开发工具 . 4 1.5 SOCKET 机制 . 5 第 2 章 系统需求分析 . 6 2.1 五子棋的发展史 . 6 2.2 五子棋特点、规则和界面需求 . 6 2.3 五子棋功能需求 .
8、7 2.31 五子棋游戏功能 . 7 2.32 聊天功能 . 7 2.4 流程图 . 7 第 3 章 系统设计与实现 . 9 3.1 系统设计思路 . 9 3.11 界面设计思路 . 9 3.12 算法的设计思路 . 9 3.13 程序的设计流程 . 10 3.2 系统设计实现 . 10 3.24 GobangBoard.java 类实现 . 12 3.25 GoBangMain.java 类的实现 . 15 3.26 Message.java 类的实现 . 22 第 4 章 系统运行和测试 . 24 4.1 系统运行 . 24 4.2 系统测试 . 26 结 论 . 28 致 谢 . 29
9、参考文献 . 30 毕业设计(论文) 1 前 言 电脑已经深入到日常工作和生活的方方面面,比如文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等。 Windows系统的推出使电脑从高雅的学术殿堂走入了寻常百姓家,各行各业的人们无须经过特别的训练就能够使用电脑完成许许多多复杂的工作。然而,虽然现在世界上已经充满了花样繁多的各种软件,但它们依然不能满足用户的各种特殊需要,人们还不得不开发适合自己特殊需求的软件。 Java语言作为一种面向对象的编程语言,具有分布式,可移植,高性能, 多线程等特点。通过系统的学习,人们就可以使用它开发出功能齐全,满足特殊需求的应用程序。 Java语言易
10、学易用,对学习者掌握技能,开拓思维都有很大的帮助。 我作为一名学生,在系统的学习了 Java 语言之后,经常用它搞一些小程序。这次毕业设计,正好将学过的 Java 语言中的各种技术综合起来,用 eclipse 开发工具编写一个小游戏,既对自己学过的技能进行一次检验,也能系统地将学过的知识复习巩固。 随着计算机技术的不断发展,网络技术的普及范围越来越广,网络能够提供的服务多样、便捷,已经成为人们生产生活中不可缺少的重要组成 部分。如今网络休闲游戏发展迅速,五子棋凭借健康、方便、互动性强、益智等诸多优点,成为大部分现代人休闲娱乐的首选。 毕业设计(论文) 2 第 1章 绪 论 1.1 JAVA 语
11、言 历史 Java 语言其实最是诞生于 1991 年,起初被称为 OAK 语言,是 SUN 公司为一些消费性电子产品而设计的一个通用环境。他们最初的目的只是为了开发 一种独立于平台的软件技术,而且在网络出现之前, OAK 可以说是默默无闻,甚至差点夭折。但是,网络的出现改变了 OAK 的命运。 在 Java 出现以前。 Internet 上的信息内容都是一些乏味死板的 HTML 文档。这对于那些迷恋于 WEB 浏览的人们来说简直不可容忍。他们迫切希 望能在 WEN 中看到一些交互式的内容,开发人员也极希望能够在 WEB 上创建一类无需考虑软硬件平台就可以执行的应用程序,当然这些程序还要有极大的
12、安全保 障。对于用户的这种要求,传统的编程语言显得无能为力,面 SUN 的工程师敏锐地察觉到了这一点,从 1994 年起,他们开始将OAK 技术应用于 WEB上,并 且开发出了 HotJava的第一个版本。当 SUN 公司 1995 年正式以 Java 这个名字推出的时候,几乎所有的 WEB 开发人员都想到:噢,这正是我想要 的。于是 Java 成了一颗耀眼的明 星,丑小鸭一下了变成了白天鹅。 1.2 JAVA 语言的特点 1.简单( Simple) 制定 Java 的原则之一,是要建立一种结构简单而且使用容易的系统,可以让用户不必接受很深的训练就可以开始设计程序,所以 Java 的语法尽可能
13、与在当前 许多程序设计师都采用的 C 及 C语言相似。并且, Java删除了 C 及 C+许多极少使用、不易理解或常被混淆的功能,多多重继承、指针等。 2.面向对象 (Object-Oriented) 面向对象是近年来信息界广为使用的概念和技术。它有许多良好的特性。对象的封装性可以使对象的接口定义明确; 继承性可以增加软件的可重用性,有助于分类及模版设计等。实现面向对象的概念及其各种良好的特性是 Java 的设计理念之一 。 3.分布式( Distributed) 计算机网络的发展使得信息应用朝着分布式的环境发展,所以现代的信息开发语言及环境要有配合分布式的特性及功能。 Java 具有一个网络
14、功能的程序库,其中包含与如HTTP 和 FTP 等 TCP/IP 网络通信协议整合的能力。 毕业设计(论文) 3 4.强壮性 (Robust) 由 Java所编写的程序要能在各种情况下运行,而且必须具有高的稳定性。 Java在制定时即加入了能防止存储器被覆写和数据损坏 的相关处理机制。 5.安全性 (Secure) Java是被设计用于网络及分布式环境中的,所以安全性是一个很重要的考虑。 Java拥有数个从简单到复杂的安全保护措施,能有效地防止病毒的侵入和破坏行为的发生。 6.结构中立性 (Architecture Neutral) 在网络上存在许多不同类型的计算机,从中央处理器到操作系统的机
15、构均有很高的差异性。因此要使应用程序在每一种机器上均能运行是相当困难的。针对这个目 的,Java 的编译器可以产生一种结构中立的目标码文件格式 字节码( Byte Code)。这种字节码可以 在许多种不同的计算机上运行。 7.多线程 (Multithreaded) 多线程使应用程序可以同时进行不同的操作,处理不同的事件。在多线程机制中,不同的线程处理不同的任务,他们之间互不干涉,不会由于一处等待影响其他部分,这样容易实现网络上的实时交互操作。 1.3 JAVA 的开发环境 Java 是由 Sun 微系统公司所发展出来的程序语言,它本身是一种对象导向( Object-Oriented)的程序语言
16、。 JAVA 目前在手机上应用很多多的就是 JAVA 游戏。 Java也号称是能跨平台使用的语言,这主要是因为 Java本身被编 译之后,并不是直接产生可执行的码,而是产生一种中间码叫作 ByteCode,这种码必需在透过 Java 的直译器来解读它,才能够真正的被执行,所以只要平台上装有这种 Java 的直译器,就能解读ByteCode 也就能执行 Java 编译过的程序,故与 Java 程序是在哪种平台上被编译的,就完全没有关系了。 Java写出来的程序可分为两类,分别是 Java Applet与一般的 Application,而 Application 这一类就与一般的程序如 C+的作用
17、是比较类似的,是一个独立可执行的应用程序,像 HotJava 是一个 浏览器,且就是使用 Java 程序所开发出来的。最常见的 Java程序包括应用程序和 applets。应用程序是单独的程序,诸如 HotJava 浏览器软件就是用Java语言编写的。 Applets类似于应用程序,但是它们不能单独运行, Applets可以在支持Java 的浏览器中运行。 Applet 主要是内置于 HTML 网页中,在浏览时发挥作用。 1.4 JAVA 的编译环境 JAVA编译环境主要是 JDK+开发工具。 JDK时 JAVA核心编译环境,开发工具在 JDK的基础上运行的。如果没有 JDK,开发工具无法正常
18、运行。开发工具能提高编 程效率 毕业设计(论文) 4 1.41 JDK 介绍及 安装 JDK(Java Development Kit, Java 开发包, Java 开发工具 )是一个写 Java 的 applet 和应用程序的程序开发环境。它由一个处于操作系统层之上的运行环境还有开发者编译,调试和运行用 Java语言写的 applet和应用程序所需的工具组成。 JDK(Java Development Kit)是 Sun Microsystems 针对 Java 开发员的产品。自从 Java 推出以来, JDK 已经成为使用最广泛的 Java SDK( Software developme
19、nt kit)。 JDK 中 包括完整的 JRE( Java Runtime Environment, Java 运行环境),也被称为 private runtime。包括了用于产品环境的各种库类,以及给开发员使用的补充库,如国际化的库、 IDL 库。 然后运行 JDK 5.0 安装程序 jdk-1_5_0_06-windows-i586-p.exe,安装过程中所有选项保持默认; 最后配置 JDK 的环境变量:在 “我的电脑 ”上点右键 “属性 ”“高级 ” “环境变量 (N)”。如 下 图 1-1 图 1-1 环境变量的配置 新建系统变量 JAVA_HOME: C:Program Files
20、Javajdk1.5.0_06 新建系统变量CLASSPATH: .;%JAVA_HOME%lib;(注意:点号表示当前目录,不能省略)在系统变量 Path 的值的 前面 加入以下内容: %JAVA_HOME%bin;(注意 :这里的分号不能省略 ) 1.42 JAVA 开发工具 1.用功能强大的开源工具 Eclipse 来开发,相 对较为方便, eclips 比较通用,而且支持很多插件。 2.Java 主要是利用文本编辑器来完成程序设计的编辑工作,可以使用各种文本编辑器来编写,例如:记事本、 Editplus 和 UltraEdit 软件等都可以用来实现。 3.Jbulder也是 java的
21、一款开发工具,功能更全面,而且操作好多都是即见即所得的,毕业设计(论文) 5 就想 VB 一样方便快捷,不过它是一款收费软件,所以不是一些大公司一般不会使用它来作为 java 的开发工具。 1.5 Socket 机制 Socket 是面向客户 /服务器模型设计的,网络上的两个程序通过一个双向的通讯连接实现数据的交换,这个双向链路的一端称为一个 Socket。 Socket 通常用来实现客户方和服务方的连接。客户程序可以向 Socket 写请求,服务器将处理此请求,然后通过 Socket将结果返回给用户。 Socket 通信机制提供了两种通讯方式:有联接和无联接方式,分别面向不同的应用需求。使用
22、有联接方式时,通信链路提供了可靠的,全双工的字节流服务。在该方式下,通信双方必须创建一个联接过程并建立一条通讯链路,以后的网络通信操作完全在这一对进程之间进行,通信完毕关闭此联接过程。使用无联接方式时其系统开销比无联接方式小, 但通信链路提供了不可靠的数据报服务,不能保证信源所传输的数据一定能够到达信宿。在该方式下,通信双方不必创建一个联接过程和建立一条通讯链路,网络通信操作在不同的主机和进程之间转发进行。 在 java 中使用套接字相当简单, Java API 为处理套接字的通信提供了一个类.Socket。使得编写网络应用程序相对容易。 JAVA 支持流套接字( stream socket)
23、和数据报套接字( datagram socket)。流套接字使用 TCP( Transmission Control Protocol,传输控制 协议)进行数据传输,而数据报套接字使用 UDP( User Datagram Protocol,用户数据报协议)。 在 Socket 层实现的 Java 网络程序是严格同步的。从一台机器发送数据的操作要求对应一个从其他机器接受数据的操作。 毕业设计(论文) 6 第 2章 系统 需求分析 2.1 五子棋的发展史 五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为 “连珠 ” ,英译为 “Renju” ,英文称之为 “Gobang”或 “FI
24、R”(Five in a Row 的缩写 ) ,亦有 “连五子 ” 、 “五子连 ”、 “串珠 ” 、 “五目 ” 、 “五目碰 ” 、 “五格 ” 等多种称谓。 五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征 “短、平、快 ” ,又有古典哲学的高深学问 “阴阳易理 ” ;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有 “场 ”的概念,亦有 “点 ” 的连接。它是中西文化的交流点,是古今哲理的结晶。 2.2 五子棋特点、 规则 和界面需求 五子棋的娱乐性强、规则
25、简单、易学、流行性广 ,普通人不需长时间 专门训练即可自如行棋 ,因此极受大众喜欢。 五子棋规则有很多,本程序主要用无禁手的规则。 五子棋无禁手规则为 : 1.行棋:一人流轮一著下于棋盘空点处。 2.胜负:先把五枚或以上己棋相连成任何横纵斜方向为胜。超过五子也算胜 主要是靠交换黑白双方行棋权来使开局平衡,从而达到双方公平竞技的目的。 五子棋界面需求: 1.一个 15*15 方格棋盘,当需要落子的时候点击棋盘出现相应的黑白棋子。 2.一个聊天输入框用于聊天输入信息;一个聊天发送按钮用于发送聊天信息;一个聊天信息显示框,用于显示聊天历史信息。 3.一些游戏相关 按钮,比如建立游戏按钮,加入游戏按钮
26、, 退 出游戏按钮。 4.一些游戏信息提示框,提示玩家该下棋了等信息。 5.人机界面 需求简洁 合理 易懂,不需要专业知识就能 玩。 毕业设计(论文) 7 2.3 五子棋功能需求 五子棋主要需要 2 大功能:局域网五子棋游戏 功能 和 2 个玩家间聊天 功能 。 2.31 五子棋游戏功能 五子棋游戏需求一般游戏功能:建立游戏,加入游戏,退出游戏。 建立游戏 : 当玩家按下建立游戏,系统自动建立一个服务器端,等待其他玩家加入。 加入服务器:玩家按下加入服务器按钮,显示一个提示框,输入服务器端的 IP 和端口号连接服务器,建立 2 人之间的游戏 退 出游戏:点击退出游戏按钮,游戏结束系统自动断开连接,关闭界面。 2.32 聊天功能 当服务器与客户端建立连接后,玩家之间能文字交流,玩家从聊天输入框输入信息,输入完成后点击发送按钮,信息能在 2 个玩家的聊天信息显示框都显示消息的发送人,时间和内容。 功能结构图如下图 2-1: 图 2-1 功能需求图 2.4 流程图 初始化包括游戏初始化界面、建立服务器和 建立连接,然后到程序主控制, 主控制控制轮流黑白棋落子,每当有棋子落下都判断输赢否。 没有输赢或赢则继续放回主控制,当出现输赢则结束 。 其流程图如图 2-2: 聊天 发送消息 建立游戏 加入游戏 退出游戏 接收消息 五子棋 游戏