五子棋c课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录第一章:课程设计目的和要求 (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)由两个玩家分别下棋,当某一玩家五子相连,则赢。

(2)界面要求:初始状态——显示棋盘,并显示两个玩家的操作键及初始玩家名称;

游戏进行状态——动态显示棋盘,不同玩家的棋子用不同符号显示,屏幕

上显示当前玩家号,结束时显示赢家名称。

3.2五子棋对弈系统流程图

3.3软件中实现各项功能的函数与程序代码

主要函数、结构体和链表

Inta;//纪录坐标位置

Intb;//纪录坐标位置

CharachBoard[i][j],//用于在【a】【b】处落子chSort;;//棋子的类别

IntnWin////赢棋的次数

类的使用:

classCGobang

{private:

charchSort;//棋子的类别

intnWin;//赢棋的次数

intnLose;//输棋的次数

staticintnDraw;//平局次数

public:

staticcharachBoard[19][19];//棋盘

staticintnSize;//棋盘的尺寸nSize*nSize CGobang(charchsort)//构造函数,决定一方棋子的类别{

chSort=chsort;

nWin=nLose=nDraw=0;

}

friendvoidhuiqi();//悔棋

staticvoidsavefile();//将棋盘保存至文件

staticvoidreadBoard();//从文件中读入棋盘

voidcontinute();//接着上次的游戏玩

voidPlayTurn(void);//走一步棋

intJudge();//判断是否连成五子,是则返回1

voidWin(void);//赢棋

voidLose(void);//输棋

staticvoidDraw(void);//平局

voidPrintInfo(void);//打印总体情况

staticvoidPrintBoard(void);//输出棋盘

staticintGetFull(void);//判断棋盘是否一满

staticvoidInitialBoard(void);//初始化棋盘

};}

本次程序设计主要设计了五个模块

1.绘制棋盘模块

当游戏初始化时,和每当落子消息触发时,都需要对棋盘进行重绘。这里用特殊符号“o”“@”分别来描绘白子、黑子。这个函数主要完成了以下工作:

●装载棋盘二位数组并进行绘制。

●根据棋盘数据绘制棋子。

●绘制最后落子指示规矩。

2.键盘操作控制模块

此模块主要用于处理与用户的交互过程。即完成落子判断过程。

此模块主要完成以下工作:

●判断是否在棋盘内按落子键,和移动是否超出棋盘范围。

●判断落子点是否已有棋子。

3.判断胜负模块

这是游戏中一个极其重要的算法,用来判断当前棋盘的形势是哪一方获胜。五子棋的胜负,在于判断棋盘上是否有一个点,从这个点开始的右、下、右下、左下四个方向是否有连续的五个同色棋子出现,如图:

图3-5判断胜负方向

这个算法是本系统里的nWin成员函数。需要它接受一个棋子颜色的参数,然后返回一个布尔值,这个值指示是否胜利。

1).横向判断流程图“——”

●将achBoard[N][N]中每一个落子位都置为无子状态(0)。

●默认的先手顺序是黑子先手,置player=1。

5.游戏结束模块

这一模块主要用于释放内存,用输出流语句输出结束信息,并控制循环退出程序。

相关文档
最新文档