五子棋设计报告

JAVA课程设计

专业:数字媒体

课程名称: Java语言程序设计课题名称: 五子棋

指导老师: 嘉欣

学号: 09990051

姓名: 贺赓晔

学号: 09990054

姓名: 贾贺

摘要

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

本软件使用JAVA语言实现,通过对图形界面,绘图,布局管理器等去构造出五子棋游戏的单机功能,在此基础上,利用SOCKET编程,建立起服务器与客户端之间的连接,利用多线程技术来处理服务器端与客户端之间的数据传输、网络通信,使得客户端和服务器端之间能够同步的进行处理。在网络对战中实现了以下功能:建立游戏、邀请游戏、加入游戏、退出游戏、悔棋。另外,本软件还实现了网络聊天的功能,玩家加入游戏后可以和其他玩家进行对话。在加载图片以及绘制棋盘方面,采用双缓冲技术消除屏幕的闪烁现象。

在人机对弈过遍历搜索和估值模块,来提高电脑棋手的智能。算法的研究有助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。

关键词:多线程,SOCKET,遍历搜索,人工智能.

目录

1. 绪论 (1)

1.1课题背景 (1)

1.2选题的背景和意义 (1)

1.3主要研究容 (1)

1.4五子棋简介 (2)

2. 开发环境及工具介绍 (3)

2.1开发环境及运行环境 (3)

2.1.1开发环境 (3)

2.1.2运行环境 (3)

2.2J AVA 简介 (3)

2.2.1 Java的起源与发展 (3)

2.2.2 Java 的特点 (3)

2.3J AVA S OCKET 网络编程 (5)

2.3.1 Java Socket 网络编程基础 (5)

2.3.2 Socket编程的实现 (6)

2.4J AVA图形编程 (6)

3. 需求分析和总体设计 (7)

3.1系统设计思想 (7)

3.2系统总体设计 (8)

3.3系统功能模块及流程 (8)

3.3.1 系统主要功能模块 (8)

3.3.2 系统主流程 (9)

3.4玩家视图与操作 (10)

3.4.1 服务器端 (10)

3.4.2 客户端 (10)

4. 概要设计 (12)

4.1游戏各主要类的功能与主要对象 (12)

4.1.1 服务器类 (12)

4.1.2 游戏客户端 (13)

4.1.3 网络客户端类 (14)

4.1.4 棋盘类 (15)

5. 详细设计 (16)

5.1服务器端设计 (17)

5.2游戏客户端设计 (17)

5.3网络客户端设计 (18)

5.4棋盘类设计 (18)

5.4.1 棋盘类的主要方法 (18)

5.4.2 落子算法的实现 (19)

6. 软件实现与测试 (19)

6.1软件测试方案 (20)

6.2网络客户端测试用例 (20)

7. 总结 (20)

致 (21)

参考文献 (22)

1. 绪论

1.1 课题背景

电脑已经深入到日常工作和生活的方方面面,比如文字处理、信息管理、辅助设计、图形图像处理、教育培训以及游戏娱乐等,各行各业的人们无须经过特别的训练就能够使用电脑完成许许多多复杂的工作。然而,虽然现在世界上已经充满了花样繁多的各种软件,但它们依然不能满足用户的各种特殊需要,人们还不得不开发适合自己特殊需求的软件。Java语言作为一种面向对象的编程语言,具有分布式,可移植,高性能,多线程等特点[1]。如今网络休闲游戏发展迅速,它凭借健康、方便、互动性强、益智等诸多优点,成为大部分现代人休闲娱乐的首选。

网络五子棋游戏是使用Java语言开发的一款游戏。它使用SOCKET建立连接,多线程处理数据,这些特点使这款游戏无论是服务器还是客户端的实现都相对容易。

1.2 选题的背景和意义

随着计算机网络技术的发展,网络游戏已经成为计算机技术中最具潜力的热点领域,随着联众世界、腾讯游戏等网络游戏平台的拓展,越来越多的人参与到网络游戏中。特别是其中一些休闲益智类的棋牌游戏,集趣味性、娱乐性、互动性和益智性于一体,拥有大量的用户。因此使用Java开发网络五子棋游戏是一个实用性很强的毕业设计项目。

网络五子棋游戏的总体功能是要设计出具有精美界面的,具备人工智能的,支持网络对弈的五子棋游戏。本系统最终的目的是建立一个有具体规则的五子棋平台,使两台不同计算机的使用者通过一定的网络连接,达到网络对弈的目的,以及单机上的人机对战。

1.3 主要研究容

本课题为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用Java 开发五子棋游戏。主要完成了人机对战和网络对战2个功能。网络连接部分为Socket编程应用,客户端负责界面维护和收集用户输入的信息,及错误处理。服务器维护在线用户的基本信息和任意两个对战用户的棋盘信息,动态维护用户列表。在人机对弈过简单搜索和估值模块,来提高电脑棋手的智能。分析估值模块中的影响精准性的几个要素,以及提出若干提高精准性的办法,以及对它们的搜索进行比较,在这些算法的基础上分析一些提高电脑智能方案。算法的研究有

助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。

1.4 五子棋简介

五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。发展于日本,流行于欧美。容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。2. 开发环境及工具介绍

2.1 开发环境及运行环境

2.1.1开发环境

●Microsoft Windows XP Professional Service Pack 3

●JDK 1.60

●Eclipse 3.5

2.1.2运行环境

●Intel Pentium 2及以上处理器,128M以上存,20G以上硬盘

●Microsoft Windows 9X/NT操作系统

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

2.2 Java 简介

Java是一种简单的、面向对象的、分布式的、解释的、安全的、可移植的、性能优异的多线程语言。它以其强安全性、平台无关性、硬件结构无关性、语言简洁、面向对象的特点,在网络编程语言中占据了无可比拟的优势,成为实现电子商务系统的首选语言[2]。

2.2.1 Java的起源与发展

Java是Sun公司在1995年推出的新的编程语言,它是一种跨平台的、应用于当前高速发展的网络编程语言。在编程语言中,可以认为Basic语言促使了C 语言的出现,C语言促使了C++的出现,而C++又促使了Java语言的出现。

自Java正式推出之后,以其特有的优势迅速发展,经过几年的发展,Java 已经在软件开发和动态上占有相当大的市场。Java分为J2SE、J2EE和J2ME三种。J2SE是Java平台标准版,主要应用于桌面程序和Java小应用程序开发;J2EE主要用于企业级开发和大型的开发;J2ME主要用于手机等移动设备程序的开发[3]。

2.2.2 Java 的特点

前面已经提到过,Java是在开发家用电器软件时开发出来的。怎么样才能让这种软件在每个平台上都能正常地运行呢?这就用到了Java的平台无关性。在Java出现之前,这个问题是当时每个程序员都难以解决的问题。Java出现之后,这个问题就彻底解决了。引用他们的目标,就是"只要写一次程序,在任何地方、任何时间该程序永远都能够运行"。

Java是怎么实现平台无关性的呢?只要安装Java运行系统,Java就可以在任何处理器上运行。Java解释器生成与体系无关的字节码指令,这些指令对应于Java虚拟机里表示,Java解释器得到字节码后,对它进行转换,使之能够在不同的平台上运行。

(1)简单性

Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,开发者只需要知道一些概念就能够编写出一些应用程序。Java程序相对较小,其代码能够在小机器,例如手机上运行,这应该是大家经常可以看到的。

(2) 面向对象语言

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

(3) 健壮性

Java语言被病毒感染和破坏得最少。大部分病毒程序常用的方法就是通过巧妙地运用地址变量如指针来获取计算机的资源,而Java正好放弃了难学和危险的指针功能,从而使Java更安全。

(4) 多线程

设计Java的目标之一,就是为了满足人们对创建交互式网上程序的需要。多线程就是为实现这个目标而设计出来的,它使用Java编写出来的应用程序可以同时执行多个任务。多线程机制使应用程序能够并行执行,而且同步机制保证了对共享数据的正确操作。

(5) 自动存管理

可以说自动存管理是Java健壮性的体现,存管理是很多种应用程序的关键因素。在网络上的其他地方读取大量的数据,之后把该数据写入硬盘上的数据库,一般的设计就是把数据读入存中的某种集合,对这些数据执行某些操作,之后把数据写入数据库。在数据写入数据库后,在下一批处理之前,临时存储数据的集合必须清空旧数据,或者被删除后再建。这种操作可能执行很多次,在像C++这

相关文档
最新文档