五子棋需求分析报告08093337

时间:2024.5.9

 中国矿业大学

  

  应用系统开发实践

设计题目:      基于VC的五子棋游戏软件的设计与开发  

指导教师:                                         

学    生:                                         

专    业:           计算机科学与技术09-1班            

  20##年 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/

3 五子棋算法分析

3.1 五子棋的发展

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

五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。

五子棋起源于古代中国,发展于日本,风靡于欧洲。对于它与围棋的关系有两种说法,一说早于围棋,早在“尧造围棋”之前,民间就已有五子棋游戏;一说源于围棋,是围棋发展的一个分支。在中国的文化里,倍受人们的青睐。古代的五子棋的棋具与围棋相同,纵横各十七道。五子棋大约随围棋一起在我国南北朝时先后传入朝鲜、日本等地。据日本史料文献介绍,中国古代的五子棋是经由高丽(朝鲜),于1688年至1704年的日本元禄时代传到日本的。到日本明治32年(公元1899年),经过公开征名,“连珠”这一名称才被正式确定下来,取意于“日月如合壁,五星如连珠”。从此,连珠活动经过了不断的改良,主要是规则的变化(即对执黑棋一方的限制),例如,1899年规定,禁止黑白双方走“双三”;1903年规定,只禁止黑方走“双三”;1912年规定,黑方被迫走“双三”亦算输;1916年规定,黑方不许走“长连”;1918年规定,黑方不许走“四、三、三”;1931年规定,黑方不许走“双四”,并规定将19×19的围棋盘改为15×15的连珠专用棋盘。本世纪初五子棋传入欧洲并迅速风靡全欧。通过一系列的变化,使五子棋这一简单的游戏复杂化、规范化,而最终成为今天的职业连珠五子棋,同时也成为一种国际比赛棋。

简单介绍一下文章中会遇到的一些关于五子棋最基本的术语

(1)先手:进攻的着法,也指对弈双方执黑棋先在棋盘上落子的一方;

(2)四三:指同时具备两个先手,其中一个四,另一个是活三;

(3)活三(包括连三和跳三):①连三:紧紧相连的同色三子②跳三:中间间隔一子的活三 ;

(4)四四:一子落下同时形成两个“四”的棋形 ;

(5)三三:一子落下形成了两个活三的棋形;

(6)长连:相同颜色的连续六子或六子以上; 

(7)禁手:对局中禁止使用的战术或被判为负的行棋手段;

(8)胜局:对局的一方获胜,称为“胜局”。包括:①一方首先在棋盘的直线或横线或斜线上形成连续的五子或五子以上(特指白方)。②对方表示认输。③对方超过比赛规定的时限。④当黑方禁手形成未能同时形成五连,白方立即指出禁手后,判定为白方胜局。⑤对方迟到超过容许时间。⑥对方严重犯规而被判负; 

(9)和棋:不分胜负的对局或双方同意平局。

3.2 五子棋的规则

五子棋游戏的一个特点是先行的一方优势很大,因此在职业比赛中对黑方做了种种限制,以利公平竞争。五子棋的比赛规则如下:

(1)黑棋先手、白棋后手,从天元开始相互顺序落子;

(2)最先在棋盘横向、纵向或斜向形成连续的同色五个棋子的一方为胜;

(3)黑棋禁手判负、白棋无禁手。黑棋禁手有“三、三”、“四、四”和“长连”,包括“四、三、三”和“四、四、三”。黑棋只能以“四、三”取胜;

(4)如分不出胜负,则到为平局;

(5)五连与禁手同时形成,判胜;

(6)黑方禁手形成时,白方应立即指出。若白方未发现或发现后不立即指出,反而继续落子,则禁手失效,不再判黑方负。

五子棋是黑白双方或两个人之间的竞技活动,由于对黑白双方规则不同,黑棋必须先行。一般采用猜先的方法来决定谁执黑先行,即双方各抓一种颜色的几枚棋子,大数减小数,单数双方交换,偶数不换;黑方在落下关键的第五子即形成五连的同时,如又形成禁手,此时因黑方已经成五,而“五”在五子棋中是至高无上的,故禁手失效,黑方胜;所谓黑方形成禁手,是指黑方落下一子同时形成两个或两个以上的活三、冲四及长连等。此时白方应立即指出,自然而胜。

专业连珠五子棋虽然对黑棋采取了种种限制,但是黑棋先行的优势依然很大。因此,在高段位的专业比赛中,又出现了三种特殊的规定:

(1)“指定打法”:指比赛双方按照约定好的开局进行对弈。例如“斜月局”、“长星局”等。

(2)“三手可交换”:指黑棋下第二手棋〔盘面第三手棋〕之后,白方如感觉黑方棋形不利于己方,可提出交换,即执白棋一方变为执黑棋一方〔此方法不适用于指定开局打法,而用于随意开局〕。采用此规定以后,黑棋就不会再使用诸如“浦月”、“花月”之类的必胜开局了。

(3)“五手两打”:指黑棋在下盘面上关键的第五手棋时,必须下两步棋,让白方在这两步棋中任选一步,然后再继续下。

采用这一系列规定以后,黑棋先行就再无优势可言。

3.3 具体算法分析

3.3.1 棋盘局势状态表示

棋盘表示主要探讨的是是什么数据结构来表示棋盘上的信息。一般说来,这与具体的棋类知识密切相关。通常,用来描述棋盘及其上棋子信息的是一个二维数组。

要让计算机知道棋盘局势状态,就是要它记住棋盘中哪个位置有黑子,哪个位置有白子以及哪个位置是空点。因为五子棋的棋盘是15行,15列,因此可以将棋盘状态的描述用一个15×15的二维数组表示。

本程序的数据将用如下所示的数据表示:

int p[15][15]=

{{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},

{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}};

其中,(1)棋盘状态数据由一个15×15的二维数组表示。(2)用数字“1”和“2”来表示不同的棋子,黑色棋子用“2”表示,白色棋子用“1”表示。(3)没有棋子的格子用“0”表示。

3.3.2棋盘中下棋的顺序表示

棋局中下棋的顺序也很重要,应该是黑白双方交替下棋。

本程序用t来判断黑白双方下棋顺序,t为“0”时由白方下棋,t为“1”时由黑方下棋,由于五子棋规则中黑棋先手,所以初始值t=1,即玩家执黑先手。每次落棋后,都应改变 t 的值,t 在整个对弈过程中都只能为1或者为0,即在任意时刻,都有一方可以落棋,也只能有一方落棋。

3.3.3具体算法

本系统中较复杂的部分是人机对战部分。下面将简单分析人机对战,双人对战则省略。电脑要选择有利于它的最佳下法,就要能判断哪种形势对它最有利。但往往对一个形势的判断是很难做到准确的,特别是一盘棋刚开始的时候,棋盘的形势不明朗,即使是专家也不能做出准确的判断。为了判断哪种下法最有利,我们往往需要向后面计算几步,看看在走了几步棋之后,局面的形势如何。这被称为“多算胜”,也就是说,谁看得越深远,谁就可以获胜。这种思维方式被用到了计算机上。向后面计算的步数越多,系统开销就越大,本系统只向后计算一步,根据威胁的优先级来选择落棋的最佳点。

轮到电脑下棋时,电脑先向棋盘搜索合法的落棋点,即棋盘的空白点。然后再利用下面的算法先择最佳落棋点。在每个空白点,都有四个方向需要考虑,即­—、|、﹨、∕四个方向。以下就用○表示电脑所执的黑棋,用□表示玩家所执的白棋,用×表示棋盘的空白点。在设计的时候,尽可能把所有情况全面考虑,设置为搜索一个最佳落棋点位置的时候,需要保证左右展开后碰壁,之间的空间距离至少要有六格(而不是五子),否则就是死子。

人机对战算法流程是:顺序向下搜索,每次有符合要求的点时,视为最佳落棋点,并在该点落棋,同时将t赋值为1,退出搜索并判断是否有一方获胜,然后等待玩家落棋,再重复这一过程,直到有一方获胜。如图。

 

图 人机对战算法流程图

(1),电脑搜索棋盘里白棋是否有一步获胜的棋,即在同一条线路上有连续五个位置上,有四颗为白棋,另外一颗为空,这时就不用考虑玩家的棋局,直接就可以获胜。能直接获胜的棋型有×○○○○×、□○○○○×,还包括通过四三来形成的活四,包括有○○×○○、○○○×○、○×○○○。

(2),电脑搜索棋盘里黑棋是否有一步获胜的棋,这时就应该让玩家的“活四”变“死四”,这是白棋威胁级别最高的,应立即做出反应。有直接威胁的棋型有□×□□□、×□□□□×、□□□×□、×□□□□×。对于×□□□□×这种棋型,其实玩家已经获胜。

(3),电脑搜索棋盘里白棋是否有可形成活四的棋型,进一步冲四,这时就应该主动进攻,这种棋型包括×○○○××、×○○×○×、×○×○○×。这样的棋只需两步方可获胜,威胁级别仅次于上面两种。

(4),电脑搜索棋盘里黑棋是否有可形成活四的棋型,若有,就有阻止冲四,让玩家的“活三”变死三,这时就体现了电脑的防守策略,这种棋型包括:××□□□×、×□×□□×、×□□×□×。其中××□□□×在封堵后还具有威胁性,所以在电脑没有进攻机会时,也应该考虑这样的棋型的威胁性,因为可以利用这种棋型来造四三来获胜。

(5),电脑搜索棋盘里白棋是否有可形成活三的棋型,这是获胜的过渡棋,在整个棋局中非常重要,这样的棋型越多,白棋造活三的机会就越多,是获胜的关键。这种棋型包括:××○○××、××○×○×,由于需要三步获胜,所以优先级比较低。

表1是获胜情况分析表,优先级是按所需步数和落棋的顺序来决定的,在获胜所需步数相同的情况下,电脑所执的白棋优先级高于黑棋。

4 系统流程

五子棋的规则如下:(1)棋盘:采用15×15的棋盘。(2)下法玩家一执黑先手,电脑或玩家二执白后手,轮流在棋盘上选择一个无子的交叉点落子。无子的交叉点又被称为空点。(3)输赢判断:黑、白双方有一方的5颗棋子在横、竖或斜方向上连接成一线即为该方赢。(4)对于五子棋可分为禁手和无禁手两类,本游戏采用三三禁手。可用15×15的二维数表示棋盘内各点状态 (空、白子、黑子) ;

五子棋游戏规则简单,在每次玩家或电脑落棋后,都要去判断是否游戏是否分出胜负,如没有,另一方才能继续下棋。一局游戏结束后,可以选择再来一盘,这时将棋盘数据清空,又开始新的棋局。系统流程如图2所示。

 

       图5-2 系统流程图

5 系统功能实现

5.1 窗口设计

根据 Windows API 函数来编写应用程序的顺序结构:调用 WinMain 函数开始执行→定义窗口类→初始化窗口类→窗口的实例化→通过消息循环获取消息并将消息发送给消息处理函数做出相应的操作。

我们首先应该创建一个窗口,生成一个窗口主要有两步:定义窗口类和初始化窗口类。

首先用 InitWindowsClass 来定义一个窗口类,窗口类事实上是 struct 结构体,内部有10个分量,他们是用来于初始化窗口类对象而用的。根据函数里声明的各个参数来执行,它在里面定义了窗口类对象、声明了窗口的类对象名称、应用程序实例句柄、消息处理函数名、光标样式和窗口背景等,其它的都设置为初始值。

函数关键语句:BOOL InitWindowsClass(HINSTANCE hInstance)

{ WndClass.hbrBackground=(HBRUSH)(CreateSolidBrush(RGB(240,240,240)));

WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);

WndClass.hInstance=hInstance;

WndClass.lpfnWndProc=WndProc;

WndClass.lpszClassName="WinFill";

return RegisterClass(&WndClass);}

然后用 InitWindows 函数来初始化窗口类,在窗口类对象的初始化过程中,我们定义了窗口的一些简单一般特征,比如背景颜色呀,光标等等。但是在利用 CreateWindow 创建窗口的时候可以设置更多的细节,比如窗口标题这些。

函数主要参数:

hWnd=CreateWindow("WinFill",                                              

"五子棋游戏",

WS_OVERLAPPEDWINDOW,

0,0,

1024,768,

hInstance);

其中,定义窗口类对象名称为"WinFill",窗口标题为"五子棋游戏",窗口风格为WS_OVERLAPPEDWINDOW,说明此窗口是一个层叠式窗口,含有边框、标题栏、系统菜单、最大最小化按钮的窗口。

5.2 棋盘设计

程序的实现上,首先完成界面的设计,在界面的设计上,使用了二维数组的棋盘格式,考虑到五子棋的落子后,是不会再次移动的,所以采用划直线的方法模拟一个棋盘。棋盘大小为560×560,起始坐标为(200,100),每个格子大小为(40,40)。

首先用 GetStockObject 函数创建一个画笔和画刷,用 SelectObject 选择当前使用的画笔和画刷,画笔的作用是画棋盘的边框及格子,画刷的作用是填充棋盘的背景色,先取画笔后我们才能用它来画棋盘。为了增加棋盘的美观,画刷颜色选取灰色,与窗口的银白色分开。

然后用 Rectangle 函数画一个矩形,就是棋盘的边框,棋盘的左上角坐标为(200,100),右下角坐标为(760,660)。

再画棋盘的各横轴及纵轴,在画每一条直线前,需用 MoveToEx 函数指定当前画笔的位置,然后用 LineTo 函数从指定这点开始画一条到指定的另外一点的直线。

函数段为:hPen=(HPEN)GetStockObject(BLACK_PEN);

                     SelectObject(hDC,hPen);

hBrush=(HBRUSH)GetStockObject(LTGRAY_BRUSH);   

SelectObject(hDC,hBrush);

                 Rectangle(hDC,200,100,760,660);

                 MoveToEx(hDC,200,140,NULL);  //第一条横线

在这些都完成了之后,对界面进行最后的完善,通过添加按钮来使用户在和电脑对弈的同时,可以从这些按钮中获得必要的帮助。

本系统一共设置了四个按钮:“和棋”、“再来一盘”,“退出”和“帮助”。它们的画法采用文本框模拟按钮,先画一个矩形,在矩形里填充提示信息,用鼠标单击事件来响应各个按钮。

因此综上所述,在界面的设计上,主要有两个模块,一个是棋盘模块,一个是按钮模块。

5.3 按钮功能的实现

本系统一共设置了四个按钮:“和棋”、“再来一盘”,“退出”和“帮助”。它们的画法采用文本框模拟按钮,先画一个矩形,在矩形里填充提示信息,用鼠标单击事件来响应各个按钮。这四个按钮基本满足了一般玩家的需求。

按钮的画法:先在主函数里面定义四个变量,分别存储按钮的标题,然后在棋盘外画四个矩形,然后在四个矩形里分别显示按钮的标题。

具体实现方法:

“退出”按钮:

Rectangle(hDC,770,110,820,135);

TextOut(hDC,780,115,lpsz1,strlen(lpsz1));

if(i>770&&i<820&&j>495&&j<520)

{PostQuitMessage(0);

return(0);}

以上这几行代码就实现了退出按钮按钮的画法及实现,lpsz1 里存储的是按钮标题“退出”,在(770,110)到(820,135)这个区域画一按钮,strlen(lpsz1) 求的是字符串的长度,求出来的值就是文本显示的长度。当鼠标单击这个区域的时候,就产生消息,并执行 PostQuitMessage(0) 这条语句,这条语句的作用是退出应用程序。这样就模拟出了一个退出按钮,实现了程序的退出。

 “再来一盘”按钮:

Rectangle(hDC,100,325,180,375);

TextOut(hDC,110,340,lpsz5,strlen(lpsz5));

if(i>=100&&i<=325&&j>=180&&j<=375)   //再来一盘

{

for(m=0;m<=a;m++)

{c[m]=0;

d[m]=0;

e[m]=0;

f[m]=0;

}

for(m=0;m<=14;m++)

      for(n=0;n<=14;n++)

      {p[m][n]=0;}

在画法和退出按钮一样,都是利用矩形内填充文本的方法,在响应这个按钮时有一定条件,就是游戏已经分出胜负或者通过和棋结束了游戏。这时才会产生再来一盘的消息,它会将所有棋盘信息置为初始值,比如将棋盘状态函数P[][]里的数组全部清空,都赋初值为0,表示下棋棋子数的 a 也置为0等。

“帮助”按钮:

Rectangle(hDC,770,110,820,135);

TextOut(hDC,780,115,lpsz1,strlen(lpsz1));

if(i>=770&&i<=820&&j>=110&&j<=135)

{MessageBox(hWnd,"需帮助 请在黑棋下棋时单击'帮助' \n 一方获胜后可单击'退出'退出程序 \n 双方僵持情况下可'和棋' \n 如有兴趣请'再来一盘'","帮助",MB_OK);}

画法和前面的一样,这里面使用了文本换行,在每行之间用 \n 将需要换行的文字隔开,于是在单击这个按钮后,就会看到有多行文字的消息框出现。

5.4 胜负判断

在五子棋游戏中,判断胜负是很重要的一项工作,最先在棋盘横向、竖向、斜向形成五颗连续相同颜色的棋子的一方为胜。

(1)横向:横向比较好判断,纵坐标不变,横坐标向右递增,有五颗连续的相同颜色的棋子即获胜,所以横坐标的范围不必是(0,14),只搜索(0,10)即可。

(2)纵向:与横向一样,这时横坐标不变,纵坐标向下递增,所以纵坐标的搜索范围可以缩小到(0,10)。

(3)“﹨”向:这时搜索应从左上角开始,横纵坐标同时递增,横纵坐标的搜索范围都是(0,10)。

(4)“/”向:这时纵坐标是向下递增,但横坐标是向左递减的,所以搜索范围就不能从左上角(0,0)开始,应从(0,4)开始,横坐标的搜索范围是(4,14),纵坐标的搜索范围是(0,10)。

下面就以“/”向为例,在程序中具体实现过程:

for(m=0;m<=10;m++)

for(n=4;n<=14;n++)

{   

if(p[m][n]==1&&p[m+1][n-1]==1&&p[m+2][n-2]==1&&p[m+3][n-3]==1&&p[m+4][n-4]==1&&g==1)

{

MessageBox(hWnd,"黑棋赢","结束",MB_OK);

g=0;

}

else

if(p[m][n]==2&&p[m+1][n-1]==2&&p[m+2][n-2]==2&&p[m+3][n-3]==2&&p[m+4][n-4]==2&&g==1)

{

MessageBox(hWnd,"红棋赢","结束",MB_OK);

g=0;

}

一方获胜后,会弹出消息框,提示一方获胜游戏结束,并将 g 置为0,这时游戏就不能再继续,对下棋、“和棋”等起了屏蔽作用。在 if 语句里面有 g=0 这个条件,是限制游戏结束后重复判断胜负,只要一方获胜,就不能对棋盘做任何操作,只有对按钮采取操作有效。


6 系统测试与分析

本系统在 Visual C++ 6.0 下调试通过,调试成功后,打开debug目录下five.exe,开始运行五子棋游戏。我就从界面、按钮功能、胜负的判断几个方面来测试系统。

1 界面:该窗口具关闭按钮,系统菜单,标题栏,棋盘大小为15×15。

图6-1 游戏界面

2 画棋子:本系统能够在棋盘方格的交叉处画棋子,棋子半径为10。

6-2 画棋子界面

3 判断胜负:当棋盘上“一”、“∣”、“∕”、“﹨”四个方向有同一种颜色的五颗棋连成同一条直线时,系统会弹出提示消息框表示已经分出胜负。

6-3 胜负判断界面

4 “和棋”按钮:在游戏过程中,可以单击“和棋”按钮,来中断棋局。

图6-4 和棋界面


 

7结论

随着计算机的普及,人们对游戏的要求也越来越高,像五子棋这种休闲游戏丰富了人们的业余生活。至此,对用 Microsoft Visual C++/API 函数来开发 Windows 小游戏有了一个较全面的了解。

通过本课题的研究及几个月的设计与开发,基于VC的五子棋游戏软件开发完毕,实现了五子棋的双人对战,不过人机对战部分还没有做好,以后要改进完善。本课题按软件工程的要求设计与实现了整个系统,即需求分析、系统总体设计、详细设计与编码实现等步骤,最后进行了系统测试,并通过了系统测试。

不足与改进:第一大问题就是基本上没有人工智能部分,就是人机对战部分没有做出来。网络部分也没有很好的理解与运用。这次做的这个小游戏还有许多功能可以加上的,比如可以加上重新开始游戏,悔棋等等功能,甚至可以加上聊天的功能。所以这次做的这个小游戏还是有很大提升的空间的,利用这个假期要把它完善与整合。谢谢老师的指导与帮助。


更多相关推荐:
软件需求分析报告

基于android手持设备的景区导览系统变更记录签字确认1.引言该文档是基于android手持设备的景区导览系统的需求分析说明,是按照该产品所需要实现的外部接口需求、系统功能需求、安全性需求、性能需求等方面来写…

一个需求分析报告模板

目录1需求分析的目的52项目简介51项目商业目标52项目所开发的系统的定义和用途53项目的成本计划54开发期限53项目可交付资料51项目结束时客户应接收到的资料52项目结束时客户不应接收到的资料53满足可交付资...

需求分析报告模版

需求分析报告1引言编写目的阐明编写需求分析报告的目的项目背景应包括a项目的委托单位开发单位和主管部门b该软件系统与其他系统的关系名词解释列出文档中所用到的专门术语的定义和缩写词的原文参考资料列出有关资料的作者标...

项目需求分析报告(范本)

xxxxx项目需求分析报告编号序号文档作者项目经理日期日期日期日期部门主管管理员XXXXXXXXXXXXXXX版权所有不得复制修订记录页第1目录1引言4111213142编写目的4项目背景4定义4参考资料4概述...

用户需求分析报告(范本)

window命令大全11需求分析报告111引言编写目的阐明编写需求分析报告的目的项目背景应包括a项目的委托单位开发单位和主管部门b该软件系统与其他系统的关系名词解释列出文档中所用到的专门术语的定义和缩写词的原文...

软件需求分析报告实例

需求分析说明书1引言311编写目的312项目风险313预期读者和阅读建议514产品范围515参考文献52系统总体概述621目标622用户类和特性723运行环境7231硬件环境7232软件环境724设计和实现上的...

软件工程 需求分析报告

文档编号:001版本号:1.0文档名称:需求分析项目名称:学生智能管理系统项目负责人:项目组长:组员:开发单位:西邮07级科技1班软件开发小组一、引言:1、编写目的:对庞大的信息随着学校的规模不断扩大,学生数量…

铁路票务系统需求分析报告_

密级机密文档编号铁路票务管理系统项目需求分析报告计算机0902班0906410220花纯虎0906410222陈其清0906410201马福洋版权所有翻版必究铁路票务管理系统项目需求分析报告目录一引言311编写...

网上商城需求分析报告

网上商城姓名班级微机学号学院计算机信息学院需求分析说明书1023班1000005315目录一引言311项目背景312前期工作313参考资料3二技术概述321开发目标322硬件支持424用户特点425假定和约束4...

需求分析报告

文档编号文档标号研究与开发实践需求分析WIN7桌面小工具设计与开发研究与开发实践需求分析WIN7桌面便签阮松松小组系统需求分析说明书项目承办部门四川大学计算机学院09级研究与开发实践课程小组撰写人阮松松完成日期...

软件需求分析报告

软件需求分析报告1引言本文档是为自动作曲系统所编写的软件需求分析报告文档主要包括文档说明软件的综合描述等几个方面用于指导软件的开发以及对软件相关功能的说明11编写目的由于国内版权意识不断加强使音乐的使用价格既版...

20xx-20xx年中国隔离变压器行业市场需求分析与投资战略研究报告

中国行业研究报告咨询系列基本信息行业市场研究属于企业战略研究范畴作为当前应用最为广泛的咨询服务其研究成果以报告形式呈现通常包含以下内容20xx20xx年中国隔离变压器行业市场需求分析与投资战略研究报告是博研咨询...

需求分析报告(33篇)