当前位置:文档之家› 本科毕业设计---五子棋游戏的设计与实现

本科毕业设计---五子棋游戏的设计与实现

本科毕业设计---五子棋游戏的设计与实现
本科毕业设计---五子棋游戏的设计与实现

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

姓名王勇学号1109064029

所在院(系)数学与计算机科学学院

专业班级信息与计算科学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.

Shaanxi University of Technology, Hanzhong 723000,Shaanxi)

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 has adopted C of modular program design 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 mode, can be a computer by artificial intelligence and legal rules to select the optimal move later;can take back, fall in the players move later fault location, can press the back button to back.

Key words:gobang,Game design,The C Programming Language ,Double against,The man-machine against,Artificial intelligence(AI)

目录

1.绪论 (1)

1.1 引言 (1)

1.2 研究的背景及意义 (1)

1.2.1研究背景 (1)

1.2.2研究意义 (1)

1.3 基本目标及主要内容 (1)

2.系统开发环境的介绍及选择 (1)

2.1 C语言 (1)

2.2开发及运行环境 (2)

3.需求分析 (2)

3.1总体需求分析 (2)

3.2可行性分析 (2)

3.2.1技术可行性分析 (2)

3.2.2经济可行性分析 (2)

3.2.3操作可行性分析 (2)

3.3功能分析 (2)

4.概要设计 (3)

4.1五子棋特点与规则 (3)

4.2流程图 (3)

4.3双人模式 (5)

4.4人机模式 (5)

4.5智能算法 (5)

4.6悔棋流程 (6)

4.7输赢判断 (6)

5.详细设计 (6)

5.1画出游戏界面 (6)

5.2画出棋子 (8)

5.3设置棋局规则 (10)

5.3.1落子规则 (10)

5.3.2悔棋规则 (11)

5.3.3输赢规则 (11)

5.4实现双人对战 (12)

5.5悔棋功能 (12)

5.6判断输赢 (14)

5.7退出游戏 (16)

5.8实现人机对战 (16)

5.8.1先手设置界面 (16)

5.8.2电脑智能落子 (17)

5.8.3可以悔棋、退出 (21)

5.8.4显示输赢 (21)

5.9各模块之间的衔接 (21)

6.总结 (24)

致谢 (25)

参考文献 (26)

1.绪论

1.1 引言

随着社会经济和科学技术的发展,计算机已经深入到人们日常工作和生活的方方面面,各种各样的程序软件也逐渐进入大众的生活,比如在闲暇时间的娱乐生活也开始变得被网络电子游戏等所充斥。而五子棋则是最受人们欢迎的一款益智类棋局游戏,它的简单性,娱乐性,竞技性注定它是一款火爆的游戏。

1.2 研究的背景及意义

1.2.1研究背景

五子棋游戏软件可以分为两种:一种是网络五子棋游戏软件,另一种是单机五子棋游戏软件。我设计的是单机版的五子棋游戏软件,这款软件可以供人们在闲暇时间随时随地进行娱乐,并提高自己的棋艺,实用性较强。游戏的行棋顺序为:黑先、白后,黑棋第一子从天元开始相互依次落子,任一方先在棋盘上形成横向或竖向或斜向的连续的颜色相同的五个以上(含五个)棋子则该方为胜。该系统所实现的功能主要有三大功能:游戏选项、游戏设置、帮助。

1.2.2研究意义

五子棋是起源于中国古代的传统黑白棋种,当今社会在不同的地域对五子棋也有不同的称呼,其也是一种必须动用脑力的益智类游戏,所以五子棋可以增强思维能力,提高智力。其中蕴含古典哲学的高深学问“阴阳易理”哲理,有利于修身养性,它因为简单易学的特点,所以为人民群众所喜爱,但作为一项高水平的国际比赛,它也有深奥技巧。

1.3 基本目标及主要内容

本系统是根据传统五子棋游戏的功能编写,实现了双人对战和人机对战。主要需实现如下目标:(1)Visual C++ 6.0 环境的下的C语言编程

(2)五子棋棋盘的设计

(3)五子棋棋子的设计

(4)黑白双方轮流落子的实现

(5)棋局的悔棋功能

(6)棋局进行时的退出功能

(7)胜负的判定

(8)人工智能算法分析

2.系统开发环境的介绍及选择

2.1 C语言

C语言诞生于1972年的美国,在次之前还有A语言(其创造设计者是一位女性)和B语言。现在C语言成为了世界上使用最广泛的,最流行的高级程序设计语言之一。

随着经济与科技的发展,微型计算机日渐普及,这导致了C语言的版本的多样化,出现了一些不一致的语言特点。为了改变这种情况,美国国家标准研究所制定推广了一套ANSI标准,作为现行的C语言标准。常用的编译软件有Microsoft Visual C++。

C语言绘图能力强,具有很好的可移植性,并具备很强的数据处理能力,因此适于编写系统软件。它是数值计算的高级语言。由文献[1-4]可知。

2.2开发及运行环境

编程语言:C语言

操作系统:Windows 7

开发工具:Microsoft Visual C++ 6.0

3.需求分析

3.1总体需求分析

五子棋游戏是一款很符合现代人的休闲特点的益智类游戏,其是我国古代围棋的的衍生物,本系统主要分为两部分:双人人对战和人机对战。

双人对战模式实现的功能:选择双人对战,游戏界面,实现双人轮流落子,棋盘动态信息显示,判断输赢,重新开始游戏。

人机对战模式实现的功能:选择人机对战,设置先手,实现玩家与电脑轮流落子,棋盘动态信息显示,判断输赢,重新开始游戏。

3.2可行性分析

3.2.1技术可行性分析

计算机硬件和软件技术的飞速发展,为游戏系统的开发提供了设备条件。当前在网络上有许多的五子棋软件可供参考借鉴,而且我自己也熟练地掌握了C语言在Microsoft Visual C++ 6.0环境下的基本应用,因此本游戏的开发技术上是完全可行的。

3.2.2经济可行性分析

该游戏适用于所有人群,开发该游戏的费用主要包括开发阶段的费用以及今后的运行、维护费用。五子棋游戏简单易学,为人民群众喜闻乐见。该游戏功能强大,界面简单,用户在使用方面不存在任何障碍。其开发具有很强的经济性。

3.2.3操作可行性分析

本游戏适用于Windows 操作系统之上, 对于该游戏的推广使用提供了很好的平台。该游戏使用C语言编写,具有很强的移植性,使其可以运行很方便。在操作上主要凭借使用Windows键盘操作,方便简单。使用前只要对用户进行简单的说明即可。

3.3功能分析

该款游戏主要是由以下五个模块组成:

图3.1 游戏功能图

4.概要设计

4.1五子棋特点与规则

五子棋是两方之间进行的竞技活动,专用棋盘为15*15,五连子的方向为横、竖、斜;任一方在棋盘上形成横向、竖向、斜向的连续的相同颜色的五个(含五个以上)时即为该方胜利;在棋盘上以对局双方均不可能形成五连为和棋。黑白双方依次落子,由黑方先下,由于先下一方在局面上占优,所以五子棋规则分为禁手和无禁手两种。

禁手规则:禁手是针对先行的黑棋而言,以限制黑棋的先行优势为目的。对局中如果黑棋违反禁手规则将被判负。以中国五子棋竞赛规则为例,有三三禁手(黑棋一子落下时同时形成两个或两个以上的活三,此子必须为两个活三共同的构成子)、四四禁手(黑棋一子落下同时形成两个以上的冲四或活四)、长连禁手(黑棋一子落下形成一个或一个以上的长连)。无禁手指不对黑棋的先行优势做任何限制。

本系统采用的是无禁手规则。

4.2流程图

游戏开始后,运行过程如下图4.1所示:

图4.1 游戏运行流程图

当系统运行后,首先看到的是一个选择游戏模式(双人,人机)的界面,根据要求选择后,有两种情况,第一种是双人模式,根据游戏的设定先黑方落子,然后白方落子,而系统此时需要更新棋盘的状态和判断是否产生输赢,若是产生则游戏结束,若没有产生输赢,则判断是否棋盘已经落满棋子,若已经落满棋子,则判定为和棋,否则另一方落子,如此循环,直到产生输赢或和棋;另一种是人机模式,选择该模式后,会看到设置界面,可以选择谁是先手,有两种选择电脑先手、玩家先手,若电脑先手则根据设定,电脑执黑子先下,之后白方落子,此时因为选择了电脑先手,所以电脑落子时优先进攻,只有在进攻的权值小于防守的权值时优先防守,(此处涉及到电脑的人工智能,此部分的设计概要详见本章节的电脑智能落子部分),每当棋盘落子后电脑立即更新棋盘的

具体信息并判断是否已经产生输赢若是产生则游戏结束,若没有产生输赢,则判断是否棋盘已经落满棋子,若已经落满棋子,则判定为和棋,否则另一方落子,如此循环,直到产生输赢或和棋,玩家先手,则玩家执黑子先落子,然后电脑落白子,此时电脑落子优先防守,其他部分与电脑先手一样。

4.3双人模式

此模式较为简单是后面实现人机模式的铺垫。首先用循环语句和制表符画出整个棋盘,然后利用绘图函画出棋子,然后制定自己的落子规则(包含输赢规则),并用循环语句实现黑白子的轮流下子,如此就实现了双人对战的目的。 4.4人机模式

本系统中此功能的实现是在双人模式已经实现的情况下实现,只是把双人模式中的其中一个人换成电脑操作(电脑落子算法参照4.5智能算法),在每次落子之后,调用判断输赢函数判断是否产生输赢或和棋,如果产生则游戏结束,如果没有产生则继续游戏,直到产生输赢或和棋,或退出游戏为止。 4.5智能算法

电脑博弈模仿人类下棋,传统算法使用的是博弈树。两人游戏,甲有很多位置选择落子,乙也有很多相对应的下法,如果所有的方式列表就构成一棵树,就是搜索树,也被称为博弈树。树的根节点先手的第一步位置,下面的走棋方法构成树的子节点,直到游戏结束。此处的五子棋棋盘是15×15的,搜索空间是一个巨大的数字。博弈算法的任务是在这些呈几何级数上升的子节点中选出最优的节点,从而赢得比赛。整个算法分为搜索和估值两部分,估值是评估所有可能的落子位置的评价,选择评价最高的位置为最终落子位置。

本系统的估值函数为单点估值函数。单点估值函数的基本思想是评估当前的静态情况下,遍历棋盘,对棋盘的每个非空的位置的四个方向进行分析评估(横向、竖向、两条对角线),统计每一个棋型的数量(连五型、冲四型、活四型、活三型、死三活二型),不同的棋型根据实际情况中玩游戏时的经验确定一个不同的权重值,最后还有位置分数的加权(不仅要考虑空点对自己的价值,也要考虑其对对方的价值),如此就获得了棋盘上的空点的估值。单点估值函数只能估计一个空点的价值,对当前的棋局,把所有的空点对己方的有利程度总和和不利程度总和相关就可得出全局价值。由文献[5. 6. 14]可知。

本系统中设定了以下几种棋型和相应的权值:

表4.1 防守棋型及其相应权值表

棋型 连五型 冲四型 活四型 活三型 死三活二型

权值 200000 1100 6000 240 20 表4.2 进攻棋型及其相应权值表

棋型 连五型 冲四型 活四型 活三型 死三活二型

权值

2000000

2000

24000

850

125

根据不同棋型的权值可以计算出棋盘的各点的价值之和,用V ij 表示点(i ,j )的总价值,用A ij

表示点(i ,j )的进攻价值,用D ij 表示点(i ,j )的防守价值,用d t 表示防守优先级数,a t 表示进攻优先级数,其中防守和进攻优先级数是电脑在比较点(i ,j )的进攻总价值和防守总价值后赋予的,给总价值大的类型设定优先级数为2,而价值小的则为1。

则点(i ,j )的进攻总价值为该点的所有进攻棋型的和,计算方法为:∑ij A ; 该点的防守总价值为该点的所有防守棋型的和,计算方法为:∑ij D 。 则该点的总价值为:∑∑?+?=t d ij D t a ij A ij V 。

用此方法就可遍历棋盘上的所有的空点的总价值,然后比较所有总价值的大小,总价值最大的点即为对自己最有利的点。

4.6悔棋流程

悔棋是棋局类游戏的必须的功能,在游戏时,如果有人悔棋时,立即调用悔棋功能函数,本系统中由于棋盘上的所有的交点都有一个二维数组的一组数据与之相对应,而且每次落子后会有一个二维数组记录相应的信息(步数,棋子颜色),因此此功能的实现依靠的是C中的循环函数。

4.7输赢判断

本模块功能的实现依靠的是单点估值函数的思想,即每次落子之后,遍历以该点为坐标原点以5为半径的棋盘的交点,分析原点的四个方向(横向、竖向、两条对角线),判断是否有连五型棋型,若有则产生输赢,若没有则遍历整个棋盘,查看是否棋盘已经下满,若已下满则判定为和棋,否则继续游戏。

5.详细设计

5.1画出游戏界面

本模块是整个游戏系统的平台性模块,之后所有的功能都将依附该模块来体现,主要需实现棋盘的绘制与游戏说明。本游戏系统选择的是15*15的棋盘,利用制表符字符串打印输出棋盘,并且特别标出天元位置,与四方星位。游戏的说明主要有棋局动态信息显示,如何移动光标,如何实现落子,如何悔棋以及退出。

利用switch()语句,当光标坐标(x,y)中x=0,y=0则画出棋盘的左上角“┏”,y=14则画出棋盘的右上角“┓”,0

棋盘上的交点称为位点(包括交叉点,天元,四方星位,边界交点)。

具体实现如以下程序(仅部分主要代码):

void printnode(NODE chessboard[][15], int x, int y) // 打印棋盘上的一个点

{ textcolor(CHESSBOARD);

if(chessboard[x][y].step==0)

{ if (x==cursor.x && y==cursor.y)

textcolor(CURSOR); // 如果光标在这个点,改成光标颜色

switch(x)

{ case 0:

if(y==0) printf("┏"); // 左上角

else if(y==14) printf("┓"); // 右上角

else printf("┯"); // 上边线

break;

case 3: if(y==0) printf("┠"); // 左边线

else if(y==3 || y==11) printf("+"); // 星位

else if(y==14) printf("┨"); // 右边线

else printf("┼"); // 交叉点

break;

case 7: if(y==0) printf("┠"); // 左边线

else if(y==7) printf("+"); // 星位

else if(y==14) printf("┨"); // 右边线

陕西理工学院毕业设计

else printf("┼"); // 交叉点

break;

case 11: if(y==0) printf("┠"); // 左边线

else if(y==3 || y==11) printf("+"); // 星位

else if(y==14) printf("┨"); // 右边线

else printf("┼"); // 交叉点

break;

case 14: if(y==0) printf("┗"); // 左下角

else if(y==14) printf("┛"); // 右下角

else printf("┷"); // 下边线

break;

default:

if(y==0) printf("┠"); // 左边线

else if(y==14) printf("┨"); // 右边线

else printf("┼"); // 交叉点

} }

}

void printchessboard(NODE chessboard[][15])

{// 输出整个棋盘

int i,j;

char letter[]={"ABCDEFGHIJKLMNO\n"};

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

{ // 行

textcolor(TEXTS); // 改为文本颜色

printf("%2d",15-i); // 打印行坐标

for(j=0;j<15;j++) // 列

printnode(chessboard,i,j); // 打印棋盘的每一块

textcolor(TEXTS);

printf("\n"); }

textcolor(TEXTS); //改为文本颜色

printf(" %s",letter); //打印列坐标

printf(" 移动:方向键下棋:ENTER\n 悔棋:U 退出:F12\n");

}

图5.1 人机对战玩家先手初始界面

图5.2 人机对战电脑先手初始界面

双人对战模式游戏的初始界面与人机对战电脑先手初始界面一样。

5.2画出棋子

本模块是在画出棋盘的基础下实现的,要求依次轮流画出黑白两种颜色的棋子,且位置必须在棋盘的位点之上,并且要求必须先画黑棋,位置为棋盘的天元位。

根据棋盘上光标所在位置来下棋,如果当前光标所在位置上有棋子,则不能在此处落子,则需

按下键盘上的方向键来移动光标到没有棋子,且有利于局势的位置按下Enter(回车键)落子[7]。

具体实现如以下程序(仅部分主要代码):

else if(chessboard[x][y].color==0)

{ // 如果是白棋

if (x==cursor.x && y==cursor.y)

textcolor(SELECTEDWHITE); // 被选中的白棋

else textcolor(WHITECHESS); // 未被选中的黑棋

printf("●");

} // 打印棋子

else

{ if (x==cursor.x && y==cursor.y)

textcolor(SELECTEDBLACK); // 被选中的黑棋

else textcolor(BLACKCHESS); // 未被选中的黑棋

printf("●"); } // 打印棋子

光标的移动(实现在棋盘上任意位置落子):

bool getmove(NODE chessboard[][15])

{// 获取光标移动,并响应

// 当按下悔棋、下子、退出热键时,返回true

char c; for(;;)

{ c=getch();

if(c==-32)

switch(getch())

{

case 72: // 上

cursor.x--;

if(cursor.x<0) cursor.x=0;

renew(chessboard,cursor.x+1,cursor.y);

renew(chessboard,cursor.x,cursor.y); break;

case 80: // 下

cursor.x++;

if(cursor.x>14) cursor.x=14;

renew(chessboard,cursor.x-1,cursor.y);

renew(chessboard,cursor.x,cursor.y); break;

case 75: // 左

cursor.y--;

if(cursor.y<0) cursor.y=0;

renew(chessboard,cursor.x,cursor.y+1);

renew(chessboard,cursor.x,cursor.y); break;

case 77: // 右

cursor.y++;

if(cursor.y>14) cursor.y=14;

renew(chessboard,cursor.x,cursor.y-1);

renew(chessboard,cursor.x,cursor.y); break;

case 134: // 退出

quit=true;

return true; }

else if(c==13 && chessboard[cursor.x][cursor.y].step==0) return true; // 下子

else if(c=='U' || c=='u')

{ // 悔棋

regret=true; return true;

}

}

}

5.3设置棋局规则

本模块实现的是游戏的规则,包括落子规则,悔棋规则,输赢规则。

5.3.1落子规则

本系统的实现整体上采用的是无禁手五子棋游戏规则。落子规则包括落子位置与落子顺序。落子位置其实是对第一颗棋子的限定,即第一颗棋子必须落在棋盘的天元(也就是棋盘的最中间),而后只规定了必须落在棋盘的位点之上,不能落在空白处,而落子顺序其实是从第一次下子开始的,且第一颗棋子必须是黑子,之后黑白棋就开始轮流落子,直到产生输赢为止。

本系统中涉及到的五子棋的基本棋型有防御棋型和进攻棋型两类,具体有:连五型,活四型,冲四型,活三型,死三活二型五种,具体如下:

图5.3 连五型(黑棋)

图5.4 活四型(黑棋)

图5.5 冲四型(黑棋)

图5.6 活三型(黑棋)

图5.7 死三活二型(黑棋)

5.3.2悔棋规则

悔棋规则应用于游戏的整个过程,在游戏产生输赢之前的任意时候,只要玩家按下悔棋热键,就可进行悔棋,且本系统中不限制悔棋步数。具体实现见5.5悔棋功能。

5.3.3输赢规则

本系统的输赢规则是基于无禁手五子棋的输赢规则,即对黑子没有任何限制,只要形成连五型棋子就判定为胜利,当棋盘上无法落子时仍然没有产生输赢,则判定为平局。具体实现见5.6判断输赢。

五子棋游戏设计方案

目录 一、摘要: (1) 二、关键字: (1) 三、程序主流程图 (2) 四、需求分析: (3) 五、关键部分设计算法及实现: (4) 六、文件清单: (9) 七、使用说明: (9) 八、参考书目: (10) 九、附录:(源代码清单) (11) 五子棋程序 一、摘要:

五子棋游戏是一历史悠久,对抗性强,技巧性高的棋类游戏。本文用VC 设计了五子棋游戏。并就以下问题进行了探讨: (1)棋子棋盘在程序中的表示; (2)如何通过鼠标点击落子; (3)如何判断输赢,在棋盘的—,|,/,\,四个方向进行搜索,超过5子以上连成一线则认为赢了。 (4)如何实现梅棋功能。 (5)如何保存并读入棋谱; (6)如何让电脑拥有人类的智慧; (7)编写软件代码应遵守的编写规范,成对编码原则和代码的注释; (8)其它未详尽处,请参看源代码。 二、关键字: 棋盘数组 搜索算法 人工智能 活 半活 双活三

三、程序主要类结构图

CfiveStoneApp

四、需求分析: 五子棋历史源远流长,发展形势喜人,以下在网络上一篇有关五子棋历史发展的报道: 五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“連珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。?五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。? 五子棋起源于古代中国,发展于日本,风靡于欧洲。对于它与围棋的关系有两种说法,一说早于围棋,早在“尧造围棋”之前,民间就已有五子棋游戏;一说源于围棋,是围棋发展的一个分支。在中国的文化里,倍受人们的青睐。古代的五子棋的棋具与围棋相同,纵横各十七道。五子棋大约随围棋一起在我国南北朝时先后传入朝鲜、日本等地。据日本史料文献介绍,中国古代的五子棋是经由高丽(朝鲜),于1688年至1704年的日本元禄时代传到日本的。到日本明治32年(公元1899年),经过公开征名,“连珠”这一名称才被正式确定下来,取意于“日月如合壁,五星如连珠”。从此,连珠活动经过了不断的改良,主要是规则的变化(即对执黑棋一方的限制),例如,1899年规定,禁止黑白双方走“双三”;1903年规定,只禁止黑方走“双三”;1912年规定,黑方被迫走“双三”亦算输;1916年规定,黑方不许走“长连”;1918年规定,黑方不许走“四、三、三”;1931年规定,黑方不许走“双四”,并规定将19×19的围棋盘改为15×15的连珠专用棋盘。本世纪初五子棋传入欧洲并迅速风靡全欧。通过一系列的变化,使五子棋这一简单的游戏复杂化、规范化,而最终成为今天的职业连珠五子棋,同时也成为一种国际比赛棋。? 目前,职业连珠已迅速在国际上发展起来。1988年8月8日,国际连珠联盟(RIF)由日本、俄罗斯、瑞典、亚美尼亚、阿塞拜疆、爱沙尼亚、法国、拉脱维亚、白俄罗斯等9个成员国在瑞典宣告创立,我国于1996年正式加入国际连珠联盟,现在全世界已有47个国家和地区成为国际连珠联盟的正式会员。职业连珠的世界锦标赛从1989年起每两年举办一次,现已举办了六届,第三、五、六届的冠军是爱沙尼亚人,其余三届的冠军都是日本人。我国最好成绩是团体第七,个人张进宇第9名。就水平而言,目前以俄罗斯、日本、瑞典最强,其中日本研究也最深,我国只处于中等水平。日本拥有自己的五子棋职业棋手,并且对连珠技术的研究也相当普遍和全面。日本每年举行连珠名人战。? 五子棋的根在中国,有着广泛的群众基础。但与世界先进的五子棋技术相比,我们的棋艺水平还很低,所以我们要推广五子棋,宣传五子棋,争取在较短的时间内赶上和超过世界五子棋坛的先进水平。1990年,由那威和十几名五子棋爱好者,共同发起并成立了中国第一个现代职业五子棋的民间组织----京都五子棋队,现已发展成为拥有百余名选手的北京京都五子棋队。日本连珠联盟曾多次派代表团访问中国,与中国广大爱好者进行交流和友谊比赛,瑞典连珠联盟也于1995年派代表团访问了中国,京都五子棋队曾两次选派选手代表中国参加世界杯比赛,取得此成绩反映了我国五子棋水平在世界上所处的位置,同时也显示了我国在此项运动中的发展潜力。1997年5月北京成功地举办了第一届“康柏杯”

五子棋报告-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) {

基于JAVA的五子棋游戏系统设计与实现

基于JAVA的五子棋游戏系统设计与实 现

基于JAVA的五子棋游戏系统设计与实现专业电子信息工程 学生董永杰 指导教师曾玉

摘要 当前,随着计算机网络的的发展,以计算机技术和网络技术为核心的现代网络技术已经在现实生活和生产中得到了广泛的使用,已经成为多数人群的休闲方式,也为多数人所喜好。当然,为了满足没有网络同样能娱乐的要求,许多小游戏做成了单机和网络的双功能。 本软件使用JAVA语户端之间的连接,利用多线程技术言实现,经过对图形界面,绘图,布局管理器等去构造出游戏的单机功能,在此基础上,利用SCOKET的知识,建立起服务器与客来处理服务器端与客户端之间的数据传输,通信问题,使得客户端和服务器端之间能够同步的进行处理。 经过对软件的编写,更深入的理解了面向对象的概念,也体会到利用面向对象语言处理一些问题的优势。同时也加深了对多线程,流套接字等高级技术的理解。 关键词:多线程;流套接字;数据传输;同步。

ABSTRACT At present, With the rapid development of computer network. Taking computer technology and the network technology as the core, modern network technology is already used in the real life and the production and already became the leisure mode of the most people. And most people like them. Of course, it’s a pity that there still have some clients lacking of network because of various causes. In order to satisfy the above clients’ requirements. A large number of games ,usually nam ed as “small games” by players, are designed for involving two kinds of different function. The former game is often played by these players whose computers never connect with the network. It’s called for stand-alone version games. Just as its name implies, the later is named as online version games This software implemented with JAVA language, and according to the understanding of SCOKET ,GUI and paint image ichnology. Established in these foundation , the server co ects with the multi- client, and transmission the information between many clients using the multi-thread proceeding technology. it is very convenient for both client and server to do the synchronous processing. Through to the software compilation, deepen understanding and grasp to the technology above understanding and holding.

五子棋(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/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,双人五子棋要求能够进入欢迎界面,二人对弈,当有五颗同色棋子相连时,判断出输赢等一系列游戏流程。

基于JAVA的五子棋游戏系统设计与实现

基于JA V A的五子棋游戏系统设计与实现专业电子信息工程 学生董永杰 指导教师曾玉

摘要 目前,随着计算机网络的的发展,以计算机技术和网络技术为核心的现代网络技术已经在现实生活和生产中得到了广泛的使用,已经成为多数人群的休闲方式,也为多数人所喜好。当然,为了满足没有网络同样能娱乐的要求,许多小游戏做成了单机和网络的双功能。 本软件使用JAVA语户端之间的连接,利用多线程技术言实现,通过对图形界面,绘图,布局管理器等去构造出游戏的单机功能,在此基础上,利用SCOKET 的知识,建立起服务器与客来处理服务器端与客户端之间的数据传输,通信问题,使得客户端和服务器端之间能够同步的进行处理。 通过对软件的编写,更深入的理解了面向对象的概念,也体会到利用面向对象语言处理一些问题的优势。同时也加深了对多线程,流套接字等高级技术的理解。 关键词:多线程;流套接字;数据传输;同步。

ABSTRACT ABSTRACT At present, With the rapid development of computer network. Taking computer technology and the network technology as the core, modern network technology is already used in the real life and the production and already became the leisure mode of the most peo ple. And most people like them. Of course, it’s a pity that there still have some clients lacking of network because of various causes. In order to satisfy the above clients’ requirements. A large number of games ,usually named as “small games” by players, are designed for involving two kinds of different function. The former game is often played by these players whose computers never connect with the network. It’s called for stand-alone version games. Just as its name implies, the later is named as online version games This software implemented with JAVA language, and according to the understanding of SCOKET ,GUI and paint image ichnology. Established in these foundation , the server co ects with the multi- client, and transmission the information between many clients using the multi-thread proceeding technology. it is very convenient for both client and server to do the synchronous processing. Through to the software compilation, deepen understanding and grasp to the technology above understanding and holding. Key Words: multiple thread, Socket, transmission-data, synchronism.

软件工程课程设计五子棋游戏

计算机工程系课程设计报告 课程名称:软件工程 课程设计题目:五子棋游戏 班级 2013级计科(4)班 姓名许婷娜 学号 20130905428 2015年12月27日

目录 1. 引言 (1) 1.1系统的开发背景(可行性分析) (1) 1.2 系统简介 (2) 1.2.1系统介绍 (2) 1.2.2开发本系统所做的工作 (2) 2. 需求分析 (3) 2.1 需求的描述与分析 (3) 2.2 需求定义 (3) 2.2.1 功能需求 (3) 2.2.2 性能需求 (4) 3. 系统设计 (4) 3.1总体设计 (4) 3.1.1设计思想 (4) 3.1.2五子棋游戏的功能的结构图 (5) 3.2程序设计分析 (5) 4. 五子棋游戏的详细设计 (6) 4.1五子棋游戏的主窗口界面 (6) 4.2五子棋游戏的核心模块的详细设计 (10) 4.2.1五子棋游戏程序核心代码 (10) 4.2.2五子棋游戏程序主面板与鼠标事件 (13) 4.2.3五子棋游戏程序流程图 (17) 4.3五子棋游戏的游戏功能模块的详细设计 (18) 4.3.1五子棋游戏的开局功能模块 (18) 4.3.2五子棋游戏的棋盘功能模块 (18) 4.3.3五子棋游戏的模式功能模块 (19) 4.3.4五子棋游戏的退出功能模块 (19) 4.4五子棋游戏的外观功能模块的详细设计 (19) 4.5五子棋游戏的版本功能模块的详细设计 (20)

5. 五子棋游戏的测试 (20) 5.1系统测试的类型 (20) 5.2测试举例 (21) 5.2.1测试用户的对弈结果 (21) 5.2.2测试用户切换棋盘类型功能 (22) 5.2.3测试用户切换模式类型功能 (23) 5.2.4测试用户切换外观类型功能 (24) 5.2.5测试版本功能 (26) 小结 (27) 致谢 (28) 参考文献 (29)

五子棋游戏总体设计与实现

五子棋游戏总体设 计与实现

4.系统总体设计与实现 4.1 总体设计分析 总体设计是软件开发过程中的另一个重要阶段,在这一阶段中将根据需求分析中提出的逻辑模型,科学合理地进行物理模型的设计。这个阶段的主要目标是将反映用户信息需求的逻辑方案转换成物理方案,并为下一阶段提供必要的技术资料。 4.1.1 总体设计原则 (1)整体性:软件是作为统一整体而存在的。因此,在总体设计中要从整个软件的角度进行考虑。 (2)灵活性:为保持软件长久的生命力,要求该手机游戏软件具有很强的环境适应性。为此,游戏软件应具有较好的开放性和结构的可变性。 (3)可靠性:可靠性是指软件抵御外界干扰的能力及受外界干扰时的恢复能力。 (4)经济性:经济性是指在满足游戏软件需求的前提下,尽可能地减小游戏软件的开销。 4.1.2 软件模块总体设计 软件中各模块之间的关系一般利用层次图来表示。它是一种一系列多层次的用树形结构的矩形框描绘数据的层次结构框图。

一个单独的矩形框作为树形结构的顶层,各个数据的子集由下面的各层矩形框代表,最底层的各个矩形框代表组成这个数据的实际数据元素(不能再分割的元素),它代表完整的数据结构。这模式非常适合于需求分析阶段的需要,层次方框图对数据结构描绘随着结构精细化也越来越详细。重复细化沿着图中每条路径,从对顶层信息的分类开始,直到确定了数据结构的全部细节为止。 图4-1 游戏功能结构 本研究中将游戏软件分为三大模块,如图4-1所示,包括:游戏选项、游戏设置和帮助。按照在调研中搜集的资料对每个模块的功能进行编排制作。依据上述功能的分析,本研究中,将游

戏软件在三大模块的基础上又对每一大模块又分为几个子模块:游戏选项包括六个模块:开始游戏、重新游戏、悔棋、认输、背景音乐和退出游戏。 游戏设置包括三个模块:先后手设置、棋盘底纹颜色设置和棋盘大小设置。 帮助包括两个模块:游戏帮助和关于。 4.2 游戏设计 4.2.1 游戏前的准备 本游戏在开发之前需要做一些前期准备工作,特别是对于精通五子棋游戏的Java 游戏开发者来说。一般情况下,一款运用起来比较熟练地J2ME 开发工具是必不可少的。本游戏使用的是J2ME的简化开发工具Sun Java (TM) Wireless Toolkit 2.5.2 for CLDC,她需先将Java虚拟机安装调试好之后才能使用。WTK 2.5.2 不带有文本编辑功能,因此需要另寻搭配使用。本游戏采用Ultra Edit 进行编辑。本游戏需要几张后缀名为.png格式的卡通图,除了一张用作五子棋游戏的 Logo 外,其余的都将在游戏中使用。4.2.2 游戏界面和事件驱动设计 游戏的界面设计采取传统游戏界面风格,如图4-2所示。游戏设计中采用传统界面游戏风格,首先启动游戏,然后进入游戏开始界面,界面中放置“设置”、“开局”、“帮助”、“关

课程设计报告--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

五子棋游戏设计报告

五子棋游戏 项目设计报告 报告人:_ 学号: z

日期:2016年5月25日 摘要 (3) 一、....................................................... 系统功能简述. (4) (一).......................................... 系统功能4 (二).......................................... 开发环境4 (三)............................................... 实用价值 4. 二、................................................ 界面设计 5. (一)............................................... 界面操作 5. (二)...................................... 界面设计方案6 三、.............................................. 收获与体会 13 四、................................................ 参考文献 14

摘要 随着经济的发展,社会竞争的激烈,现在社会进入了竞争的时代。上班族为了完成公司业务,每天超负荷的工作;学生为了不落后他人每天早起晚睡不断地学习,压力巨大。所以为了缓解大家的压力,使大家在工作、学习之余娱乐一下,活跃大脑,提高工作、学习效率,因此益智性游戏越来越受人们的关注,五子棋作为益智类游戏之一,倍受人们的喜爱,所以对于五子棋的开发也有了很多关注。 本文主要讲的是利用VC++6.0 软件开发一个界面简洁、直观、实用性比较高的AI 功能的五子棋游戏,游戏程序实现人机对弈,在对弈过程中当用户和电脑比赛时电脑利用搜索算法计算出落子的最佳位置,是先人机对弈,而且程序能够完成具有重新开始游戏、判断胜负、判断落子等功能。 关键词:人工智能,自动处理,人机博弈,五子棋

五子棋游戏实验报告

五子棋游戏实验报告 课程名称计算机程序设计(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我就对它不抱有一定的热情,可能是因为要用到计算机以及编程问题,当时一想到有代码,就会无比的苦恼,但是为了让这门课顺利通过,我还是怀着一颗必须要学的心情。起初,我对待这门新课程和其他课

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) 参考文献.................................................................................................................... 致谢............................................................................................................................ 附录............................................................................................................................

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

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

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

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

课程设计-c语言设计-五子棋游戏 0528

课程设计-c语言设计-五子棋游戏

河南城建学院 测绘与城市空间信息系 测绘程序设计 题目: 五子棋游戏 班级: 0614112 人数: 3人 成员: 学号: 指导老师: 时间:2012年6月

目录 1课程设计报告-------------------2 1.1问题描述----------------------2 1.2 任务分工- - - - - - - - - - - - - - - 2 1.3需求分析---------------------------3 1.4概要设计-----------------------3 1.5详细设计-----------------------4 1.6调试分析---------------------5 2源程序---------------------6 3程序的说明文件-------------------12 4课设总结-----------------------13

1.课程设计报告 1.1问题描述 连珠(五子棋)是有两个人在一盘棋上进行对抗的竞技运动。在对局开始时,先由用户选择哪方先开局,先开局一方将一枚棋子落在一点上,然后由另一方在对方棋周围的交叉点上落子,如此轮流落子,直到某一方首先在棋盘的直线、横线或斜线上形成连续的五子则该方就算获胜。此时,算法结束。当有任何一方想退出时,都可在算法中实现。 1.2 五子棋的背景 传统五子棋的棋具与围棋相同,棋子分为黑白两色,棋盘为15×15,棋子放置于棋盘线交叉点上。两人对局,各执一色,轮流下一子,先将横、竖或斜线的5个或5个以上同色棋子连成不间断的一排者为胜。 因为传统五子棋在落子后不能移动或拿掉,所以也可以用纸和笔来进行游戏。 1.2 任务分工 组长:赵哲武 负责小组程序的输入和创新部分,分配任务,使工作衔接有序,以

java课程设计人机对弈五子棋

《Java程序设计》课程设计报告 学院:理学院 班级: 姓名: 学号: 指导教师: 课设时间: 2015-06-23 至2015-06-25 二O一五年六月二十五日

课程设计(论文)任务书 理学院信息与计算科学专业2012-2班 一、课程设计(论文)题目:人机对弈五子棋游戏 二、课程设计(论文)工作: 自2015 年6 月23 日起至2015 年6 月25日止 三、课程设计(论文) 地点: 5-205 四、课程设计(论文)内容要求: 1.本课程设计的目的 (1)使学生掌握软件开发的基本工作流程; (2)巩固JAVA程序设计课程所学的内容; (3)培养学生的计算机思维能力以及合作的精神; (4)培养学生分析、解决问题的能力; (5)提高学生的科技论文写作能力。 2.课程设计的任务及要求 1)基本要求: (1)研究课程设计任务,并进行系统需求分析; (2)对系统进行总体设计,分解系统功能模块,进行任务分配,以实现分工合作;(3)实现各功能模块代码; (4)系统组装,测试、完善系统。 2)创新要求: 在基本要求达到后,可进行创新设计,如改进界面、增加功能或进行代码优化。3)课程设计论文编写要求

(1)要按照书稿的规格打印誊写课程设计论文 (2)论文包括封面、设计任务书(含评语)、摘要、目录、设计内容、设计小结(3)论文装订按学校的统一要求完成 4)参考文献: (1)丁振凡,《JAVA语言程序设计》,清华大学出版社 (2)丁振凡,《JAVA语言程序设计实验指导与习题解答》,清华大学出版社 (3)https://www.doczj.com/doc/9e14711106.html,/ 5)课程设计进度安排 内容天数地点 系统总体设计 1 实验室 软件设计及调试 1 实验室 答辩及撰写报告 1 实验室、图书馆 学生签名: 2015年6月25日 课程设计(论文)评审意见 (1)课程设计过程(20分):优()、良()、中()、一般()、差(); (2)是否完成调试,系统运行效果(30分):优()、良()、中()、一般()、差(); (3)回答问题(20分):优()、良()、中()、一般()、差();(4)课程设计报告(30分):优()、良()、中()、一般()、差(); (5)格式规范性及考勤是否降等级:是()、否() 评阅人:职称:教授 2015年 6月25日

相关主题
文本预览
相关文档 最新文档