文档库 最新最全的文档下载
当前位置:文档库 › 开题报告+基于Java的五子棋游戏的设计

开题报告+基于Java的五子棋游戏的设计

开题报告+基于Java的五子棋游戏的设计
开题报告+基于Java的五子棋游戏的设计

基于Java的五子棋游戏的设计

摘要

五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用Java开发五子棋游戏。主要完成了人机对战和玩家之间联网对战2个功能。网络连接部分为Socket编程应用,客户端和服务器端的交互用Class Message定义,有很好的可扩展性,客户端负责界面维护和收集用户输入的信息,及错误处理。服务器维护在线用户的基本信息和任意两个对战用户的棋盘信息,动态维护用户列表。在人机对弈中通过深度搜索和估值模块,来提高电脑棋手的智能。分析估值模块中的影响精准性的几个要素,以及提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算法的基础上分析一些提高电脑AI方案,如递归算法、电脑学习等。算法的研究有助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。

关键词:深度搜索;估值;电脑AI;五子棋;算法

Gobang Java-based games design

Abstract

As a sport, gobang is very popular in civil, in order to become familiar with gobang rules and techniques, and the study of simple artificial intelligence, I decide to use the Java to develope gobang games and complete the two functions including man-machine war and man-man war. Network Connection is Socket Programming for some applications, client and server interaction is definited by Class Message, which is a very good scalability, Client interface is responsible for the collection and maintenance of user input information, and error handling. Server users maintain online basic information and arbitrary two-time users of the chessboard of information, dynamic maintenance user list. During the man-machine players, it improves intelligence of the computer players through depth search and valuation module. Analyzes Module valuation of the precise elements, as well as a number of increased precision, and compares their search for nodes, which raises some computer AI programs on the basis of analysis, such as recursive algorithm, computer learning. Algorithm of procedures contribute to the understanding of the structure, logical thinking ability, In other areas of artificial intelligence has great references.

.

Key words:Search depth; Valuation; Computer AI; Gobang ; Algorithm

目录

论文总页数:23页1 引言 (1)

1.1课题背景 (1)

1.2本课题研究的意义 (1)

1.3本课题的研究方法 (2)

2 课题相关基础 (2)

2.1五子棋 (2)

2.1.1棋盘和棋子 (2)

2.1.2规则及解释 (3)

2.1.3五子棋常用术语 (4)

2.1.4五子棋攻防 (7)

3 JA V A (8)

3.1J AVA简介 (8)

3.2J AVA开发环境 (9)

4 课题详细研究方法 (10)

4.1程序结构说明 (10)

4.2棋盘及棋子的类 (11)

4.2.1棋盘 (11)

4.2.2棋子 (13)

4.3胜负判断条件 (13)

4.4网络对战 (15)

4.5电脑AI (17)

结论 (21)

参考文献 (21)

致谢 (22)

声明 (23)

1引言

1.1课题背景

五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为连珠,英译为Renju,英文称之为Gobang或FIR(Five in a Row 的缩写),亦有连五子、五子连、串珠、五目、五目碰、五格等多种称谓。

五子棋起源于古代中国,发展于日本,风靡于欧洲。对于它与围棋的关系有两种说法,一说早于围棋,早在“ 尧造围棋” 之前,民间就已有五子棋游戏;一说源于围棋,是围棋发展的一个分支。在中国的文化里,倍受人们的青睐。本世纪初五子棋传入欧洲并迅速风靡全欧。通过一系列的变化,使五子棋这一简单的游戏复杂化、规范化,而最终成为今天的职业连珠五子棋,同时也成为一种国际比赛棋。

Java语言是当今最为流行的程序设计语言之一作为一门非常优秀和极为健壮的编程语言,它同时具有的面向对象,与平台无关,分布式应用,安全,稳定和多线程等优良的特征,使用Java语言,不仅可以开发出功能强大的大型应用程序,而且Java语言本身突出的跨平台的特性也使得它特别适合于Internet上的应用开发,可以这样说,Java的出现使得所开发的应用程序“一次编写,处处可用”的实现成为了可能。

1.2本课题研究的意义

近来随着计算机的快速发展,各种各样的电脑游戏层出不穷,使得我们能有更多的娱乐项目,而棋类游戏能起到锻炼人的思维和修身养性的作用,而且棋类游戏水平颇高,大有与人脑分庭抗礼之势。其中战胜过国际象棋世界冠军-卡斯帕罗夫的“深蓝”便是最具说服力的代表;其它像围棋的“手淡”、象棋的“将族”等也以其优秀的人工智能深受棋迷喜爱。

越来越多的具有智能的机器进入了人类的生活,人工智能的重要性如今显而易见。自己对人工智能比较感兴趣,而五子棋游戏程序的开发实现这个课题,正好提供给我这样一个研究的机会,通过对人工智能中博弈方面的研究(人机对弈),让我在简单的人机对弈全局设计,以及具体到相关算法上有了深入的了解。人工智能属于计算机科学的领域,它以计算机技术为基础,近几十年来,它的理论和技术已经日益成熟,应用领域也正在不断扩大,显示出强大的生命力。人工智能大致可以分成几个学科,它们每一个都是独特的,但是它们常常又互相结合起来完成设计任务,这时,这些学科之间的差别就变的很模糊。人工智能在专家系统,自然语言理解,自动定理证明,自动程序设计,人工智能在机器人学、模式识别、物景分析、数据库的智能检索、机器下棋(实质上是博弈论问题)和家用电器智能化等领域都有广泛的应用。而这个课题就是和人工智能中的博弈论领

域紧密相关的。

这个题目核心是人工智能和Socekt编程,。并且人工智能中的博弈部分,由于采用了大量的搜索算法,其中很多被利用到各方面。它的概念、方法和技术,正在各行各业广泛渗透。智能已经成为当今各种新产品、新装备的发展方向。所以,趁着这个机会,对人工智能中比较容易实现的人机博弈进行了解研究学习,也是很实用且很有必要的。

1.3本课题的研究方法

在进行游戏设计之前,首先决定的第一个问题就是,使用什么开发环境来编写环境? 自己虽然比较熟悉Java语言,但是实际开发项目经验很少,所以决定用Jcreator,其拥有高亮语法编辑、使用向导以及完全定制的用户界面,最主要的是能够自动查找文件于 Main 方法或 Html 文件以支持Java 小应用程序,然后启动相应的工具。

其次确定整个程序的结构框架。由于Applet运行速度较慢,如果在加上算法搜索时间,显然不符合程序的设计要求,决定用Java应用程序开发.整个程序的功能实现流程是这样的:网络对战涉及算法较少,所以先实现网络部分,实现基本的棋盘和棋子的类,添加判断胜负条件,这部是基础,也是很重要的,电脑AI也在这些基础上添加上来的。这个题目的2个功能包括2个重要算法,电脑AI和胜负条件,胜负条件运算量不大,有固定的模式。难点是人工智能,可以这样说,人工智能的好坏决定了这个题目的完成深度。所以,大部份时间花在AI算法的研究和改进上,对于算法我掌握的不多,研究了一些国内的五子棋算法,参考了一些游戏设计算法,详细比较各种算法的优缺点,而且参考了现代五子棋比赛的各种规则和技巧,尽量联系实际,努力提高电脑AI。

2课题相关基础

2.1五子棋

2.1.1棋盘和棋子

现代五子棋棋盘,经过国际棋联的多次修改,最终定为15 X 15路,即棋盘由横竖各15条平行线交叉组成,共有225个交叉点;棋盘上共有五个星位,中间的星位称为天元,周围四点为小星,与围棋盘略有不同。见图1

图1 棋盘

五子棋的棋子和围棋相同,分黑白2种颜色,通常为散圆形,有一面凸起或二面凸起等形状,一副棋子总数为225枚,其中黑子113枚,白子112枚。

关于计时,正规比赛按不同级别设置了不同的时间限制,一般的玩家都没有这个限制。

2.1.2规则及解释

1:黑棋先行,白棋随后。从天元开始相互顺序落子。

2:最先在棋盘的横向、竖向、斜向形成连续的相同色五个棋子的一方为胜利。

3:黑棋禁手判负、白棋无禁手。黑棋禁手包括“三、三”;“四、四”;“长连”。黑方只能用“四、三”去取胜。

4:如分不出胜负,则定位平局。

5:对局中拔子、中途退场均判为负

6:五连与禁手同时形成,先五为胜。

7:黑方禁手形成时,白方应立即指出。若白方未发现或发现后不立即指正,反而继续落子,则不能判黑方负。

五子棋是由两个人在一盘棋上进行对抗的竞技运动。在对局开始时,先由执

黑棋的一方将一枚棋子的落在“天元”上,然后由执白棋的一方在黑棋周围的交

叉点上落子。如此轮流落子直到某一方首先在棋盘的直线 横线或斜线上形成连

续的五子或五子以上,则该方就算获胜。但是五子棋的特点是先行的一方优势很

大。因此,在职业比赛种对黑方做了种种限制,以利公平竞争。黑白双方的胜负

结果必须按照职业五子棋的规则要求来决定。

2.1.3 五子棋常用术语

二:二是五子棋的一切进攻的基础;又分为活二和死二。

活二:即再下一子可形成活三的二,见图2。

死二:即再下一子可形成死三的二,见图3。

图2 活二 图3 死二

三:三是五子棋最常见的攻击手段。三分为活三、死三、眠三。

活三:为再下一子即可变成活四的三(活四介绍见后)。或三分为连三、跳

三。见图4。

我们通常所说的“三”。就是指活三而言。如果是死三,将特别指出。

死三:即对方有棋子在同一条线相邻交叉点防守的三;死三分为三种。见图

5。

眠三:是死三的一种特性,它看上去相邻点没有对方棋子防守,很像活三,

但由于受空间限制,不论如何发展都不可能称为活四,故称为“眠三“。见图5。

图4 活三 图5 死三

反三:反三不是指一种“三”的形状,而是指再阻止对方进攻的同时使自己

称为一道活三的反攻,称为反三。

四:四的形状有三种,它分为:活四,冲四、跳冲四。

活四:在同一条线上相连的四个同色棋子成为“连五”,如图6所示。

冲四:在同一条线上相连的相同颜色的四个棋子,它与活四不同的是,其中

的一端有对方的棋子进行阻挡,它只有再在另一端下一手棋才可形成“连五”。

跳冲四:它的形状在“四”中是比较特殊的,一般分为两种,它的特点是同

一条线上的同色的四个棋子,有一个或两个棋子与另外三个或两个棋子之间有一

个交叉点的间隔,它的下一手棋只有下在间隔的交叉点上才能形成“连五”,因

此,对方的棋子防守时,也只能阻挡在间隔的交叉点上,见图7。

图6 活四

图7 跳冲四图8 反冲四如图8,黑棋在1点进攻,形成一子双杀,这时白棋的妙手是在a位活三,它同时阻挡了黑棋的两种取胜方法。当黑棋仍在c位跳冲四活三时,白棋即在b 位阻断黑棋冲四并形成反冲四,是黑棋的进攻功亏一篑。

一子双杀:指用同一手棋同时形成两个胜点的着法。

追下取胜:是指白棋逼迫黑棋形成禁手而取胜的方法。

自由获胜:除了追下取胜以外的获胜方法,称之为自由取胜。

禁手(Forbidden):指黑方一子落下同时形成两个或两个以上的活三、冲四或形成长连的棋形,是对局中对黑棋禁止使用的战术或被判为负的行棋手段,见图15。白棋无禁手,如果黑子在落下的关键的第五子即形成五连的同时,又形成禁手。此时,因黑方已成连五,故禁手失效,黑方胜利。之所以这么规定也是为了规范比赛,其实我们业余的棋手,黑白棋子谁先下都不限制,只是先落子会有比较大的优势,另一方始终处于防守的被动状态。所以那一方先下子,他就有禁手,这是为了保持公平的一种手段。但是职业连珠五子棋虽然对黑棋采取了种限制,但是先行的一方优势依然很大。在高段位的比赛中还添加了一些规定,由于很少用到,就不必详细叙述了。

A B C D

E F

图9 禁手

见图9。A、B、C 中的x 点为三、三禁手。D、E 中的X 点为四、四禁手。F中的X 点为长连禁手。

长连:相同颜色的连续六子或六子以上。

2.1.4五子棋攻防

五子棋是一项对抗性很强的运动,在开局进入五手两打后,就开始进入了白刃战,相互争夺先手,任何一方都不能掉以轻心,要尽可能少犯错误,甚至不犯错误,否则将会导致速败。

众所周知,连珠五子,连五为胜。有四才能有五,有三才有四,以此类推。所以,在五子棋的对局众进攻和防守都是从“二”和“三”的争夺开始的。“好的开始是成功的一半”,这条格言用在五子棋里再合适不过了。

五子棋的点的选择十分关键。五子棋实际上是通过选择最佳的落点,加上正确的落子次序,一步一步地占领各个要点,最终获得胜利。

对局的早期,选点的着眼点主要是使本方的棋子保持联系,为以后创造尽可能多的成三、成四的机会,同时尽量限制对方成为好形。由于在五子棋对弈过程中,通过行棋落点来控制对方的落点是可能的,比如活三冲四的应点是可以预知的,完全有可能通过不断走出这样的先手来控制对方的着点直至胜利。所以,在对局的后期,就要在精确计算的前提下,尽早发动攻势,以取得棋局的控制权,否则一旦贻误战机,被对方抢先发动攻势,就会成为被控制的一方。

当有多个攻击点可供选择时,要选择后续手段多,又不会被对方反先的着点。如果是黑方,还特别要注意进攻终被对方反击时出现的各种禁手点的可能性。

进攻分为单攻棋和双攻棋,单攻棋指单线即单行或单向的攻棋子,包括三子攻棋(活三、填四)和四子攻棋(冲四、填五)。而双攻棋指双向或双行的攻棋。

包括三、三攻棋(双活三、双填四、填四活三);四、三攻棋(冲四活三、冲四填四、填五活三、填五填四);四四攻棋(双冲四、双填五、填五冲四)。

五子棋的取胜思路是由一个子开始,目标是运用各种方法在棋盘上发展出五连乃至长连而取胜。在这个发展过程中必然要经过由一子到两子两子到三子三子到四子的过程。因此说,把各种形状和各个方面上的二三四等子力结构烂熟于胸,做到举一反三,是学习五子棋的基本功,更是能灵活运用五种取胜技巧的基础。

3Java

3.1Java简介

Java是美国Sun公司开发的语言,它使用解释器执行代码,因此,无需对源代码进行任何更改即可在不同计算机上运行,是真正跨平台的编程开发语言。

Java有以下主要特点:

1:简单(Simple)

制定Java的原则之一,是要建立一种结构简单而且使用容易的系统,可以让用户不必接受很深的训练就可以开始设计程序,所以Java的语法尽可能与在当前许多程序设计师都采用的C及C++语言相似。并且,Java删除了C及C++许多极少使用、不易理解或常被混淆的功能,多多重继承、指针等。

2:面向对象(Object-Oriented)

面向对象是近年来信息界广为使用的概念和技术。它有许多良好的特性。对象的封装性可以使对象的接口定义明确;继承性可以增加软件的可重用性,有助于分类及模版设计等。实现面向对象的概念及其各种良好的特性是Java的设计理念之一。

3:分布式(Distributed)

计算机网络的发展使得信息应用朝着分布式的环境发展,所以现代的信息开发语言及环境要有配合分布式的特性及功能。Java具有一个网络功能的程序库,其中包含与如HTTP和FTP等TCP/IP网络通信协议整合的能力。

4:强壮性(Robust)

由Java所编写的程序要能在各种情况下运行,而且必须具有高的稳定性。Java在制定时即加入了能防止存储器被覆写和数据损坏的相关处理机制。

5:安全性(Secure)

Java是被设计用于网络及分布式环境中的,所以安全性是一个很重要的考虑。Java拥有数个从简单到复杂的安全保护措施,能有效地防止病毒的侵入和破坏行为的发生。

6:结构中立性(Architecture Neutral)

在网络上存在许多不同类型的计算机,从中央处理器到操作系统的机构均有很高的差异性。因此要使应用程序在每一种机器上均能运行是相当困难的。针对这个目的,Java的编译器可以产生一种结构中立的目标码文件格式――字节码(Byte Code)。这种字节码可以在许多种不同的计算机上运行。

7:多线程(Multithreaded)

多线程是开发复杂和功能强大的程序所必须的手段之一,Java同样支持这个重要功能。

一个Java程序的开发过程如图10所示。

图10 Java程序的开发过程

源文件:使用一个文本编辑器,如Edit或记事本来编写源文件。不可使用Word编辑器,因为它含有不可见字符。将编好的源文件保存起来,源文件的扩展名必须是Java。

编译器:源文件要经过编译器(Javac.exe)的编译生成可扩展名为.Class 的字节码文件。字节码文件是由与平台无关的二进制码组成的,执行时由解释器解释成本地机器码。

运行Java程序:Java程序分为两大类——Java应用程序(Application)和Java小应用程序(Applet)。Java应用程序必须通过Java解释器(java.exe)来解释执行其字节码文件;Java小应用程序可通过支持Java标准的浏览器来解释执行。

3.2Java开发环境

使用Jcreator开发环境必须安装JDK,我安装的版本是1.5.0,在环境变量里新建名为Path的变量名,变量值为D:\软件\JAVA\bin(根据JDK的安

装目录而定)。在命令提示窗口输入Java -version如果能正确显示版本号,则表示环境配置成功。如图11所示。

图11 环境变量

Jcreator的安装很简单,这里不在详细叙述,把路径配置好就可以了。如图12。

图12 Jcreator IDE

4课题详细研究方法

4.1程序结构说明

既然是Java Application,要实现网络对战,故采用C/S模式编写,程序包含7个独立的类文件-ChessWZQ.java、Group.java、Message.java、Player.java、ServerOneClient.java、Server.java、BoardPanel.jav a。

其中BoardPanel.java主要负责棋盘的初始化,鼠标事件的处理,以及判断胜负条件。ChessWZQ.java定义了面板上的其他元素,包括玩家列表,标题栏等。也包括了事件处理和人工智能。ServerOneClient.java则负责网络对战的处理。其他的类都是又这3个主类延伸出去的。在具体实现的时候再介绍其作用。见图13。

图13五子棋程序流程图

4.2棋盘及棋子的类

4.2.1棋盘

棋盘如图1,具体代码如下:

String line = "a b c d e f g h i j k l m n o";

char [] rowNum1 = {'1','2','3','4','5','6','7','8','9'};

char [] rowNum2={'1','0','1','1','1','2','1','3','1','4','1','5'};

这部分为棋盘的边界标识符,是必须要有的。用字符数组存储,最后确定位

置放上去即可。

棋盘的绘制:

private static int xp; // 棋子 X坐标

private static int yp; // 棋子Y坐标

public void paint(Graphics gc){

super.paint(gc);

//this.setBackground(Color.gray);

//this.invalidate();

gc.setColor(Color.blue);

//gc.setColor(new Color(255, 255, 240));

//画横向标识符

gc.drawString(line,25,15);

// 画竖向标识符

for(int i=0;i<9;i++){

gc.drawChars(rowNum1,i,1,10,35+i*30);

}

for(int i=9,j=0;i<15;i++,j+=2){

gc.drawChars(rowNum2,j,2,10,35+i*30);

}

// 画棋盘

for (int i = 0; i < 15; i++) {

gc.drawLine(30, 30 + i * 30, 450, 30 + i * 30); //行

gc.drawLine(30 + i * 30, 30, 30 + i * 30, 450); //列}

gc.drawLine(25, 25, 455, 25);

gc.drawLine(25, 25, 25, 455);

gc.drawLine(25, 455, 455, 455);

gc.drawLine(455, 25, 455, 455);

//面板初始化

for(int i=0;i<15;i++){

for (int j = 0; j < 15; j++) {

xp=16+i*30;

yp=16+j*30;

if (board[i][j] == 1){

gc.setColor(Color.black);

gc.fillOval(xp,yp,28,28);

//gc.drawImage(black, 16 + i * 30, 16 + j * 30, this);

}

if (board[i][j] == 2){

gc.setColor(Color.white);

gc.fillOval(xp,yp,28,28);

//gc.drawImage(white, 16 + i * 30, 16 + j * 30, this);

}

}

}

}

4.2.2棋子

确定下子的坐标(xp,yp)画特定大小的椭圆,这里的坐标指棋子相对棋盘的绝对坐标。

private static int xp; // 棋子 X坐标

private static int yp; // 棋子Y坐标

if(col==1) g.setColor(Color.black);

else g.setColor(Color.white);

g.fillOval(xp,yp,10,28,28);

4.3胜负判断条件

要判断四个方向,横向、竖向、以及2个斜向。思想还是比较简单,相同颜色连成五子即胜利,网上有些网友评论说完整的判断胜负条件包括连五和活四,我觉得完全没必要,活四还要检查两边的棋子,虽然运算量不大,但五子棋的标准就是连五即胜,一步之差,我们既要遵守规则,也要简化代码实现尽完整的功能。

我们要事先建立一个盘面数组board[ ][ ],即棋型表,数组的每一个元素对应棋盘上的一个交叉点,用‘0’表示空位,‘1’表示黑棋,‘2’表示白棋。由于代码太多,下面给出了一般状况的判断胜负函数,及以坐标(x,y)为中心的9X9矩形,只能在棋盘的内部,如果超过棋盘,就要另外考虑。下面的代码就是一般情况,整个矩形在棋盘内部的时候的判断胜负条件,如图14。

图14 获胜

胜负判断条件以下给出了X方向的代码:

protected boolean judge(int x,int y,int clr){

int i=0,j=0,count=0;

// x方向

for(i=0,count=0;x-i>=0&&i<5;i++){

if (clr==board[x-i][y]){

count++;

}

else{

break;

}

// System.out.println("( "+x+" , "+y+" )"+"count = "+count);

if(count==5)

return true;

}

for(i=1;x+i<15&&i<5;i++){

if(clr==board[x+i][y]){

count++;

}else{

break;

}

if(count==5)

return true;

}

return false;

}

为保证公平,先下子的就有禁手。但是我们一般没有这个规则限制,都是轮流先下子。理论上是这样的。但很多专家表明,先下子有很大的几率获胜,即使有禁手,先下子的一方还是有很大的优势,我觉得对于我们一般玩家而言,这些规定可以不考虑。

判断胜负的不管是单机还是玩家相互游戏,都必须开服务端,因为判断胜负是放在里面的。如果有一方获胜,弹出提示框,如果确认则清空棋盘继续新游戏。

public void getVictory(Message msg){

JOptionPane.showMessageDialog(null,

"You Win The Game",

"Congratulations",

https://www.wendangku.net/doc/e813088453.html,RMATION_MESSAGE);

//继续新游戏

label3.setText("Player2");

newGame();

}

需要注意的一点是落下的棋子如果离任何一方的边界小于4,则以边界为限制判断是否有一方获胜,这样的话也要考虑多种方向,但原理还是和基本情况是一样的。

4.4网络对战

这部分也属于网络套接字编程的经典应用,根据服务器地址连接特定端口。

网络部分很简单,但是我也做出了自己的特色,就是事件处理,做工可根据具体情况修改,虽然没有多少实用价值,但是也尽量使程序留有扩展性。下面给出了Message的代码。

/**

* 消息列表

* type = 1 // 请求连接, msg = 连接者名字

* type = 2 // 放棋子

* type = 3 // 请求和其他人游戏

* type = 4 // 拒绝游戏请求

* type = 5 // 同意请求

* type = 6 // 发送胜利消息

* type = 7 // 断开连接请求

* type = 8 // 保存游戏,但是不放在磁盘上,在下一局开始时将会丢失

* type = 9 // 添加新的玩家到所有客户端的玩家列表

* type = 10// 响应信息type ==1

* type = 11// 和玩家游戏,msg 保存玩家的名字,创建游戏的玩家设置游戏

* type = 12//信息设置

* type = 13// 设置玩家颜色

* type = 14// msg=接受请求的一方设置

* type = 15// 服务端更新信息

* type = 16// 发送控制或错误信息

* type = 17// 游戏失败

* type = 18// 服务端套接字关闭

* type = 19// 玩家结束游戏及更新

* tyep = 20// 电脑获胜/ 玩家获胜

*/

SOCKET监听端口,如果有玩家则更新玩家列表,如果双击除自己以外的玩家,则可以开始游戏,发送游戏请求,如果同意则返回棋子颜色并开始游戏,同时清空玩家列表。每一下子,把坐标传给服务端,并在2端显示出来,并且判断胜负。如果,有一方获胜,则提示消息通知双方,确定则继续开始新游戏。

服务端开启服务监听线程和客户端,如图15,如果有玩家知道服务器IP地址,即可选择在线玩家进行联网游戏,如图16。

图23 服务端监听

图15 服务端监听

双击除自己以外的一个玩家,发出游戏请求,同时要确定自己棋子的颜色,用MSG发回服务端。如果被拒绝,则返回原来的状态。

if(msg.color==1){

ss = new String("white");

bpanel.setColor(2);

}

else{

ss = new String("black");

bpanel.setColor(1);

}

图16 邀请游戏

4.5电脑AI

广义上来讲,博弈是指在一定的环境条件和一定的规则约束下,依靠自己所能够掌握的信息,从各自选择的行为或是策略进行选择并加以实施,并从各自取得相应结果或收益的过程。冯·诺伊曼(John von Neumann,1903-1957)和摩根斯坦恩(Oskar Margenstern, 1902-1977)在1944年出版了《博弈论与经济行为》(Theory of Games and Economic Behavior)一书中,最早地提出了关于博弈论的概念。但是,对于非合作、纯竞争型博弈,诺伊曼所解决的只有二人零和博弈。在这里所抽象化后的博弈问题是,已知参与者集合(两方),策略集合(所有棋着),和盈利集合(赢子输子),最终是想去找到一个理论上的解或平衡,也就是对参与双方来说都最合理、最优的具体策略。

五子棋游戏的设计与实现毕业设计论文

毕业论文(设计)题目五子棋游戏的设计与实现

毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作者签名:日期: 指导教师签名:日期: 使用授权说明 本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:日期:

学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名:日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名:日期:年月日 导师签名:日期:年月日

五子棋报告-java

XXXX大学 XX学院 课程设计报告 课程名称:面向对象程序设计 题目名称:五子棋游戏设计 学生姓名: 专业班级: 指导教师:任晓强

一、课程设计目的与任务(四号、宋体、加黑、顶格) (1)掌握Java编程、面向对象的基础知识。 (2)较熟练地编写Java应用程序Application。 (3)了解Java的常用标准类库、编程技巧、异常处理。 (4)联系已学过的内容,巩固所学的理论,增强独立工作能力。(5)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。 (6)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。 课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。 二、课程设计内容 1本设计题目的主要内容 设计一个15╳15围棋棋盘,由两玩家交替进行对战,并可以实现以下功能: 1.选择落子的先后顺序 2.重置棋盘 3.刷新重新开始 4.退出提示 并且规定退出者判为负,但退出过程中要有提示。以防不小心点错了。 最后判断某一方是否为五子连珠。 实现一个简单的多用户五子棋的游戏程序,包括如下两个界面 (1)选择对弈桌(执黑、执白)。 (2)在游戏界面,有开始,退出(游戏未结束、点退出自动判负); 2 设计思想与程序构架

程序流程图 程序的功能分配 a. 棋盘的绘制 public void draw_qipan(Graphics G) 添加按钮 Button b1=new Button("开始"); Button b2=new Button("重置游戏"); Label lblWin=new Label(" "); Checkbox ckbHB[]=new Checkbox[3]; Button exist = new Button("退出"); public void init(){ ckbHB[0]=new Checkbox("执白",ckgHB,false); ckbHB[1]=new Checkbox("执黑",ckgHB,false); ckbHB[2]=new Checkbox("观看",ckgHB, false); } c. 鼠标棋子的触发事件 public void mouseClicked(MouseEvent e) { Graphics g=getGraphics(); int x1,y1; x1=(); y1=(); if ()<20 || ()>300 || ()<20 || ()>300) {

c++五子棋课程设计报告

福建农林大学计算机与信息学院 课程设计报告 课程名称:面向对象程序设计课程设计 课程设计题目:五子棋 姓名: 系:计算机 专业:软件工程 年级: 学号: 指导教师: 职称: 年月日

福建农林大学计算机与信息学院计算机类课程设计报告结果评定

目录 1.设计目的 (4) 2.设计要求 (4) 3.设计方案 (4) 4.设计内容 (7) 4.1系统的主要结构和类结构 (7) 4.2 (2)五子棋类的结构 (7) 4.3⑶系统工作流程介绍.................................................... 7错误!未定义书签。⑷类的介绍. (8) 4.5 (5) 各个模块的介绍 (8) 4.6 (6)程序运行图示 (14) 5.总结 (16) 参考文献 (17)

(a)1.设计目的 (1)加深我对面向对象程序基本的理解和掌握。 (2)熟练掌握基本流程图的绘制。 (3)熟练visio的一些操作方法。 (4)能够在调试程序中快速发现并排除程序中的错误。 (5)提高面向对象程序语言解决实际中的问题的能力。 (b)2.设计要求 五子棋是玩家在游戏棋盘上逐个输入黑子或白子的坐标,因此游戏要求在DOS界面生成一个可供操作的棋盘。通过输入坐标完成对应落子情况,在输入过程中判断落子是否正确、是否有一方胜利等情况。编写代码可以在VC6.0下编译通过。游戏要能实现五子棋游戏的简单操作。程序中要体现面向对象思想。 (c)3.设计方案 (必须包含系统功能说明、用例图和类图) 一、用例图 落子 基于用户的用例图

步数用例图 系统用例图 1)输出棋盘界面菜单及图像2)开始进入控制3)黑白棋正确输入格式控制4)判断黑白输赢控制5)正确计数对羿步数及下一步所要走的棋盘界面

五子棋游戏设计与实现毕业设计

南京工程学院 毕业设计说明书(论文) 题目:五子棋游戏设计与实现

毕业设计(论文)原创性声明和使用授权说明 原创性声明 本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。 作者签名:日期: 指导教师签名:日期: 使用授权说明 本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。 作者签名:日期:

学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名:日期:年月日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名:日期:年月日 导师签名:日期:年月日

五子棋(JAVA版)实习报告及原代码

实习报告 课程名称信息系统认知实习实习题目java五子棋专业 班级 学号 学生姓名 实习成绩 指导教师 2010年1月 前言

摘要 五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用Java开发五子棋游戏。主要完成了人机对战和玩家之间联网对战2个功能。网络连接部分为Socket编程应用,客户端和服务器端的交互用Class Message定义,有很好的可扩展性,客户端负责界面维护和收集用户输入的信息,及错误处理。服务器维护在线用户的基本信息和任意两个对战用户的棋盘信息,动态维护用户列表。在人机对弈中通过深度搜索和估值模块,来提高电脑棋手的智能。分析估值模块中的影响精准性的几个要素,以及提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算法的基础上分析一些提高电脑AI方案,如递归算法、电脑学习等。算法的研究有助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。 1引言 1.1课题背景 五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为连珠,英译为Renju,英文称之为Gobang或FIR(Five in a Row 的缩写),亦有连五子、五子连、串珠、五目、五目碰、五格等多种称谓。 五子棋起源于古代中国,发展于日本,风靡于欧洲。对于它与围棋的关系有两种说法,一说早于围棋,早在“尧造围棋”之前,民间就已有五子棋游戏;一说源于围棋,是围棋发展的一个分支。在中国的文化里,倍受人们的青睐。本世纪初五子棋传入欧洲并迅速风靡全欧。通过一系列的变化,使五子棋这一简单的游戏复杂化、规范化,而最终成为今天的职业连珠五子棋,同时也成为一种国际 比赛棋。 Java语言是当今最为流行的程序设计语言之一作为一门非常优秀和极为健壮的编程语言,它同时具有的面向对象,与平台无关,分布式应用,安全,稳定和多线程等优良的特征,使用Java语言,不仅可以开发出功能强大的大型应用程序,而且Java语言本身突出的跨平台的特性也使得它特别适合于Internet上的应用开发,可以这样说,Java的出现使得所开发的应用程序“一次编写,处处可用”的 实现成为了可能。 1.2本课题研究的意义 近来随着计算机的快速发展,各种各样的电脑游戏层出不穷,使得我们能有更多的娱乐项目,而棋类游戏能起到锻炼人的思维和修身养性的作用,而且棋类游戏水平颇高,大有与人脑分庭抗礼之势。其中战胜过国际象棋世界冠军-卡斯帕罗夫的“深蓝”便是最具说服力的代表;其它像围棋的“手淡”、象棋的“将族”

五子棋课程设计报告

单 位 分院(系) 专 业 学 号 学生姓名 指导教师 完成日期 2011 年 05 月 日 摘 要 五子棋的历史:五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代 的传统黑白棋种之一.发展于日本,流行于欧美.容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性. 五子棋相传起源于四千多年前的尧帝时期,比围棋的历史还要悠久,可能早在“尧造围棋”之前,民间就已有五子棋游戏.有关早期五子棋的文史资料与围棋有相似之处,因为古代五子棋的棋具与围棋是完全相同的.在上古的神话传说中有“女娲造人,伏羲做棋”一说,《增山海经》中记载:“休舆之山有石焉,名曰帝台之棋,五色而文状鹑卵.”李善注引三国魏邯郸淳《艺经》中曰:“棋局,纵横各十七道,合二百八十九道,白黑棋子,各一百五十枚”.这段虽没明讲是何种棋类,但至少知道远古就以漂亮的石头为棋子.因而规则简单的五子棋也可能出自当时,并是用石子作棋子.亦有传说,五子棋最初流行于少数民族地区,以后渐渐演变成围棋并在炎黄子孙后代中遍及开来. 程序说明:本程序是一款棋类益智游戏程序,是用WIN-TC 编写在WINDOWS 系统下运行的娱乐游戏.本程序可以实现人人对战,操作采用键盘上的上下左右键控制棋子的上下左右移动,由空格键控制下棋,双方都可通过ESC 键终止游戏. 石家庄铁道大学课程设计 五子棋 课程设计题目

游戏开始后,红、白双方轮流下棋,程序会根据双方下棋的先后顺序自动显示不同颜色的棋子,提示当前下棋的棋手,任何一方由五子连成一线时,游戏结束,结束时会显示对战双方胜负情况. 关键词:五子棋游戏应用程序,C语言,图形函数 目录 第1章选题的意义2 意义2 设计思路 2 系统的基本要求3 第1章选题的意义 意义 通过游戏过程增加编程的兴趣,提高编程水平.编制该程序我对以下的知识点进行的巩固和掌握:1.数组元素为结构体的数组应用.2.全局变量应用.3.按键的处理.4.数组元素与蛇、食物的对应关系.5.图形方式等等.加深对所学知识的理解与掌握,增强自己对所学知识解决实际问题的能力,为以后的程序开发打下基础. 设计思路 棋盘设计为18×18格,初始状态光标在棋盘的中央,玩家1先走,轮流落子,当一方连成五子或下满棋盘时,游戏结束(连成五子的一方获胜,下满棋盘为和棋).当游戏一方胜利后显示胜利信息.从程序表面看,这是一个二维平面图,所以数据用二维数组来表示,数组两个下标可以表示棋盘上的位置,数组元素的值代表棋格上的状态,共有三种情况,分别是0代表空格,1代表白棋,2代表黑棋.这样程序的主要工作是接收棋手按键操作,棋手用Up、Down、Left、Right控制光标移动,空格键表示落子.一旦接收到空格键,说明棋手落子,先判断是否是有效位置,也就是说已经有棋子的位置不能重叠

五子棋游戏程序的设计报告

计算机学院网络工程专业《程序设计综合课程设计》报告(2011/2012学年第一学期) 学生姓名: 学生班级:网络工程 学生学号: 指导教师: 2011年12月30日

双人五子

棋 目录 第一章课程设计目的和要求 (1) 1.1课程设计的目的 (1) 1.2课程设计的要求 (1) 第二章课程设计任务内容 (2) 2.1课程设计的主要内容 (2) 2.2系统设计原则 (2) 第三章设计说明 (3) 3.1游戏分析和介绍 (3) 3.1.1游戏分析 (3)

3.1.2游戏介绍 (3) 3.2重点模块说明 (3) 3.2.1棋盘界面Showboard() (3) 3.2.2下棋Play() (4) 3.2.3覆盖棋盘Recoverboard() (7) 3.2.4游戏结束后初始化棋盘Unitboard() (7) 3.2.5保存棋盘CopyB() (8) 3.3函数清单 (8) 3.4接口 (9) 第四章软件使用说明 (10) 4.1测试 (10) 4.2限制条件 (13) 第五章课程设计心得体会 (14) 附录一程序流程图 (15) 附录二程序代码 (16) 附录三参考文献 (26) 第一章课程设计目的和要求 1.1课程设计的目

1,学习综合运用C语言课程和其他相关课程的知识,提高分析解决实际问题的能力,进一步巩固、加深和拓宽所学的知识,进一步加强结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。 2,全面系统的学习面向对象程序设计的基本概念、基本语法和编程方法,与同学合作设计整套程序,并且独立完成一定工作量的程序设计. 3,掌握程序设计中的常用算法和C语言的程序技巧,培养良好的程序设计风格。 4,运用所学的知识了解五子棋游戏的制作结构,将所学的知识运用于实践中。 1.2课程设计的要求 1,与同学合作设计、编制、调试出一款双人五子棋游戏,并单独完成其中一定量的函数模块。 2,要求该游戏具有趣味性和可操作性,能够正常运行。其中用到C++语言中的各种语句、结构。(如其中需要注意全局变量和局部变量的申明,数组的使用等) 3,双人五子棋要求能够进入欢迎界面,二人对弈,当有五颗同色棋子相连时,判断出输赢等一系列游戏流程。

(完整版)五子棋本科毕业设计

第一章绪论 1.1开发背景: 游戏软件是当今世界发展最迅速,最有影响力,最有潜力与活力的领域之一?游戏软件深受广大青年人喜爱,而且在发达国家中老年人也有大部分喜欢游戏的,因此游戏软件在很大程度上给予绝大部分人精神上的娱乐?第二次世界大战以后,电子计算机技术得到了突飞猛进的发展?先是由晶体管代替了笨重的真空管,后来出现了集成电路和大规模集成电路,使电子子计算机一代一代实现更新,同时软件技术也发展迅速?在美国,集中了许多计算机软件的设计人才,他们工作之余,时常喜爱编一种能与人斗智的“游戏”,以此来锻炼编程的能力?这种“游戏”花样繁多,但其特点都是利用计算机软件事先设计好的“分析”?“判断”能力反过来与人较量?由于不断修改更新,使计算机的“智力”水平与人难分高低?到了90年代,游戏软件已经为世界各国的人使用,BLACKISLAND和Blizzard.这两个强大的游戏制作组起到了巨大的带动作用,还有中国的洛河工作室在国内也起到了巨大作用,他们让很多很多人喜欢上了游戏软件,打开了这个市场。如今游戏软件产业已经受到了广泛的关注,它年轻有潜力而且吸引人,让人们日益丰富的生活需求得以满足。 五子棋游戏更是吸引着不同年龄段的人群,无论男女老少都可以玩,都喜欢玩,而当前微型计算机已经是在广大人群中流行着,用电脑来下五子棋更是一种时尚。五子棋相传起源于四千多年前的尧帝时期,比围棋的历史还要悠久,可能早在“尧造围棋”之前,民间就已有五子棋游戏。有关早期五子棋的文史资料与围棋有相似之处,因为古代五子棋的棋具与围棋是完全相同的。在上古的神话传说中有“女娲造人,伏羲做棋”一说,《增山海经》中记载:“休舆之山有石焉,名曰帝台之棋,五色而文状鹑卵。”李

五子棋需求分析报告08093337

中国矿业大学 应用系统开发实践 设计题目:基于VC的五子棋游戏软件的设计与开发指导教师: 学生: 专业: 计算机科学与技术09-1班 2012年 5月

目录 1 引言 (2) 2 系统需求分析 (2) 2.1系统需求 (2) 2.2功能需求 (2) 2.3系统运行环境 (2) 3 五子棋算法分析 (3) 3.1五子棋的发展 (3) 3.2五子棋的规则 (3) 3.3具体算法分析 (4) 3.3.1 棋盘局势状态表示 (4) 3.3.2棋盘中下棋的顺序表示 (5) 3.3.3具体算法 (5) 4 系统流程 (7) 5 系统功能实现 (8) 5.1窗口设计 (9) 5.2棋盘设计 (9) 5.3按钮功能的实现 (10) 5.4胜负判断 (11) 6 系统测试与分析 (13) 7 结论 (17)

1.引言 目前网络上有很多五子棋子游戏,玩法简单,娱乐性也很高。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。通过对五子棋的设计与开发,了解和掌握游戏开发的原理与方法。让电脑像人脑一样思考,一直是人工智能发展的最终目标。作为一门边缘学科,它有诸多的研究领域,博弈即为其中之一。博弈的参加者可以是个人、集体、某种生物或机器,他们都力图用自己的“智力”去击败对手。博弈为人工智能提供了一个极好的试验场所,人工智能中的许多概念和方法都是从博弈程序中提炼出来的,人工智能中大多以下棋为例来研究博弈规律。本文以五子棋为入口,设计了一个五子棋双人对战和人机对弈系统,以实现人和人,人和计算机的博弈,最终的目的是为了建立一个有具体规则的五子棋平台。 2.需求分析 目前网络上有很多五子棋子游戏,玩法简单,娱乐性也很高。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。通过对五子棋的设计与开发,了解和掌握游戏开发的原理与方法。让电脑像人脑一样思考,一直是人工智能发展的最终目标。作为一门边缘学科,它有诸多的研究领域,博弈即为其中之一。博弈的参加者可以是个人、集体、某种生物或机器,他们都力图用自己的“智力”去击败对手。人机对弈程序的要点,至少应具备以下4个部分:(1) 状态表示:某种在机器中表示棋局的方法,能够让程序知道博弈的状态。(2) 走法产生:产生合法走法的规则,以使博弈公正地进行,并可判断对手是否乱走。(3)搜索技术:从所有合法的走法中选择最佳的走法技术。(4) 对弈界面。 2.1 系统需求 五子棋作为一款休闲益智游戏,它最大的优点在于游戏规则家喻户晓,简单,上手快,趣味性强,所以受广大用户青睐,在各大提供棋牌类游戏的平台都可以看到玩五子棋游戏的人很多。休闲益智游戏中等级并不是最重要的追求目标,通过对游戏规则的熟悉,能很快上手掌握其操作方式,也更适合男女老幼全家共同娱乐,花费时间简短,速战速决,在短时间内感受到游戏的乐趣,完全享受气氛轻松活跃的游戏过程。此种娱乐方式既不耽误时间也能轻松调剂娱乐,充分适合现代人们的娱乐需求。更主要的是开发了人的智力,成为年轻一代最流行的游戏,据统计,五子棋游戏的玩家中,学生占了接近三分之一的比例,对学生的智力健康成长起一定作用,正所谓休闲娱乐两不误。 2.2 功能需求 要求系统界面简洁,操作方便,把五子棋游戏规则中最基本的规则体现出来,比如“和棋”、“重新开局”等。五子棋还有一大特点就是速战速决,电脑应在很短时间内就应做出判断,并能提供一定的帮助,违反游戏规则的时候应立即指出。在正规五子棋比赛中,都设置了“禁手”这一规则。 2.3 系统运行环境 Win 9X/Win ME/Win NT/Win 2000/Win XP/Win 2003/

jv五子棋毕业设计整套

1引言 随着计算机技术的不断发展,网络技术的普及范围越来越广,网络能够提供的服务多样、便捷,已经成为人们生产生活中不可缺少的重要组成部分。如今网络休闲游戏发展迅速,它凭借健康、方便、互动性强、益智等诸多优点,成为大部分现代人休闲娱乐的首选。 网络五子棋游戏是使用Java语言开发的一款游戏。它使用SOCKET建立连接,多线程处理数据,以及可嵌入网络浏览器的APPLET作为客户端,这些特点使这款游戏无论是服务器还是客户端的实现都相对容易。通过对该软件的编写,还可以巩固学生对以上各种知识的掌握和理解。

2 JAVA语言概述 2.1 JAVA简介 JAVA是Sun Microsystem公司开发的编程语言,是一个简单,面向对象,分布式,解释性,强壮,安全,与系统无关,可移植,高性能,多线程和动态的语言。 2.1.1 JAVA的基本特点 (1) 简单性 Java与C++语言非常相近,但Java比C++简单,它抛弃了C++中的一些不是绝对必要的功能,如头文件、预处理文件、指针、结构、运算符重载、多重继承以及自动强迫同型。 Java实现了自动的垃圾收集,简化了内存管理的工作。 (2) 面向对象 Java提供了简单的类机制和动态的构架模型。对象中封装了它的状态变量和方法,很好地实现了模块化和信息隐藏;而类则提供了一类对象的原型,通过继承和重载机制,子类可以使用或重新定义父类或超类所提供的方法,从而既实现了代码的复用,又提供了一种动态的解决方案。 (3) 多线程 多线程使应用程序可以同时进行不同的操作,处理不同的事件。在多线程机制中,不同的线程处理不同的任务,他们之间互不干涉,不会由于一处等待影响其他部分,这样容易实现网络上的实时交互操作。 (4) 分布性 Java是面向网络的语言。通过它提供的类库可以处理TCP/IP协议,用户可以通过URL地址在网络上很方便的访问其他对象。 (5) 体系结构中立 Java是一种网络语言,为使Java程序能在网络的任何地方运行,Java解释器生成与体系结构无关的字节码结构的文件格式。为了使Java的应用程序能不依赖于具体的系统,Java语言环境还提供了用于访问底层操作系统功能的类组成的包,当程序使用这些包时,可以确保它能运行在各种支持Java的平台上。 (6) 安全性 用于网络、分布环境下的Java必须要防止病毒的入侵,Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止了程序员使用欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。 2.1.2 Java中输入/输出流概念 过滤流DataInputStream 和DataOutputStream 除了分别作为FilterInputStream 和FilterOutputStream的子类外,还分别实现了接口DataInput 和DataOutput。接口DataInput 中定义的方法主要包括从流中读取基

课程设计报告--c++课程设计五子棋游戏

徐州师范大学物电学院课程设计报告 课程名称:计算机程序设计实训 题目:五子棋 专业班级: 09物41 学生姓名:高乐莲 学生学号: xxxx ___________ 日期: 2011.12.24 指导教师:赵纪平 物电学院教务部印制

说明: 1、报告中的第一、二、三项由学生在课程设计开始前填写,由指导教师指 导并确认签字。 2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩,并 填写成绩评定表。 3、所有学生必须参加课程设计的答辩环节,凡不参加答辩者,其成绩一律 按不及格处理。答辩小组成员应由2人及以上教师组成。答辩后学生根据答辩情况填写答辩记录表。 4、报告正文字数一般应不少于3000字,也可由指导教师根据本门课程设 计的情况另行规定。 5、平时表现成绩低于6分的学生,取消答辩资格,其该课程设计成绩按不 及格处理。 6、课程设计完成后,由指导教师根据完成情况写出总结。 7、此表格式为徐州师范大学物理与电子工程学院提供的基本格式,指导教 师可根据本门课程设计的特点及内容做适当的调整。

指导教师签字: 年月日

目录 摘要...................................................................................................II Abstract................................................................................................ II 1 绪论 (1) 1.1 课题背景 (1) 1.2 课程设计的目的 (1) 2 设计方案简述 (2) 2.1 可行性分析 (2) 2.2 需求分析 (2) 3 详细设计 (3) 3.1窗体设计 (3) 3.2游戏项目开发 (5) 3.2.1棋牌设置 (5) 3.2.2放置棋子功能的开发 (6) 3.3.3游戏获胜决断的开发 (12) 3.2.4游戏的调试与运行 (20) 4 设计结果及分析 (22) 4.1 程序的结果 (22) 4.2结果分析 (23) 5总结 (24) 参考文献 (25)

五子棋-Java课程设计

《面向对象程序设计》 课程设计报告 实验时间:2010年10月26日 实验班级:********************** 实验报告总份(片)数: 1 份(片) 实验指导老师:***** ******* 设计小组 湖南省吉首市吉首大学 课程设计报告 简单的游戏——五子棋 小组成员(姓名、学号): **(组长)** ** ** ** ** 一、实验分工

二、开发环境(实验编译以及测试环境) 硬件环境: CPU:Intel 奔腾双核E5200 主频2.5GHz 内存:2G 软件环境: 操作系统:Windows 7 编程环境JDK7.0 开发工具:Eclipse SDK 三、使用环境(用户运行环境) 硬件环境: CPU主频在500MHZ以上,内存在128M以上 软件环境: JAVA运行环境+ Windows XP或Windows 2000 以上操作系统 目录 第一章总体设计.............................................................................................................................. 1 1.1设计的目的.......................................................................................................................... 1 1.2本系统的主要功能.............................................................................................................. 1 1.3系统包含的类及类之间的关系。...................................................................................... 1 1.4 Java源文件及其功能......................................................................................................... 2 1.5 项目构建思路..................................................................................................................... 2第二章模块功能介绍.................................................................................................................. 12 2.1主类Chess...................................................................................................................... 12

人工智能课程设计(五子棋)解读

《人工智能导论》课程报告 课题名称:五子棋 姓名: X X 学号:114304xxxx 课题负责人名(学号): X X114304xxxx 同组成员名单(学号、角色): x x1143041325 XXX1143041036 指导教师:张建州 评阅成绩: 评阅意见: 提交报告时间:2014年 1 月 9 日

五子棋 计算机科学与技术专业 学生XXX 指导老师张建州 [摘要]人类之所以不断在进步,是因为我们人类一直不断的在思考,五子棋游戏程序的开发符合人类进步也是促进人类进步的一大动力之一。五子棋游戏程序让人们方便快捷的可以下五子棋,让人们在何时都能通过下棋来提高逻辑思维能力,同时也培养儿童的兴趣以及爱好,让孩子更加聪明。 同时,五子棋游戏程序的开发也使得五子棋这个游戏得到了广泛的推广,让世界各地的人们知道五子棋,玩上五子棋,这已经不是局限。五子棋游戏程序使得越来越多的人喜欢上了五子棋,热爱下五子棋,它是具有很好的带动性的。 关键词:五子棋进步思考

目录 《人工智能导论》课程报告 0 1 引言 (3) 1.1五子棋简介 (3) 1.2 五子棋游戏的发展与现状 (3) 2 研究问题描述 (4) 2.1 问题定义 (4) 2.2 可行性研究 (4) 2.3 需求分析 (5) 2.4 总体设计 (5) 2.5 详细设计 (6) 2.6编码和单元测试 (6) 3 人工智能技术 (6) 4 算法设计 (7) 4.1α-β剪枝算法 (7) 4.2极大极小树 (7) 4.3深度优先搜索(DFS) (8) 4.4静态估值函数 (9) 5 软件设计和实现 (9) 5.1 数据结构定义 (9) 5.2 程序流程图 (17) 6 性能测试 (18) 6.1 程序执行结果 (18) 7 总结 (21) 参考文献 (21)

五子棋游戏实验报告

五子棋游戏实验报告 课程名称计算机程序设计(VB) 学号______________________ 姓名______________________ 班级______________________ 提交时间 五子棋软件设计 一、实验目的 1?通过五子棋软件设计或者自拟题目设计,巩固本课程所学的各个章节重点知识,自拟题目的同学需尽早向教师提岀自己的想法及设计方案。 2?通过开发一个较大的系统,增强软件开发能力。 3?通过调试系统,增强逻辑思维能力。 二、实验内容 1.基本要求: (1)输入两个对手名字,然后进入游戏界面。 (2)用鼠标点击的方式在棋盘上摆放棋子,黑白交替。(棋盘15*15 ) (3)可以悔棋。 (4)五子连在一起的时候能判断胜利,并且显示出胜利者的名字。 (5)能够将棋局的结果保存,保存该棋局

结束的状态、对手名字、棋局名字(棋局名字在保存时由用户在相应的界面下添入)(此功能要求用数据库和文件两种技术实现)。

因为棋盘上空点居多,大部分点的信息为0,因此只需保存有棋子的点的信息 用文件技术进行棋局保存,思路相同。 (7)五子棋恢复棋局 思路:首先从数据库文件中找到要恢复棋局的数据(即曾经保存的数据),然后把这些数据赋值给内存中相应的数组或者变量中,按照这些数据重新绘制棋盘和棋子,即完成了对棋局的恢复。 窗体启动事件应该完成的事情: 组合框中应该显示曾经保存的棋局名。因为每次保存棋局时,都是将棋局所有棋子的记录添加在表的最 后,因此表中关于棋局名的记录只能是类似于aaabbbbccccc的形式,而不可能是abbcacc的形式,根据 这个特点编程序取出表中不同的棋局名。 具体算法: 用一个字符串变量strfile初始值为空,从表的顶端向下依次移动记录指针,如果当前记录的棋局名字段和strfile不相等,说明进入另一个棋局的记录中,将该棋局记录的棋局名赋值给strfile,并加入到组合 框中,一直到表中最后一个记录 因为要从数据库中取岀相关数据到a数组中,因此要将a数组所有数据清零。 要建立一个data控件,与数据库连接起来,而后识别棋局(即表中的棋局名字段与在列表框中选择的棋 局名比较),将数据库该棋局中所有信息都赋值给a数组及相关变量。 刚才仅仅是数据的恢复,即将数据库中已经保存过的数据恢复到内存中,下一步应该根据内存中的数据重新绘制棋盘以及棋子。 重新绘制棋盘是独立的一块功能,因此考虑用全局子过程来实现,该子过程定义在模块中。思路如下: 清屏一绘制棋盘一根据a数组中的每一项的两个下标来决定绘制棋子的位置,根据每一项的值是1还是 2来决定在该位置绘制何颜色的棋子。 决定该黑白方走的blackwhite变量当时没有保存,可以采用在数据库中保存的方式来解决,本例中解决方法是通过数黑白棋子个数来决定恢复棋局后该谁走的。 因此设置了一个变量做计数器,每走一步棋计数器的值加一。 用文件技术实现棋局恢复,思路相同。 (8)悔棋 悔一步棋:用几个变量来表示关于一步棋的几个信息,每次下子都将该子的信息赋值给那几个变量,悔 一步棋即将那几个变量所表示的点的a数组信息清零。而后调用paint ()过程重画。 以上是教师带着学生完成的软件功能。 遗留问题:保存棋手姓名和棋局名并在恢复棋局的时候显示。(需要同学们自己完成)思路:在数据表中多建立两个字段,分别表示两个棋手姓名,同其它数据的保存类似。 三、设计日期 十二月 四、完成日期 十二月 五、实验体会 其实,一开始学习vb我就对它不抱有一定的热情,可能是因为要用到计算机以及编程问题,当时一想到有代码,就会无比的苦恼,但是为了让这门课顺利通过,我还是怀着一颗必须要学的心情。起初,我对待这门新课程和其他课

(完整版)五子棋游戏的设计与实现毕业设计

毕业论文(设 计) 题目五子棋游戏的设计与实 现 所在院(系)数学与计算机科学学 院

专业班级信息与计算科学1101班 指导教师拓守恒 完成地点陕西理工学院 2015年5 月18日

五子棋游戏的设计与实现 作者:王勇 (陕理工学院数学与计算机科学学院信息与计算科学专业1101班,陕西汉中 723000) 指导教师:拓守恒 [摘要]五子棋是起源于我国古代的黑白棋种之一,是一种简单的娱乐性较强的大众游戏,深受广大玩家的喜爱,但同时作为比赛,五子棋游戏还有着深奥的技巧。 本系统的实现采用了C语言的模块化的程序设计方式,用Visual C++ 6.0软件来实现程序的编译运行。实现黑白两方分别落子,通过棋盘上方的棋盘动态信息提示,轮流落子,本系统中游戏的每一个功能在程序中都是一个相对独立的模块,比如,棋盘模块,棋子模块,选择游戏模式模块,悔棋模块等等在程序中都是独立的,但它们之间通过逻辑关系的链接又构成了一个可以使游戏正常运行的程序。 为实现游戏的双人对战模式和人机对战模式,并使得游戏尽量的简单化,本系统需要达成以下目标:设计一个简洁的游戏初始界面;制定合法规则,使游戏能公正的进行,并且可以断定胜;支持人机对战模式,可以是电脑通过人工智能和合法规则选出最优落子位置;可以悔棋,在玩家落子落错位置时,可按下悔棋键进行悔棋。 [关键词]五子棋,游戏设计,C语言,双人对战,人机对战,人工智能

Designer and implementation of gobang game Author: wangyong (Grade11,Class 1, Major in Information and computing science, Mathematics and computer science Dept. Tutor: Tuo shouheng Abstract:Gobang is one of the black and white kind of originated in ancient China, is a simple and entertaining stronger mass games, loved by the majority of players, but at the same time as the game, gobang game with profound skills. The implementation of this system method, using Visual C + + 6.0 software to realize the program compiler running. Implementation of black and white two parties move later, respectively, by the board at the top of the dynamic message board, take turns to move later, this game in the system each function in the program is a relatively independent modules, such as, the board module, pawn module, select game mode module, back module and so on in the program are independent, but the link through the logical relationship between them and form a can make the normal operation of the game program. In order to realize the double mode and man-machine game mode, and make the game as far as possible the simplification, the system needs to achieve the following goals: design a simple game of initial interface;the legal rules, can make the game fair, and you can call;support the man-machine

Java五子棋毕业设计论文

摘要 人工智能是一门正在迅速发展的新兴的,综合性很强的交叉科学。它与生物工程、空间技术一起被并列为二十一世界三大尖端技术。它的中心任务是研究如何使计算机去做那些过去只能靠人的智力才能做的工作。目前各发达国家都把人工智能作为重点项目,列入本国的高科技发展计划当中,投入巨大的人力和物力。 计算机人机对弈也是其中之一。作为人智能研究的一个重要分支,计算机博弈是检验人工水平的一个重要方面。它的研究为人工智能带来了很多重要的方法和理论,产生了广泛的社会影响和学术影响。 五子棋人机对弈是计算机博弈中的一种。研究其计算机算法,可以让我们看到人工智能的稚形,也有助于我们人脑的开发。五子棋是我国发明的,研究它可以让更多的外国人了解五子棋,这有助于我国优秀文化的推广。 关键词:人工智能,计算人机对弈,五子棋,算法

目录 摘要 (Ⅰ) 目录 (Ⅲ) 第一章绪论 (1) 第二章需求分析 (2) 2.1 业务需求 (2) 2.2 性能需求 (2) 2.3 系统平台需求 (2) 第三章五子棋相关基础 (4) 3.1 五子棋解释 (4) 3.2 五子棋的基本规则 (4) 3.3 五子棋的常用术语 (5) 第四章开发工具、环境及其技术 (7) 4.1 Java简介 (7) 4.2 Java编程环境 (9) 第五章程序设计思路与实现 (10) 5.1 程序设计思路 (10) 5.2 程序设计 (13) 结论 (33) 参考文献.................................................................................................................... 致谢............................................................................................................................ 附录............................................................................................................................

五子棋课程设计实验报告

西南交通大学 程序语言综合课程设计 五子棋游戏 课程《程序语言综合课程设计》 学院信息科学与技术学 专业软件工程 姓名 学号 20119050 日期 2016年月日

目录 第一章课程设计的目的和要求 (3) 1.1 课程设计的目的 (3) 1.2 课程设计的要求 (3) 1.3 课程设计的实验环境 (3) 第二章功能描述 (4) 第三章总体设计 (5) 3.1 功能模块设计 (5) 3.1.1 任务执行流程图 (5) 3.1.2 下棋函数流程图 (6) 3.2 数据结构设计 (7) 3.2.1 定义结构体 (7) 3.2.2 定义数组 (7) 3.2.3 全局变量 (7) 3.3 函数功能描述 (7) 第四章程序实现 (8) 4.1源码分析 (8) 4.2运行结果及界面介绍 (22) 第五章后记 (27)

第一章课程设计的目的和要求 1.1 课程设计的目的 1.加深对C语言数据类型,运算,语句结构及其程序设计的基本方法理解和掌握; 2.熟练掌握流程图的绘制、程序设计文档的书写; 3.通过编写一个完整的程序,一方面可以检查我们这学期的学习情况,为以后的学习打下坚实的基础; 4.熟悉C语言游戏编程,掌握五子棋游戏开发的基本原理,从而为以后的程序开发奠定基础。 1.2 课程设计的要求 1、编写程序代码,调试所写程序使其能够正确运行; 2、能进行基本的五子棋操作,有图形界面,能够用键盘操作; 3、能够实现悔棋、存档和读档等附加功能 1.3 课程设计的实验环境 该课程设计在设计与实验过程中需要在windows XP系统/windows 2000以上系统中进行,程序设计要求在visual C++6.0平台中进行,完成代码的编写、编译、调试、测试等工作。本游戏对计算机硬件和操作系统要求极低,所以在这里只是把自己的电脑硬件参数和系统参数列下: 硬件:Cpu:2.1GHZ,内存,2GB,硬盘:320GB,操作系统:windows xp 软件环境:安装VC++6.0

相关文档
相关文档 最新文档