基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.docx

上传人:b****6 文档编号:11923703 上传时间:2023-06-03 格式:DOCX 页数:34 大小:860.62KB
下载 相关 举报
基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.docx_第1页
第1页 / 共34页
基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.docx_第2页
第2页 / 共34页
基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.docx_第3页
第3页 / 共34页
基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.docx_第4页
第4页 / 共34页
基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.docx_第5页
第5页 / 共34页
基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.docx_第6页
第6页 / 共34页
基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.docx_第7页
第7页 / 共34页
基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.docx_第8页
第8页 / 共34页
基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.docx_第9页
第9页 / 共34页
基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.docx_第10页
第10页 / 共34页
基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.docx_第11页
第11页 / 共34页
基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.docx_第12页
第12页 / 共34页
基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.docx_第13页
第13页 / 共34页
基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.docx_第14页
第14页 / 共34页
基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.docx_第15页
第15页 / 共34页
基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.docx_第16页
第16页 / 共34页
基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.docx_第17页
第17页 / 共34页
基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.docx_第18页
第18页 / 共34页
基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.docx_第19页
第19页 / 共34页
基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.docx

《基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.docx》由会员分享,可在线阅读,更多相关《基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.docx(34页珍藏版)》请在冰点文库上搜索。

基于java的网络版五子棋游戏的设计和实现大学本科毕业论文.docx

基于java的网络版五子棋游戏的设计和实现大学本科毕业论文

 

摘要

目前,随着计算机网络的发展,以计算机技术和网络技术为核心的现代网络技术已经在现实生活和生产中得到了广泛的使用,休闲类网络游戏集趣味性,娱乐性,互动性和益智性于一体,已经成为多数人群的休闲方式,也为多数人所喜好。

本设计收集了关于JAVA基础的书籍,着重收录了关于SOCKET编程的内容,找到了五子棋概述和规则的资料,查阅了网络通信技术的相关论文,同时也参考了很多关于五子棋实现的程序资料以及关于JAVA开发工具的介绍的文档。

在期间,作者学习了多线程技术、数据传输技术、SOCKET编程技术,研究了网络通信原理、JAVA编写原理等一系列的原理。

开发了五子棋网络对战的代码,实现了网络聊天、联机对战、网络通信、界面组织如:

棋盘、建立服务器、连接到服务器等功能。

通过对以上技术的学习和研究,利用SOCKET编程,能服务器与客户端之间的连接,利用多线程技术完成了服务器端与客户端之间的数据传输、网络通信,使得两个客户端能够同步的进行处理。

关键词:

JAVA多线程SOCKET五子棋

 

Abstract

Atpresent,withthedevelopmentofcomputernetworks,computerandnetworktechnologyasthecoreofmodernnetworktechnologyhasbeenwidelyusedinreallifeandproduction,thecasualgamesetinteresting,entertaining,interactiveandpuzzleinone,hasbecomethemajoritypopulationofleisure,butalsoforthemajorityofpeoplehavepreferences.

   ThedesignofthecollectionofbooksontheJAVA-based,focusingonthecollectionofcontentSOCKETprogramming,foundthedataoverviewandbackgammonrules,accesstothenetworkcommunicationtechnologyrelatedpapersalsorefertoalotofinformationonbackgammonprogramimplementationaswellasondocumentdescribestheJAVAdevelopmenttools.Inthemeantime,Ilearnedthemulti-threadingtechnology,datatransmissiontechnology,SOCKETprogrammingtechniquetostudytheprincipleofnetworkcommunication,JAVAwriteaseriesofprinciplessuchastheprinciple.Developedbackgammononlineplaycodeimplementsonlinechat,onlinegaming,networkcommunications,interfaceorganizationssuchas:

theboard,establishaserver,connecttotheserverandotherfunctions.Throughtheabovetechnicalstudyandresearch,theuseSOCKETprogramming,connectionsbetweentheserverandclientcanusemulti-threadingtechnologytocompletethedatatransferbetweentheclientandtheserver,andnetworkcommunication,sothatboththeclientcansynchronizeforprocessing.

Keywords:

JAVAmultithreadingSOCKETGobang

 

目录

1绪论1

1.1背景及意义1

1.2选题的目的1

1.3五子棋介绍2

1.4主要完成内容2

2开发环境及工具介绍3

2.1开发环境及运行环境3

2.1.1开发环境3

2.1.2运行环境3

2.1.2开发工具3

2.2Java简介3

2.2.1Java的起源和发展3

2.2.2Java特点4

2.3JavaSocket网络编程简介5

2.3.1JavaSocket网络编程基础5

2.3.2Socket编程的实现6

2.4Java图形编程7

2.5多线程机制7

3需求分析和总体设计9

3.1需求分析作用9

3.1.1界面需求分析9

3.1.2软件需求分析9

3.2总体设计9

3.2.1系统设计思想10

3.2.2系统总体设计10

3.3功能模块及流程11

3.3.1系统主要模块11

3.3.2服务器端作用12

3.3.3客户端作用13

4详细设计及实现15

4.1系统主流程15

4.2如何判断输赢16

4.3开发环境的搭建19

4.4功能模块的界面实现20

5软件的测试23

5.1软件测试的方法23

6总结语25

参考文献26

1绪论

1.1背景及意义

1.背景

随着经济社会的迅速发展,人们生活水平有了很大的提高,人们的生活观念也发生了巨大的改变。

高品质的生活、现代化得生活方式成为人们共同追求的目标;休闲、娱乐性活动作为时尚生活中的一部分,而被大多数的人所追捧。

棋类项目作为一种智力型项目,可以益智健心、修身养性,也可以满足人们对于娱乐和休闲的新需求。

一些项目比如五子棋等等,由于项目本身互动的特点,一直被人们所喜爱,因此得以生存和发展,成为许多人喜爱的休闲娱乐性棋类项目。

而今,以网络技术为核心和计算机技术的现代网络技术已经在现实生活得到了十分的广泛的使用。

休闲类网络游戏集合了益智性、趣味性、互动性、娱乐性于一体,已经成为多数人群的选择的休闲方式。

借此,本论文在分析了当前计算机网络的蓬勃发展和人们对于休闲娱乐性生活方式的追求,以java语言为工具,在MyEclipse的环境那下,以精美的界面,以常规安全的socket建立连接,设计更为益智的网络版五子棋游戏,增强了趣味性和益智性。

2.意义

现在人们压力日益增大,人们需要劳逸结合也获得更高的工作效率,工作之余的娱乐对每一个人来说都是必不可少的放松方式。

五子棋游戏简单易学同时具有很大奥妙性,也非常富有趣味性与消遣性。

在经过不断发展后,五子棋已经成为棋盘娱乐的重要的组成部分,它能够开发智力、增强思维能力,而且富含哲理,有助于修身养性。

是人们休闲娱乐的不二的选择。

而网络互动娱乐是近几年迅速发展起来的新的娱乐形式,成为IT产业中增长最快的娱乐形式之一。

网络五子棋游戏很多是使用Java语言开发的一款游戏。

它使用SOCKET建立连接,多线程处理数据,这些特点使这款游戏无论是客户端还是服务器的实现都相对容易。

1.2选题的目的

随着计算机网络技术的不断发展,网络游戏已经成为最具潜力的热点领域。

各种各样的游戏使人眼花缭乱,而特别是其中一些休闲益智类的棋牌游戏,集娱乐性、趣味性、益智性和互动性于一体,拥有很大的用户。

棋类游戏能锻炼人的思维,起到修身养性的作用。

五子棋游戏可以分为两类:

一类是单机版五子棋游戏,另一类是网络五子棋游戏。

随着计算机网络和JAVA技术的不断发展,使用Java开发网络五子棋游戏将是一个实用性很强的毕业设计项目。

网络五子棋游戏的总体功能是要设计出具有精美界面的,具备人工智能的,支持网络对弈的五子棋游戏。

本系统最终的目的是建立一个有具体规则的网络五子棋平台,达到网络对弈的目的。

1.3五子棋介绍

五子棋起源于中国古代的传统黑白棋种之一,是一种两人对弈的纯策略型棋类游戏。

现代五子棋日本称之为“连珠”,英译为Renju,英文为“FIR”(FiveinaRow的缩写)或“Gobang”,中文有“串珠”、“五子连”、“连五子”等很多种名字。

它发展于日本,流行于欧美。

容易上手,老少皆宜,而且引人入胜;不仅能提高智力,而且富含哲理。

传统五子棋的棋具与围棋类似,棋子分为黑白两色,棋盘有大有小,棋子放置于棋盘线交叉点上。

两人对局,各选一色,轮流落子。

五子棋游戏规则:

游戏双方轮流在棋盘下棋子,一方的棋子在横、竖、两个对角线上首先到达五子者为胜方。

因为五子棋在落子后不能移动或拿掉,所以也可以用纸和笔来进行游戏。

随着五子棋的发展,逐步发现先行优势非常大,最后总结出“先行必胜”的结论。

五子棋成为竞技运动,核心问题是怎样解决传统五子棋下法中“先行必胜”的问题。

而竞技五子棋便是参赛双方打破“先行必胜”的问题,以棋盘和棋子为介体,进行智力性对抗的竞技体育项目。

1.4主要完成内容

本课题为了分析了五子棋规则及技巧,以及研究客户端界面的布局,决定用Java开发五子棋游戏。

主要完成客户端界面设计和网络对战2个功能模块。

客户端负责收集用户的信息和界面维护,以及错误处理;服务器的建立以及对战用户的基本信息和两个对战用户的棋盘信息,判断输赢。

2开发环境及工具介绍

2.1开发环境及运行环境

2.1.1开发环境

★MicrosoftWindowsXP或以上版本

★JDK1.60

★MyEclipse8.5

2.1.2运行环境

★MicrosoftWindowsXP或以上版本操作系统

★1024*768或以上的屏幕分辨率

2.1.2开发工具

Java的开发工具很多,比如JBuilder、MyEclipse、NetBeansIDE、JCreator等等,不同的工具可能对开发不同的程序有针对的优势。

我选择MyEclipse进行编写,我们说一下MyEclipse的优势。

★MyEclipse是一种具有可扩展的开放源代码IDE。

MyEclipse可以在同一IDE中集成了来自不同供应商的工具,并实现了工具之间的相互操作,从而显著简化了项目工作流程。

★MyEclipse框架的灵活性来自于它的扩展点。

在XML中定义的已知接口,并充当插件的耦合点。

扩展点的范围包括从简单字符串,到一个Java类的描述。

★MyEclipse的最大特点是它能接受由Java开发者自己编写的开放源代码插件。

2.2Java简介

Java是一种简单的、分布式的、面向对象的、可移植、解释的、安全的的多线程语言。

它以其平台无关性、硬件结构无关性、强安全性、面向对象、语言简洁的特点,在网络编程语言中占据了无可比拟的优势,成为实现电子商务系统的首选语言[2]。

2.2.1Java的起源和发展

Java是Sun公司在1995年推出的新兴的编程语言,它是一种跨平台的、应用于当前高速发展的网络的编程语言。

在编程语言中,可认为Basic语言促使了C语言的出现,C语言促进了C++的出现,而C++又促使了Java语言的出现。

自从Java正式推出后,以它特有的优势迅速发展,经过几年的发展,Java已经在软件开发等领域占有很大的市场。

Java分为三种:

J2SE、J2EE和J2ME。

J2SE是Java平台标准版[3],主要应用于桌面程序和Java小应用程序开发;J2EE主要用于企业级开发和大型网站的开发;J2ME主要用于手机等移动设备程序的开发。

2.2.2Java特点

★平台无关性

Java的平台无关性能让这种软件在每个平台上都能正常地运行,就是"只要写一次程序,在任何地方、任何时间该程序永远都能够运行"。

Java解释器生成与体系无关的字节码指令,这些指令对应于Java虚拟机里表示,Java解释器得到字节码后,对它进行转换,只要安装Java运行系统,Java就可以在任何处理器上运行。

★简单性

Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,开发者只要知道一些概念就能够编写一些应用程序。

★多线程

设计Java的多线程,是为了满足人们对创建交互式网上程序的需要。

用Java编写出来的应用程序可以同时执行很多任务。

多线程机制使应用程序可以并行执行,而且同步机制保证了对共享数据的正确操作。

★健壮性

Java语言被病毒感染和破坏得最少。

Java丢弃了难学和危险的指针功能,而大部分病毒程序常用的方法就是通过巧妙地运用地址变量如指针来获取计算机的资源,从而使程序不安全。

★面向对象语言

Java的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。

对象中封装它的状态变量和相应的方法,实现了模块化和信息的隐藏;而类则是提供对象的原型,并且通过继承的机制,子类可以使用父类所提供的方法,以实现代码的复用。

★自动内存管理

也可以说自动内存管理是Java健壮性的体现,内存管理是很多种应用程序内的很关键因素。

在网络上的其他地方读取大量的数据,之后把该数据写入硬盘上的数据库内,一般的设计就是把数据读入内存中的某些集合内,对这些数据执行某些操作,之后把数据写入数据库。

在数据写入数据库后,在下一批处理之前,临时存储数据的集合必须清空旧数据,或被删除后再建。

这种操作可能执行很多次,很多语言要手工清空或删除集合数据结构。

Java的自动内存管理[4]正好解决这一点,它使程序员不用再为内存管理写大量的代码。

2.3JavaSocket网络编程简介

2.3.1JavaSocket网络编程基础

网络编程,简单的理解就是两台计算机相互通信。

其基本模型就是客户机/服务器模型,也就是通信双方中的一方必须提供一个固定的端口,而另一方则只需要知道这个端口,并去建立两者之间的联系,然后完成数据交换。

这里提供固定位置的一方通常称为服务器,而建立联系的一方通常称为客户端[5]。

基于客户机/服务器的Socket通信模型如图2-1所示:

图2-1基于客户机/服务器的Socket通信模型图

Socket工作过程如下:

(1)建立连接:

服务器端程序分配一个端口号,开始监听来自客户端的请求。

当客户请求一个连接时,服务器使用accept()方法打开Socket连接,将该Socket连接到此端口上。

(2)数据通信:

服务器和客户端使用Socket的InputStream(输入流)和OutputStream(输出流)进行通信。

(3)关闭连接:

通信结束,服务器和客户端程序断开连接,释放所有占用的系统资源。

Java为这个模型的实现提供了简化的Socket编程接口。

在程序中只要导入java.io包就可以方便的使用java的Socket编程接口。

Java中Socket连接机制如图2-2所示:

 

图2-2Socket的连接机制[6]

2.3.2Socket编程的实现

Socket类表示了系统的IP地址和端口号的结合,可以理解为客户端或者服务器端的一个特殊对象。

它包含两个处理流的方法,一个是getInputStream(),另一个是getOutputStream(),分别用来获得网络的输入流和输出流。

构造Socket对象的代码如下:

Sockets=newSocket(IP,port);

IP,port分别为服务器端的IP地址和服务器端的端口号。

ServerSocket类是一个专门建立Socket服务器的类,它可以用服务器需要使用的端口号作为参数来创建ServerSocket对象。

示例代码如下:

ServerSocketss=newServerSocket(TCP_PORT);

当一个客户端程序建立一个Socket连接,所连接的端口号为对应TCP_PORT时,服务器对象ss便响应这个连接,在用上述ss对象调用accept()创建一个代表服务器的Socket对象。

创建后服务器便可以利用这个Socket对象与客户端进行数据交换。

示例代码如下:

SocketclientSocket=ss.accept();

在本系统的实现过程中,在支持网络对弈的服务器类的定义中需要使用ServerSocket类来响应多个客户端的连接请求。

能够同时建立多个服务器,玩家可以选择不同的服务器参与游戏。

2.4Java图形编程

Java中的Graphics类是一个工具类,用来绘图和显示格式化文本,Graphics类是在java.awt包中声明的。

在Java程序中绘图必须在一个窗口或者是一个容器中进行,绘图窗体经常被设计为一个组件容器。

显示格式化文本和绘图是调用Graphics类的drawXX()方法完成的,例如drawString(String)等等。

绘图采用的坐标系[7]是原点在左上角,纵轴向下以像素为单位的坐标系。

2.5多线程机制

多线程机制是指单个程序可以运行多个不同的线程,执行不同的任务。

因为线程只能在单个进程的作用域内活动,所以创建线程比创建进程要廉价得多,同一类线程共享代码和数据空间,每个线程有独立的运行桟和程序计数器(PC),线程切换的开销小。

因此多线程编程在现代软件设计中在量采用。

创建新线程必须编写一个线程类,用Java编写多线程代码有两种方式

★直接继承Java的线程类Thread;

★实现Runnable接口

无论采用哪种方式均需要在程序中编写Run()方法,线程在运行时要完成的任务在该方法实现。

Thread类封装了线程的行为。

继承Thread类须重写run()方法实现各自的任务。

程序中不要直接调用线程的run()方法,而是调用start()方法启动线程,让其进入可调度的状态,线程获得调度时将自动执行run()方法。

由于Java的单重继承的限制,有些类必须继承其它个类时又要实现线程的特性。

这时可通过实现Runnable接口的方式来满足两方面的要求。

Runnable接口只有一个方法run(),它就是线程运行时要执行的方法,只要将具体代码写入其中即可。

线程在调度时将自动调用Runnable接口对象的run方法。

多线程是Java的一个特点,多线程可以使程序反应更快、交互性更强,并能提高执行效率。

在网络五子中如果服务器是单线程的,则只能与一个客户端相连,就失去了网络对战的意义了。

所以应该采用多线程方式。

当服务器与一个客户端建立连接,就开启一个线程与之相连,同时监听其它用户的连接。

请求的通信协议规定:

publicclassRequest{

publicstaticfinalintLOGIN=1;//输入用户名的请求

publicstaticfinalintCR_ROOM=2;//创建房间的请求

publicstaticfinalintGET_ROOM=3;//获取房间列表的请求

publicstaticfinalintDEL_ROOM=4;//删除房间

publicstaticfinalintFLUSH_ROOM=5;//刷新房间的请求

publicstaticfinalintIN_ROOM=6;//进入房间

publicstaticfinalintIN_RESULT=7;//进入房间结果的请求

publicstaticfinalintCHESS=8;//落子的请求

publicstaticfinalintSEND_MSG=9;//发送聊天请求

publicstaticfinalintNEWS_TART=10;//新开游戏请求

publicstaticfinalintWIN=11;//代表赢的请求

publicstaticfinalintGIVEUP=12;//放弃请求

publicstaticfinalintSUM=13;//求和

publicstaticfinalintSUM_RESULT=14;//求和结果处理

publicstaticfinalintEXIT=15;//退出

publicstaticfinalintEXIT_ROOM=16;//退出游戏大厅的请求

publicstaticfinalintROVS=17;//转观战请求

publicstaticfinalintIN_LOOK=18;//进入观战

publicstaticfinalintLOO_GET_DATA=19;//观看请求数据

publicstaticfinalintBACK_CHESS=20;//悔棋

publicstaticfinalintBACK_CHESS_RESULT=21;//悔棋结果处理

}

 

3需求分析和总体设计

3.1需求分析作用

软件需求分析是软件开发周期的第一个阶段,也是关系到软件开发成败的最关键一步。

只有通过了软件需求分析,才能把软件的功能和性能由总体的概念性和理论性描述转化为具体的规格说明,从而建立软件开发的基础。

实践证明,需求分析工作进行得准确程度,在很大程度上决定了软件开发的成败。

软件需求分析的任务就是让用户与开发者明确开发的是一个什么软件。

具体的说,就是通过对问题及其环境的理解、分析与综合把握,建立逻辑模型,完成软件的逻辑方案设计。

3.1.1界面需求分析

软件的界面简洁明了而不失精美,操作简单容易,功能按钮名称简单易懂,棋盘的大小,棋子的样式。

3.1.2软件需求分析

现有的网络编程模式主要分成两类:

一种是基于C/S(Client/Server)模式,另一种是B/S(Browser/Server)模式。

网络五子棋系统应用于局域网,对交互性要求很高,本系统选用了C/S模式进行实现,网络内部使用TCP/IP方式利用Socket提供的服务,使用JavaGraphics类进行用户图形界面的搭建。

系统分成两个部分,分别为服务端程序以及客户端程序[8]。

结合实际情况,将服务器端的程序和客户端的程序放在一起,便可以更为方便的建立游戏和参与游戏,有效解决了在局域网中服务器未开启,则无法进行游戏的缺陷。

五子棋网络游戏主要分为两个部分,游戏服务端和游戏客户端。

游戏服务端主要存储所有连线客户的相关信息及各种状态,并负责游戏客户之间数据的传递;游戏客户端提供给客户联机对战按钮,使其能与其他玩家进行游戏。

由于将服务器端和客户端程序放在一起,所以可以减少界面绘制的冗余代码,使得客户端和服务器端使用相同的界面。

3.2总体设计

总体设计是软件开发过程中的另一个重要阶段,在这一阶段中将根据需求分析中提出的逻辑模型,合理地完成物理模型的设计。

这个阶段的主要目标是将反映了用户信息需求的逻辑方案转换成

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2