五子棋课程设计报告

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

--------六子棋

C语言课程设计

报告

目录

第一章导言

1.1概述 (2)

1.2项目背景 (2)

1.3开发人工作情况概述 (2)

第二章项目概述

2.1 软件系统需求分析………………………………………………

2.2软件运行环境 (3)

2.3软件主要设计思想 (3)

2.4软件功能模块说明 (4)

2.5程序流程 (7)

2.6系统数据库设计 (11)

2.7系统功能函数简介 (12)

2.8本软件存在的缺陷 (14)

第三章用户使用手册

3.1六子棋游戏程序的功能说明 (15)

3.2六子棋游戏程序的的性能明 (15)

3.3六子棋游戏的运行说明 (15)

3.4用户操作说明 (15)

第四章课程设计心得体会 (20)

第五章系统源代码 (22)

第一章导言

1.1概述

本程序是一款棋类益智游戏程序,类似于五子棋游戏,是采用C语言编写的可在WINDOWS 系统下运行的娱乐游戏平台。该程序面向广大棋类游戏的爱好者,能够提供方便,实现基本智能控制的游戏环境。本程序可以实现人人对战以及人机对战,用户可以根据需要自行选择,人机对战中电脑这方具有一定智能,具备对奕能力。在游戏人机对话接口上,人人对战,为方便双方棋手,采用键盘两边控制,一方是A,S,D,W,SPACE控制棋子移动及下棋,另一方是方向键及ENTER控制移动及下棋,双方都可通过ESC键退出游戏,人机对战中,棋手可用鼠标来操作,点击界面退出按钮终止游戏。游戏开始后,选择模式,可进入相应界面,左方显示30*30的棋盘,右方会有游戏相关操作说明,本游戏默认黑棋先手,六子连珠者胜,程序会提示当前下棋的棋手,结束时会显示对战双方胜负情况。

1.2项目背景

项目名称:六子棋

项目发布:周纯杰,何顶新,周凯波,彭刚

指导老师:周纯杰,何顶新,周凯波,彭刚

项目开发人员:华中科技大学——控制科学与工程系

自动化0707班凡速飞(组长),田绍宇

参考资料:

《人工智能》马少平朱晓燕清华大学出版社

《标准C语言课程设计及应用》周纯杰等华中科技大学出版社

《C高级实用程序设计》王士元. 北京: 清华大学出版社

《C语言课程设计》陈清华, 朱红. 南京: 东南大学出版社

《C语言程序设计》潭浩强. 北京: 清华大学出版社

《C语言高级实例解析》汪晓平清华大学出版社

《C语言游戏编程》

《高级语言程序设计(C语言版)》刘加海浙江大学出版社

开发成果:六子棋游戏

1.3开发人员工作情况概述:

凡速飞:(组长)

具体工作:编写开始界面,设计编写电脑下棋即人工智能部分的算法和代码,实现界面汉化,并建立工程,组装程序

田绍宇:

具体工作:整个游戏界面,包括模式选择,游戏进行,结束等界面程序,设计编写游戏主控模块,人人对战算法及最终代码,游戏胜负判定,写程序设计报告。

第二章、项目概述

2.1 软件系统需求分析

开始显示30*30的棋盘,通过模式选择实现人人对战及人机对战,六子连珠者胜,黑棋先手,要能动态显示下棋顺序,而且能自动判断输赢及显示胜负信息

2.2软件运行环境

该程序是用C语言在BC下编写的,通过BC的工程化建立了一个工程文件,编译后生成了一个可执行的EXE文件,只要计算机具有BC,该文件可以在WINDOWS环境下点击运行。

2.3 软件主要设计思想

本游戏设计的是一款六子棋游戏,在设计中,我们最主要的是通过建立一个二维数组

chess【30】【30】来代表记录棋盘上各点信息,通过宏定义将棋手定义成整型值,便于记录,例如:当在棋盘左上顶点处1号棋手下了一粒白子后,就将chess【0】【0】这个值记为2,这样就把下棋信息记录下来了,这就是所谓的棋型表,之后的判断胜负,棋手下棋都是通过搜索这个数组来作出相应判断和操作

主控模块中,为实现交换棋手,通过一个中间值step来实现,设一个初值,为0,然后每个棋手下完后,进行step自增,这样通过选择判断,if(step%2==0),则2号棋手下棋,否则1号棋手下棋,主循环用while(1)不断循环判断执行

为动态显示下棋顺序,是通过书写覆盖,再书写再覆盖来实现的

判断胜负是用judgewin这个函数,再数组中搜索相邻的位置是否是己方棋子,是就用一个变量加一,否则退出,分别向八个方向搜索,一个方向上存在六子连珠就获胜。

智能体中,为实现电脑智能判断,关键是要使电脑能够找到一个最佳位置,我们通过六子棋相关规则及下棋方法,设计一套评分规则,搜索棋型表中己方及对方各点,根据评分规则给各点评分,找到己方及对方分数最高的点,分别代表进攻及放手的最佳位置,然后比较这两点的分数,选择是进攻还是防守,实现对奕功能

2.4 软件功能模块说明

界面及图形模块

人人对战模块

人机对战模块

2.5程序流程

主函数流程图

(Y 或N)

人人对战程序流程

棋手下棋流程

电脑下棋流程

2.6系统数据结构设计

定义二维数组chess【30】【30】//来存取棋盘上各个位置棋子信息#define LEFT 0x4b00 //控制棋子移动的方向键键值#define RIGHT 0x4d00

#define UP 0x4800

#define DOWN 0x5000

#define F1 0x3b00

#define A 0x1e61

#define S 0x1f73

#define D 0x2064

#define W 0x1177

#define F2 0x3c00

#define ESC 0X011b //退出键

#define ENTER 0x1c0d //下棋键键值

#define SPACE 0x3920

#define ROW 30 //需要用到的相关定义

#define COLUMN 30

#define YES 0x1579

#define NO 0x316e

#define LEFTUP 5

#define RIGHTDOWN 6

#define LEFTDOWN 7

#define RIGHTUP 8

#define SIZE 10

#define FALSE 0

#define TRUE 1

#define COMPUTER 1 //定义棋手

#define PLAYER1 2

#define PLAYER2 3

2.7系统功能函数简介

void ready();//初始界面,显示相关简介说明

void init_graph();初始化图形系统,单独写一个函数减少重复void init_data();初始化数据,即用于存储棋型表的二维数组的值void Chooseplay_with_who();模式选择界面,根据提示输入选择值,将可进入不同界面,开始不同游戏

void drawchessboard(int play_with_who);

游戏界面,其中具有一个参数play_with_who,接收用户输入的输入值,函数会根据不同值显示不同界面

int judgewin(int x,int y,int flag,int chess[30][30]);

判断胜负,参数X,Y是棋子所下位置坐标,flag用于接收下棋的棋手信息,chess【】【】是棋型表信息

void Showchess(int x,int y,int flag);

在当前位置X,Y坐标处根据棋手flag画棋子

void ENDmessage(int play_with_who,int flag);

结束画面,将显示胜负信息

void Guangbiao(int x, int y);

光标函数,会在传给它的坐标出显示一个闪动的光标

void player1(int chess[30][30]);

1号棋手下棋控制函数,chess【】【】跟随记录棋盘上当前信息void player2(int chess[30][30]);

2号棋手下棋控制函数,chess【】【】跟随记录棋盘上当前信息void player(int chess[30][30]);

人机对战中,人这一方下棋控制函数

void computer(int chess[30][30]); 人机对战中智能体部分

int Initmouse();鼠标初始化函数

void Showmouse();显示鼠标

void Hidemouse();隐藏鼠标

void Readmouse(int *f,float*x,float *y);读取鼠标位置和状态

void mouse(int chess[30][30],int step);

void open_hzk();打开汉字库

void get_hz(char incode[],char bytes[]);读取汉字

void dishz(int x0,int y0,char code[],int color);在X0,Y0处显示汉字double score(int chess[ROW][COLUMN]);

电脑下棋中根据评分规则用于计算某点分数

double score_row(int i,int j,int chess[ROW][COLUMN]);

计算某点在横向上的分数

double score_column(int i,int j,int chess[ROW][COLUMN]);

计算某点在纵向上的分数

double score_diag_45(int i,int j,int chess[ROW][COLUMN]);

计算四十五度角方向上的分数

double score_diag_135(int i,int j,int chess[ROW][COLUMN]);

计算135度角方向上的分数

double total_score(int who_running,int chess[ROW][COLUMN]); 计算某个棋手的总分

2.8本游戏程序存在的缺陷

由于是初次开发如此大型的程序,没有任何经验,很多困难都是第一次遇到,就目前而言,一些基本的BUG已经排除,到目前为止,基本上没有发现影响程序主体功能的BUG。另外,对于人工智能部分的设计由于我们水平实在有限,所以,电脑的智能程度并不高,这也是我们的一大遗憾。

在界面制作上有些简陋,不是很漂亮,操作上还不是很人性化,本应该做菜单,实现鼠标菜单操作,让游戏进行起来不方便,但由于一开始没准备设计这项,后来又时间不够,故有此缺憾,不过,我们经历课设还会找时间对其进行一定完善,不让自己留有遗憾。

第三章、用户使用手册

3.1六子棋游戏程序功能说明:

本六子棋游戏程序可以实现Borland C环境下的简单智能控制的六子棋娱乐游戏,可以自动判断输赢,自动显示胜负信息,下棋中可以动态显示下棋顺序,在人机对战中电脑可以实现基本的智能判断,找到较佳的下棋位置与人对奕。

3.2六子棋游戏程序性能说明:

3本游戏程序具有基本智能,灵活性、方便等特点。

1基本智能

本游戏程序中,计算机可以自动显示下棋顺序,判断胜负,显示胜负信息,计算机也课实现与人对奕。

2.灵活性

本游戏程序可以DOS/WINDOWS 9X/ME/2000/XP等操作系统下顺利运行,不会由于操作系统的不同而出现运行上冲突的问题,有极高的适应性。

3.方便

本游戏程序通过键盘两边操作,实现棋手对立操作,避免交叉,而且键盘操作方便,光标移动显示当前位置,人机对战中,实现鼠标控制,操作更便利

3.3六子棋游戏程序运行说明:

本游戏程序无需安装,点击BC编译生成的EXE文件即可执行

3.4用户操作说明:

开始进入欢迎界面,按Y或ENTER进入,按N退出,进入后,显示模式选择,选择不同模式和不同对手对奕。

在人人对战中,黑棋方先行,按方向键控制光标移动,找到位置后,按ENTER 键下棋,然后轮到白棋方下,白棋方用A,S,D,W控制光标移动,找到位置后按SPACE下棋,下棋中不必自行判断胜负,电脑会判断并最终显示,双方都可以通过按ESC键强行退出游戏

在人机对战中,己方为黑棋,己方先手,通过鼠标下棋,点击退出按钮可以退出

第四章、课程设计心得体会

田绍宇:

这次C语言课程设计自第三周开始到第八周结束,历时六周,在这六周中,我和我的合作人冥思苦想,刻苦钻研,克服一个又一个困难,虽然这个过程十分艰难,但我们充分进入,享受,经历着这样一个过程,从中学到了不少东西。

刚开始,我们实在是无从下手,一个刚刚学会编写简单C语言题实现简单功能的人突然面对这样一个结构复杂,技术困难,工程庞杂的程序设计项目,实在不知如何是好。

幸好,我们谨尊老师的指导,首先完成目标设定及工作计划,分配好任务,迈出了课设的第一步。然后,我们着手学习相关知识,包括C绘图,文件操作,动画,键盘控制,鼠标操作,五子棋算法,人工智能博弈搜索算法(极大极小搜索算法),汉化等等知识,然后开始算法设计,这个工作十分艰难和耗时,期间我们多次向人请教,并咨询老师,获得了极大帮助,在此向他们表打由衷的感激之情。之后,我们开始了代码的编写。在这之中,最困难的是调试,解决一个又一个BUG,最终,我们的作品呈现在我们面前,不禁教我感慨万千。

经历此次课设,充分加深了我对C语言知识的理解和掌握,极大丰富了我的知识,同时也大大锻炼了我的思维和面对困难解决困难的勇气及方法,另外也让我学会如何与人合作,协调工作,共同努力,这无疑是将来急切需要的一种能力。总之,课设这个过程将成为一笔宝贵的人生财富,助我们不断成长,进步!凡速飞:

作为本软件的总体构思和编制者,在本软件的设计过程我遇到了前所未有的困难,这些困难是我在之前的C语言学习过程中从来没有碰到的。起初面对该课题,基本上是无从下手,面对这么多的知识,那些要用到,那些不会用到,基本上没什么概念,接到课题的头三个星期由于高级编程技术的缺乏,我们一组成员基本上都是在看书,其中想到了很多想法以及如何实现,但现在程序编完了以后,从头来看,得出的结论是:想法和实现是有很大距离的。

很多想法实现起来有很大的困难,这些困难可能是由于自己以前基础知识的漏洞;可能是由于算法的不完善;可能是由于自己程序与组员的程序联接问题;还有可能是编译工具的使用不熟练…

通过本次的C语言课程设计,我最深的体会就是编程要有详细的计划,明确的方向和流程是多么的重要!在之前的工作中,由于没有完善的总体设计,我们在程序设计过程中部入了很多误区,编程过程中有一段时间没有什么任何成果,我一度非常灰心丧气,甚至有几天有放弃的念头。尽管编制软件的过程非常辛苦,但毕竟挺过来了。跟某些牛叉的人相比,感觉我们的东西就像垃圾,但毕竟是自己的第一个软件作品,看着自己的成果,感到非常欣慰,也许实现方式比较龊,但按要求的基本功能都有了。它是我从不懂到懂,亲手实践的结晶,对我来说具有非比寻常的意义。

通过这次C语言课程设计的学习,我收获很多,尤其是与他人合作的能力,在这合作项目中,由于分歧,我们小组一度发生严重争吵。现在我学会了要更多的与人合作,要多与他人交流,才能完成一个好的项目。

第五章程序源代码

五子棋c课程设计

目录第一章:课程设计目的和要求 (2) 1.1数据结构课程设计的目的 (2) 1.2数据结构课程设计实现的要求 (2) 第二章:课程设计任务内容 (3) 2.1五子棋对弈系统 (3) 第三章:详细设计说明 (4) 3.1功能设计 (4) 3.2五子棋对弈系统流程图 (4) 3.3软件中实现各项功能的函数与程序代码 (5) 第四章:程序运行环境说明 (10) 4.1程序运行环境说明及出现的问题 (10) 4.2运行结果 (10) 第五章:课程设计心得与体会 (14) 附录 (15) 源程序: (16) 五子棋 第一章课程设计目的和要求 1.1数据结构课程设计的目的 进一步培养结构化程序设计的思想,加深对高级系统语言基本语言要素和控制结构的理解,针对数据结构中的重点和难点内容进

行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。 此课程设计着眼于知识的运用,把平常学的知识运用到课程实践中来,本身就是考察我们知识运用能力。要求熟悉运用一些编程软件,对我们所学的理论知识进一步的深化。 1.2数据结构课程设计实现的要求 使用C++语言编写一个基于控制台的简单程序,使学生掌握简单的程序设计技巧。同时设计一个简单的五子棋对弈系统,可以实现五子棋的基本功能,是一款娱乐用的小型程序。 第二章课程设计任务内容 2.1五子棋对弈系统 设计一个五子棋系统程序,实现对五子棋进行运行。 基本要求:五子棋是有两个人在一盘棋上进行对抗的竞技活动。在对局开始时,先由用户选择哪方开局,先开局一方将一枚棋子落在一点上,然后由另一方在对方棋周围交叉点上落子,如此轮流落子,知道某一方首先在棋盘的直线、横线或斜线上形成连续的五子则该方程就算获胜。 此时算法结束,当有任何一方退时出,都可在算法中实现。 第三章详细设计说明 3.1功能设计 (1)由两个玩家分别下棋,当某一玩家五子相连,则赢。

C语言图形五子棋课程设计报告

北京师范大学C语言课程设计汇报 课题名称:游戏五子棋 指导老师:尹乾 课题组员:罗福莉赵帅帅何虹达院系:信息科学和技术 时间:20XX.3.15-20XX.4.20

摘要 五子棋是一个两人对弈纯策略型棋类游戏,应用C语言编写程序能够在计算机上实现二人对弈五子棋功效。二人对弈五子棋程序由欢迎界面显示、游戏界面生成、光标移动和落子、判定胜败、悔棋功效、提供音效等子程序组成;程序中应用了结构体、数组、全局变量、按键处理和图形编程等元素和语句。程序经过棋盘和棋子图像生成、二人移子和落子和判定胜败等功效实现,在计算机上实现了二人五子棋对弈。

目录 摘要-------------------------------------------------------------------------------------- 2 第1章:需求分析-------------------------------------------------------------------- 3 1.1五子棋背景-------------------------------------------------------------------- 3 1.2 五子棋需求分析和步骤设计 -------------------------------------------- 4 第2章:概要设计-------------------------------------------------------------------- 7 2.1 各类头文件和全局变量--------------------------------------------------- 7 2.2 画面显示模块---------------------------------------------------------------- 8 第3章:具体设计------------------------------------------------------------------ 11 3.1 玩家操作模块-------------------------------------------------------------- 11 3.2音效提供模块 -------------------------------------------------------------- 11 3.3 胜败判定模块-------------------------------------------------------------- 12 第4章:调试分析------------------------------------------------------------------ 13 4.1 图形模块 -------------------------------------------------------------------- 13 4.2 玩家操作模块-------------------------------------------------------------- 13 4.3 胜败判定模块-------------------------------------------------------------- 14 第5章:用户手册------------------------------------------------------------------ 14

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)正确计数对羿步数及下一步所要走的棋盘界面

C课程设计五子棋

/*这是我们c++课程设计五子棋,我用了许多循环语句,可能比较繁碎, 不过仔细分析的话,还是挺简单的。如果有什么不懂的地方可以加我q 1570169994 */ #include #include #include // 这些是一些必要的头文件 #include #include using namespace std; #define M 15 //此处定义棋盘大小为15*15,自己视情况而定 typedef struct Node { int a; //这里定义的结点在悔棋时要用到 int b; struct Node *next; }node; class Qipan { //定义一个棋盘类,这个类里有实现不同功能的函数 public: int a,b,t; //棋子的坐标我们用a,b表示,t表示接收的输入信息 int player; //player为1时,代表绿方下棋,2代表红方 int name[M][M]; //棋盘用一个15*15的二维数组表示 void reset(); //此函数实现重置功能,即将棋盘上的棋子清零 void chess(); //此函数实现下棋功能,是非常重要的 void win(); //此函数实现判断功能,即每当一方落子后,都要调用此函数 void explain(); //此函数是解释说明的函数 void output(int count[]); //此函数输出赢的一方 void gotoxy(int x,int y) { HANDLE hout; //这是实现光标移动的函数,具体可以百度一下 COORD coord; //x,y即为棋子的坐标,和a,b一样 coord.X = x; //此函数是将当前光标移动到x,y坐标处 coord.Y = y; hout = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleCursorPosition(hout,coord); } }; // main 函数 int main() { Qipan qipan; //定义一个棋盘对象 do { system("cls"); //清屏函数 cout<<"1.开始游戏 "<

五子棋课程设计报告

单 位 分院(系) 专 业 学 号 学生姓名 指导教师 完成日期 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控制光标移动,空格键表示落子.一旦接收到空格键,说明棋手落子,先判断是否是有效位置,也就是说已经有棋子的位置不能重叠

课程设计-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 任务分工 组长:赵哲武 负责小组程序的输入和创新部分,分配任务,使工作衔接有序,以

五子棋课程设计论文(附代码)

1、需求分析 1.1、课题背景和意义 五子棋一种两人对弈的纯策略型棋类游戏,由古代的传统黑白棋演化而来,相传起源于四千多年前的尧帝时期,比围棋的历史还要悠久,可能早在“尧造围棋”之前,民间就已有五子棋游戏。迅速发展于日本,流行于欧美。容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能提高智力,而且富含哲理,有助于修身养性。有关早期五子棋的文史资料与围棋有相似之处,因为古代五子棋的棋具与围棋是完全相同的。在上古的神话传说中有“女娲造人,伏羲做棋”一说,《增山海经》中记载:“休舆之山有石焉,名曰帝台之棋,五色而文状鹑卵。”李善注引三国魏邯郸淳《艺经》中曰:“棋局,纵横各十七道,合二百八十九道,白黑棋子,各一百五十枚”。这段虽没明讲是何种棋类,但至少知道远古就以漂亮的石头为棋子。因而规则简单的五子棋也可能出自当时,并是用石子作棋子。亦有传说,五子棋最初流行于少数民族地区,以后渐渐演变成围棋并在炎黄子孙后代中遍及开来。 五子棋是一种益智的游戏,他可以提高人们的反应能力。尤其是在开发人们的智力方面,很受人们的欢迎。 《数据结构课程设计》是一门实践性的计算机课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。通过这次课程设计,要求掌握较大程序的设计方法,相应数据结构的选择应用、算法的设计及其实现和性能分析等方面中加深对课程基本内容的理解。同时,在设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。 1.2、课题要求 1.2.1、设计一个20*20大小的棋盘进行和电脑对战游戏 1.2.2、实现电脑智能和玩家对战,能实现智能攻防,迅速对局势作出判断并下 棋. 1.3、软件格式规定 1

c语言程序设计五子棋

伊犁师范学院高级语言课程设计报告 学院:电子与信息工程学院 学生姓名: 学号: 专业届别: 指导教师: 完成时间:

五子棋游戏 1 设计目的及要求 目的: (1)学习综合运用C语言课程和其他相关课程的知识,提高分析解决实际问题的能力,进一步巩固、加深和拓宽所学的知识,进一步加强结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。 (2)全面系统的学习面向对象程序设计的基本概念、基本语法和编程方法,与同学合作设计整套程序,并且独立完成一定工作量的程序设计. (3)掌握程序设计中的常用算法和C语言的程序技巧,培养良好的程序设计风格。 (4)运用所学的知识了解五子棋游戏的制作结构,将所学的知识运用于实践中。 要求: (1)独自设计、编制、调试出一款五子棋游戏。 (2)要求该游戏具有趣味性和可操作性,能够正常运行。其中用到C语言中的各种语句、结构。(如其中需要注意全局变量和局部变量的申明,数组的使用等)(3)五子棋游戏要求能够进入欢迎界面,当有五颗相同颜色的棋子连续连成五颗,就胜出。 任务: 五子棋是一种传统的棋盘游戏,是我国古代传统的黑白棋种之一发展于日本,流行于欧洲任务内容就是设计一款老少皆宜、能够锻炼个人策略谋划能力棋。有助于孩子开发智力,或者闲暇时打发时间。原则: (1)系统性。系统作为统一整体而存在,因此,在设计中,要从系统的角度考虑。系统的代码要统一,传递语言要尽可能一致。 (2)可靠性。可靠性是指系统抵御外界干扰的能力及外界干扰时的恢复能力。

(3)规范性。游戏的运用以吸引玩家的乐趣为前提,一方面,系统设计应尽量避免不必要的复杂化,另一方面模块应尽量简洁,以缩短处理流程。 2 开发工具 C语言 3 应用平台 Windows xp 4 功能设计 游戏分析: 五子棋是两人之间的竞技游戏,该五子棋程序基本上实现了五子棋游戏的功能,有双方下棋之前的欢迎界面及下棋过程中的棋盘界面,还有最终会判断出输赢。同时,该游戏采用了二维坐标实现的,明了易懂,方便玩家在游戏过程中的基本操作,使游戏更加简便。细节方面,该程序有实时储存功能,随时记录。另外考虑到游戏挺简单的,就没有设置悔棋的相关模块。 游戏介绍: 该游戏是简单的双人五子棋,所实现的功能是能够显示欢迎界面,选择是否进行游戏,进入游戏界面以后,玩家开始下棋。玩家输入坐标则会在棋盘上显示棋子,(若是输入的坐标超出棋盘或者该位子已经有子则会提示玩家重新输入坐标位子),若输入则退出游戏。 4.1 算法设计 程序说明: 五子棋是一款经典的益智类游戏,通常是黑棋先行;五子棋专用盘为15*15方格,五个子的连接方向为横、竖、斜,当任一方的五个子在各方向上连成一线时,则该方获胜。 程序要求: 按照程序说明编写五子棋程序,要求可以进行双人之间的游戏。程序输出: 输出棋盘、棋子,并能够进行相应的操作。

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

《人工智能导论》课程报告 课题名称:五子棋 姓名: 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)

五子棋优秀教案1-5[1]

五子棋兴趣小组活动教案 第一课时认识五子棋(一) 学习目标: 1、认识五子棋棋盘,知道棋盘是有横竖各15条平行线交叉组成及棋盘上的4星1天元; 2、认识五子棋棋子,知道五子棋棋子是黑白225枚子,黑113枚子,白112枚子。 学会五子棋执棋方式。 3.了解五子棋的历史及比赛的计时制。 重点、难点: 认识五子棋棋盘,知道棋盘是有横竖各15条平行线交叉组成及棋盘上的4星1天元;认识五子棋棋子,知道五子棋棋子是黑白225枚子,黑113枚子,白112枚子;学会五子棋执棋方式。 一、谈话导入。 1、同学们,课前老师让你们收集并了解有关五子棋的资料,那谁愿意把自己收集到的知识讲给大家听? 2、学生汇报所收集的资料。 3、通过资料的收集,我们了解了许多五子棋的知识。 二、新课 1、五子棋的历史 五子棋是我们中国发明的,距离现在已经有四千多年的历史了 2、认识五子棋棋盘。出示图1

第二课时认识五子棋(二) (1)生观察棋盘,发现问题,提出质疑。 (2)通过其他学生的已有知识解决问题,师补充小结:棋盘由纵横各15条等距离、垂直交叉的平行线构成,形成225个交叉点。以对局开始时的黑方为准,棋盘上的纵行线从下向上用阿拉伯数字1—15 标记(注:QQ棋盘上的数字则从上向下标记),横行线从左到右用英文字母A--O标记,其中H8点为天元;D4、D12、L12、L4四点为星。 3、认识棋子。 (1)师演示,生直观:棋子由黑白两种颜色组成。师补充:共有225个棋子,与交叉点的个数相同;其中黑棋113个,白棋112个,不过平时下棋棋子少些也是可以的。 (2)正确的执棋方式。 师演示:是食指的指甲与中指的指肚儿夹住棋子。棋子落在 棋盘的交叉点上,落下后不能移动。 生执棋练习:先从自己的棋盒里拿棋,放到棋盘上的交叉点上。然后同桌之间比赛,看谁拿的快,放的准。 4.了解五子棋比赛计时制 (一)比赛时限 比赛时限可分每方30分钟到5小时不等,但一般要求一天内必须结束。有些比赛受条件限制,也可采用双方共用时限的方法,时限时间约是单方时限的双倍。双方共用时限到时后,可用限时走棋(几分钟之内走完若干手棋)或到时读秒的后续手段,直到该局结束。读秒时限,多采用1分钟制,凡一着棋用时不足1分钟,可不计时间,到1分钟则判负。 (二)迟到时限 比赛前,组织者都会规定迟到时限,一般为15分钟,每场比赛迟到时限一到,未到场的棋手均按弃权判负。

五子棋课程设计实验报告

西南交通大学 程序语言综合课程设计 五子棋游戏 课程《程序语言综合课程设计》 学院信息科学与技术学 专业软件工程 姓名 学号 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

C++课程设计——五子棋

《面向对象程序设计课程设计》 ————五子棋 学号:201201051738 学院:信息科学与工程学院 班级:网络工程2班 指导老师: 学生姓名: 日期:2013 年06 月24 日

C++课程设计——五子棋 一、功能描述 设计一个五子棋游戏,实现双人对战,通过鼠标进行操作,具有悔棋功能,可以多次进行游戏,界面美观,有音效。重要的是按键进行弹窗提醒,由用户进行确认。 二、概要设计 窗口注册:向系统注册窗口。 建立窗口:初始化并建立窗口。 处理消息:等待消息传入,调用处理函数。 POINT_类:记录一个点及其处理函数,包括点的位置规范化函数。 Chess类:记录棋子相关信息及其处理函数,包括落子,起子函数。 GameGolbal类:记录一个五子棋游戏的整体信息及其处理函数,包括定义了POINT_类,Chess类的成员,及一些游戏中 会用到的整体变量。主要函数包括如下: 窗口刷新函数:通过储存的数据重新绘制窗口。 新游戏函数:对游戏的变量进行初始化的处理。 悔棋函数:对储存数据修改,达到悔棋的目的,会调用 窗口刷新函数。 声音播放函数:播放效果声音。

结果判断函数:每次落子后判断结果。 结果显示函数:绘制游戏胜利的结果。 程序运行流程及函数调用关系如下: 建立窗口 绘制棋子 注册窗口 悔棋 ID_BACK 标准化并记录坐标 窗口刷新 判断并累加操作的棋子 判断是否棋子覆盖 修改数据 调用声音函数 关于 IDM_ABOUT 退出 IDM_EXIT 鼠标左单击 WM_LBUTTO DOWN 新的一局 ID_NEW 数据初始化 窗口菜单命令 WM_COMMAND 判断胜负 判断胜负 显示结果 等待信息

MFC课程设计报告-一个简单的五子棋游戏

设计一个简单的五子棋游戏 一、设计目标与内容 1.了解Windows编程的基础知识,掌握MFC应用程序的基本知 识; 2.基本掌握面向对象程序设计的基本思路和方法; 3.掌握用VC++开发应用程序的的一般步骤和方法; 4.能够利用所学的基本知识, 设计一个简单的五子棋游戏,具 有以下功能:①数据结构的设计;五子棋棋盘的绘制。②两人下棋时,两人下棋算法的设计。③两人下棋时,判断任一方获胜的算法的设计。 二、设计要求 1.用VC++进行编码,实现应用程序的功能。注重编码质量, 代码要有适当的注释; 提交设计报告一份(课程设计任务书、目录、主要的数据结构、设计的基本思路、设计的步骤及主要代码、心得体会、参考文献)。总体设计 运行时效果如下:

图3-1 这个程序只能进行两个人之间的对弈,不能进行人机对弈,由于时间和个人能力的原因所以人机对弈的算法就没有写出。同时程序中也存在着很多漏洞,但基本的功能都已经实现,还有待继续改进。 详细设计 新建工程game_wzq

选择单文档应用程序,在Step 4 of 6中先中Windows Sockets 复选框。如下图: 图3-2 资源编辑 黑白位图Bitmap以表示棋盘上面的棋子: IDB_BLACK DB_WHITE 黑白鼠标Cursor以替换当前鼠标: IDC_CURSOR1 黑棋子

IDC_CURSOR2 白棋子 黑白图标Icon以显示在状态栏供以提示 IDI_BLACK IDI_WHITE 菜单以供操作: 开始: ID_START 保存: ID_SAVE 打开: ID_OPEN 如下图所示: 图3-3 变量函数 首先,为了实现状态栏的应用,我们必须更改它的变量:

c 课程设计报告五子棋

c 课程设计报告五子棋 C++面向对象课程设计报告 院(系): 专业: 学生姓名: ,, 班级:,,,学号: 题目: 五子连珠棋 ,,,,,,,,, 起迄日期: 2010-12-20,,,, ,,,,, 设计地点: 指导教师: 完成日期: 2010 年 12 月31 日 课程设计报告内容 一、需求分析 1( 选做此课题目的 五子棋游戏是一历史悠久,对抗性强,技巧性高的棋类游戏。而且我对五子棋有着独特的爱好,希望自己也可以编写出一款可以实现人机对战的五子棋游戏。把自己的思想付给电脑,让自己有些成就感,给自己继续努力的动力。借此次课程设计的机会,把想法变成现实。而且五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。所以此次c++课程设计选择五子棋这个题目。 2( 程序所实现的功能

通过给电脑赋予人工智能,利用电脑运算速度快的特点,结合五子棋的游戏规则,给电脑设定固定的扫描方式,设定权值,使电脑能够选择最合适的落子点,然后调用加载已做好的棋盘棋子图像,最终实现简单的人机对弈。 3(该游戏为普通玩家使用,只要连成五子即获胜,没有禁手、RIF(国际连珠连盟)正式规则、“Yamaguchi”、”Tarannikov”、“Taraguchi”等规则。 二、设计内容 1( 根据所选题目,给出模块图 主界面 开始游戏重新开始游戏游戏结束 初始化棋盘初始化棋盘 结束界面 落子 判断输赢 2( 画出主程序及其主要模块的流程图 游戏开始 初始化棋盘 加载棋盘图片 1 点鼠标左键落子 加载棋子图片到棋盘 扫描棋盘,根据预设权 值,选择最佳地点落子否五子连 珠, 加载棋子图片到棋盘

《C++语言程序设计》课程设计报告--五子棋

C++语言程序设计 课程设计报告 课程:C++语言程序设计题目:五子棋 年级: 专业: 学号: 姓名: 指导教师: 江苏师范大学数学与统计学院

【摘要】 五子棋是我国古代的、传统的黑白棋种之一。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。本游戏是以C++语言作为开发工具,运行环境Visual C++ 6.0,通过构造函数绘制棋谱,以及落子函数、判断函数,实现双人对弈的功能。 【关键词】五子棋、游戏、人人对战、C++ 【引言】 五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“連珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。 五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。 本游戏是以C++语言作为开发工具,运行环境Visual C++ 6.0,通过构造函数绘制棋谱,以及落子函数、判断函数,实现双人对弈的功能。 【设计思路】 第一步:绘制棋谱 第二步:对战双方落子 第三步:判断是否有五子连珠 第四步:重复第一、二、三步直至出现五子连珠 【设计过程】 通过构造函数实现棋盘,编写落子函数实现玩家落子,通过判断函数判断是否有五子连珠的结果。 【设计结果】 图1-1 初始画面

五子棋人人对战c五子棋课程设计报告

VC课程设计报告 设计题目:五子棋人人对战 学院:理学院 专业班级:信息与计算科学班 学生:***** 学生学号:12345 指导教师:### 提交时间:2013年 07 月 02 日成绩:

目录 第1章引言 (4) 第2章任务概述 (4) 2.1问题概述 (4) 2.1.1问题重述 (4) 2.1.2设计目的 (4) 2.2需求分析 (4) 2.2.1基本要求 (4) 2.2.2游戏功能介绍 (4) 第3章概要设计 (4) 3.1功能设计 (4) 3.2程序结构 (4) 3.3基本流程 (4) 第4章程序实现 (4) 4.1主要变量及函数的说明 (4) 4.1.1主要变量 (4) 4.1.2主要函数 (4) 4.2主要功能的实现 (4) 4.2.1类声明 (4) 4.2.2棋盘初始化 (4) 4.2.3开始下棋 (4) 4.2.4判断下棋合法 (4) 4.2.4判断输赢 (4) 第5章结果与总结 (4) 5.1 运行结果截图 (4) 5.2总结 (4) 参考文献: (4)

第1章引言 通过一学期的课程学习,对和Visual2010 C++编程环境有了一定程度的了解。根据课程要求,利用两周时间对所学知识加以巩固学习,用c++编译小游戏,初步了解程序设计与软件实现的思想。 该设计通过对“五子棋人人对战”游戏的编写对所学知识复习巩固。程序设计过程中,先对问题进行了全面分析,将“五子棋人人对战”划分成几个子问题后,逐步细化,最终归结成一个个函数的实现。 第2章任务概述 2.1问题概述 2.1.1问题重述 设计一个五子棋,能实现人人对战。(棋盘大小为13X13) 2.1.2设计目的 独立地利用所学的C++程序设计和Visaul C++6.0编程环境编写程序。 2.2需求分析 2.2.1基本要求 明确五子棋游戏的游戏规则,编写程序实现其功能。 2.2.2游戏功能介绍 为了更好地实现游戏,首先必须明确“五子棋”的游戏规则。大体的规则可描述如下:(1)进入主界面后,选择开始游戏。 (2)开始游戏后,一方开始下棋。 (3)再由另一方下棋 (4)判断输赢。 (5)玩家选择结束游戏时,结束游戏。

五子棋设计报告

C语言程序设计 题目五子棋(双人对战)指导教师 学生姓名 学号 专业电子信息工程 教学单位物理系(盖章)

目录 1课程设计的目的及要求 (1) 1.1课程设计目的与基本要求 (1) 1.2系统运行环境及功能简介 (1) 2程序流程图 (1) 3运行的运行及说明 (2) 3.1系统的运行 (2) 3.2程序的实现 (3) 3.3程序运行 (3) 3. 系统的调试 (3) 4课程设计目的 (3) 5 程序特色 (3) 6程序存在的缺陷 (4) 7总结 (4) 附件:源程序清单 (4)

1设计要求与设计内容 1.1 课程设计目的与基本要求 ●掌握用C语言解决问题的基本方法和步骤,能够熟练地使用C语言编写 中小型应用程序。 ●熟练掌握C语言编写规则,掌握函数的应用方法和编写。 ●熟练掌握面向过程程序设计方法。 ●掌握结构化程序设计思想和方法;培养和提高学生的程序调试能力。 ●《高级语言程序设计与课程设计》是《高级语言程序设计》课程的实践环 节,其教学目的是通过一些中小规模的编程,使学生对C语言程序设计的基本规则与方法有比较全面的理解和认识,熟练掌握高级语言程序设计技术,为以后学习更高层次的程序设计和软件开发奠定坚实基础。 1.2系统运行环境及功能简介 Vc++6.0下运行,硬件基本无要求,现在的计算机系统基本都以运行该系统。 该系统是五子棋的人人对战模式,而非平常的人机对战,系统有简单的菜单界面。本程序简洁明快,采用黑白两色棋。开始显示20*20的棋盘,白棋棋先手,要能动态显示下棋顺序,而且能自动判断输赢及显示胜负信息。 2程序流程图(系统的流程图如图2-1所示)

(完整word版)数据结构课程设计-五子棋

姓名:刘旭 学院:计算机与通信学院班级:通信工程101班指导老师:文志诚

目录 一、需求分析 (3) 1.1 开发背景 (3) 2.2 功能简介 (3) 二、系统设计 (4) 2.1 函数一览 (4) 2.2 “封面”的设计 (4) 2.3 二维数组与控制台 (5) 2.4 键盘操作 (6) 2.5判定 (7) 2.6 悔棋的实现 (8) 三、调试运行 (9) 3.1 进入界面 (9) 3.2 棋盘的初始状态 (10) 3.3 激战中 (10) 3.4 游戏结束 (11) 四、解决问题的关键 (11) 五、课设总结 (11) 六、附录 (12) 6.1 画图代码.................................................................................................. 错误!未定义书签。 6.2 初始化...................................................................................................... 错误!未定义书签。 6.3 Play函数 .................................................................................................. 错误!未定义书签。

一、需求分析 1.1开发背景 学习了数据结构该门课程,对于枯燥无味的理论知识,我们是否能够通过所学的知识在课程设计中做出有趣味东西,然后让我们对于数据结构更加的感兴趣呢?于是我和我的室友陈明建开始酝酿着写些什么东西。上个学期就已经写了通讯录那之类的链式结构,这次我们决心有所改变,我们学习了栈、队列、树、图,字典树有人选了,我们就来写一个基于图的小程序,五子棋,对,图的简单应用,于是我们开始着手来写这个小小的程序,祝我们好运! 2.2 功能简介 既然是五子棋,我们要做的是时时刻刻的将整个图(以下称为棋局)的状态呈现出来,那么界面就是必不可少的。MFC不会?没关系,我们就用基于控制台的字符输出来构建这个棋局吧,当然这只是第一步,详细如下: ○1拥有一个良好的进入界面,以及必要的选项; ○2拥有一个二维的数组来记录和更新实时的状态,并且能够有一种方法在DOS界面下绘制出整个棋局的实时状态(包括棋盘和棋子); ○3能够通过键盘上的按键完成所选位置的移动和选定操作; ○4能够在每一次的走棋后判定是否游戏结束(棋盘走满或者是一方胜出); ○5能够完成悔棋的功能,并保证这之间的棋局绘图能够与二维数组数据同步,做到真正意义上的悔棋。

c课程设计报告五子棋

C++面向对象课程设计报告 院(系): 专业: 学生姓名:__ 班级:___学号: 题目:五子连珠棋_________ 起迄日期:2010-12-20_________设计地点: 指导教师: 完成日期: 2010 年 12 月31 日

课程设计报告内容 一、需求分析 1.选做此课题目的 五子棋游戏是一历史悠久,对抗性强,技巧性高的棋类游戏。而且我对五子棋有着独特的爱好,希望自己也可以编写出一款可以实现人机对战的五子棋游戏。把自己的思想付给电脑,让自己有些成就感,给自己继续努力的动力。借此次课程设计的机会,把想法变成现实。而且五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。所以此次c++课程设计选择五子棋这个题目。 2.程序所实现的功能 通过给电脑赋予人工智能,利用电脑运算速度快的特点,结合五子棋的游戏规则,给电脑设定固定的扫描方式,设定权值,使电脑能够选择最合适的落子点,然后调用加载已做好的棋盘棋子图像,最终实现简单的人机对弈。 3.该游戏为普通玩家使用,只要连成五子即获胜,没有禁手、RIF(国际连珠连盟)正式规则、“Yamaguchi”、”Tarannikov”、“Taraguchi”等规则。 二、设计内容 1.根据所选题目,给出模块图 2.画出主程序及其主要模块的流程图

五子棋游戏__课程设计报告(含源代码可以运行)

《软件基础》大作业 项目名称:五子棋游戏 学号:201046820510 201046820605 姓名:校建林 朱颖 完成时间:2011年11月28日指导教师:鲁可

目录 一需求分析 (1) 1.1开发背景 (1) 1.2项目目标五子棋与游戏开发成员和具体日期完成任务以及任务的具体分配. . . . . . . . . . . . . . . . . . . . 1 1.3运行环境...初始化. (3) 1.4项目任务书主循环控制模块 (3) 1.5玩家下子 (3) 1.6盘面分析填写棋型表 (3) 1.7对方下子 (4) 1.8胜负判断 (4) 二技术线路 (4) 2.1采用的软件及开发平台是什么 2.2项目的总体方案—包括模块及模块间的联系、信息流、数据流等 2.3项目的详细设计—包括模块的功能、数据结构及算法等 2.1技术线路模块图 (4) 2.2技术线路说明 (5) 三工程进度 第三章系统设计 (5) 3.1流程图 (6) 3.2流程图说明 (6) 四程序测试分析 (7) 4.1阶段性测试 4.2总体测试 五个人总结 (9) 附录源代码 (10)

五子棋游戏 第一章需求分析 1.1开发背景 软件需求分析是软件开发周期的第一个阶段,也是关系到软件开发成败的关键一步。对于任何一个软件而言,需求分析工作都是至关重要的一步。只有通过软件需求分析,才能把软件的功能和性能由总体的概念性描述转化为具体的规格说明,进而建立软件开发的基础。实践表明,需求分析工作进行得好坏,在很大程度上决定了软件开发的成败。 软件需求分析的任务是:让用户和开发者共同明确将要开发的是一个什么样的软件。具体而言,就是通过对问题及其环境的理解、分析和综合,建立逻辑模型,完成新软件的逻辑方案设计。 基于本游戏,首先得为整个棋盘建立一张表格用以记录棋子信息,我们使用一个15*15的二维数组Table[15][15](15*15是五子棋棋盘的大小),数组的每一个元素对应棋盘上的一个交叉点,用‘0’表示空位、‘1’代表己方的子、‘2’代表对方的子;这张表也是今后分析的基础。在此之后还要为两个玩家双方各建立一张棋型表Computer[15][15][4]和Player[15][15][4],用来存放棋型数据。 1.2 项目目标五子棋与游戏开发具体任务完成日期以及任务的具体分配 五子棋游戏开发成员:校建林、朱颖。 五子棋游戏开发具体的任务步骤: 1.需求分析 内容包括:总体分析、五子棋与游戏开发成员和具体任务完成日期以及任务的具体分配、初始化、主循环控制模块、玩家下子、盘面分析填写棋型表、对方下子、胜负判断。 2.技术线路 内容包括:采用的软件及开发平台是什么。 项目的总体方案—包括模块及模块间的联系、信息流、数据流等。

相关文档
最新文档