五子棋课程设计论文(附代码)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1、需求分析
1.1、课题背景和意义
五子棋一种两人对弈的纯策略型棋类游戏,由古代的传统黑白棋演化而来,相传起源于四千多年前的尧帝时期,比围棋的历史还要悠久,可能早在“尧造围棋”之前,民间就已有五子棋游戏。迅速发展于日本,流行于欧美。容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能提高智力,而且富含哲理,有助于修身养性。有关早期五子棋的文史资料与围棋有相似之处,因为古代五子棋的棋具与围棋是完全相同的。在上古的神话传说中有“女娲造人,伏羲做棋”一说,《增山海经》中记载:“休舆之山有石焉,名曰帝台之棋,五色而文状鹑卵。”李善注引三国魏邯郸淳《艺经》中曰:“棋局,纵横各十七道,合二百八十九道,白黑棋子,各一百五十枚”。这段虽没明讲是何种棋类,但至少知道远古就以漂亮的石头为棋子。因而规则简单的五子棋也可能出自当时,并是用石子作棋子。亦有传说,五子棋最初流行于少数民族地区,以后渐渐演变成围棋并在炎黄子孙后代中遍及开来。
五子棋是一种益智的游戏,他可以提高人们的反应能力。尤其是在开发人们的智力方面,很受人们的欢迎。
《数据结构课程设计》是一门实践性的计算机课程,为了学好这门课程,必须在掌握理论知识的同时,加强上机实践。通过这次课程设计,要求掌握较大程序的设计方法,相应数据结构的选择应用、算法的设计及其实现和性能分析等方面中加深对课程基本内容的理解。同时,在设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。
1.2、课题要求
1.2.1、设计一个20*20大小的棋盘进行和电脑对战游戏
1.2.2、实现电脑智能和玩家对战,能实现智能攻防,迅速对局势作出判断并下
棋.
1.3、软件格式规定
1
1.3.1、输入形式:玩家输入棋子要下位置的纵横坐标,棋子下到相应的位置1.3.2、程序所能达到的的功能:实现20行20列的棋盘,电脑能对局势作出判
断并正确下棋对玩家做出攻防
1.3.3、程序能更新到当前局势
1.4、设计目标
1.4.1、软件名称:五子棋游戏
1.4.2、制作平台及调试工具:Win32;Microsoft visual studio 2010
1.4.3、运行环境:系统:dos/winxp/win7
1.4.4、性能特点:软件体积小,高效快捷,实用性好,兼容性好。
2、设计概要:
2.1、问题解决思路
2.1.1、初始化模块:即屏幕初始化,显示20*20格的棋盘。系统默认玩家先下,
电脑后下
2.1.2、棋盘模块:显示棋盘和棋子,棋盘设计为20*20格的二维平面图,背景
颜色为蓝色,棋子为黑白色。
2.1.3、判断模块:判断上下左右左上右上左下右下是否有五个颜色相同的颜色,
如果有就游戏结束,显示胜利方,否则,游戏双方继续落子。而当棋盘已满,即数组空间已满的时候,结束程序,显示和局。
2.2、相关函数介绍说明
const char outstr[11][4]={} //定义组成棋盘的字符
void jushi() //判断局势的函数
void computer(int a[20][20]) // 电脑落子的函数
memset(cm,0,sizeof(cm)); //清除旧棋盘的函数
int a[20][20]={} //组成棋盘的函数
int judge(intx,inty,int sum){} //判断胜负的函数system ("color 2f");
//控制棋盘颜色的函数
system ("mode con cols=50 lines=25")
2
2.3、主程序流程及函数调用说明
图1
3
2.4、各函数调用情况
2.4.1、utstr[]数组,以调用inta[][]数组,组成棋盘界面及相关的界面操作方法。
2.4.2、memset()函数,以调用xiazi数组函数,对下棋位置做出判断,看此位置
是否合法,更新棋盘。
2.4.3、mputer()函数,调用a数组,电脑根据棋手下的棋做出判断并做出回
应。
2.4.4、一步棋都要更新棋盘,所以都要调用到outstr[]数组,调inta[]然后调用
computer()函数,电脑做出下棋判断。
3、详细设计
3.1、棋盘的实现,用for循环实现列号的输出,过定义outstr[][]数组,调用inta
数组,实现棋盘的显示。通过循环调用int a[][]数组,输出相应的字符,实现棋盘。while()循环,输入所要下子的坐标并作出相应判断。
3.2、智能对玩家所下的棋子做出判断,并智能地做出反应,实现攻防,与玩家
对战。
4
3.3、循环调用outstr[][]数组和int a数组,更新棋盘,显示最新局势。
3.4、int judge(intx,inty,int sum) 判断胜负的函数。运用for结构和if结构实现判
断,或横、或竖、或斜,有相同的五个颜色的棋子就胜利。
3.5、有一方胜利或棋盘满子,游戏结束,显示相关和局或胜利信息。
4、调试分析
5
表1、调试过程情况表
5、用户使用说明
5.1、运行Debug文件夹里的五子棋应用程序,显示棋盘界面。
5.2、按照提示输入棋盘的纵横坐标,纵横坐标间要有空格,然后按回车键。5.3、五颗棋连成一线,横着,竖着,斜着都可以,谁先下到五颗棋,谁就胜利。
5.4、棋盘满棋子,算和局。
6、测试结果
6.1.1、打开游戏界面,按提示输入横纵坐标:
图2
6