1 / 13
文档名称:

2013马踏棋盘.doc

格式:doc   大小:142KB   页数:13页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

2013马踏棋盘.doc

上传人:xunlai783 2019/5/17 文件大小:142 KB

下载得到文件列表

2013马踏棋盘.doc

文档介绍

文档介绍:一、设计要求(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读;(2)至少采用文本菜单界面(如果能采用图形菜单界面更好);(3)学生可自动增加新功能模块(视情况可另外加分);(4)写出课程设计报告,具体要求见相关说明文档。问题描述:将马随机放在国际象棋的8*8棋盘的某个方格中,马按走棋规则进行移动。要求每个方格上只进入一次,走遍棋盘上全部64个方格。编制非递归程序,求出马的行走路线,并按求出的行走路线,将数字1,2,…,64依次填入这个8*8的方阵,输出之。请用C/C++编写一系统,模拟运动会分数统计过程,软件应包括如下几个方面:2、设计要求(1)程序的输入:设计程序按要求输入马的初始位置。(2)程序的输出:程序的设计完成后应给出马从初始位置走遍棋盘的过程,并按照求出的行走路线的顺序,将1,2,3,4,…64依次填入8*8棋盘方阵,并输出之。3、数据结构与实现提示每次在多个可走位置中选择一个进行试探,其余未曾试探过的可走位置必须用适当结构妥善管理,以备试探失败时的“回溯”(悔棋)使用。二、概要设计1、主界面设计 课程设计报告。2、系统功能设计图1系统功能结构图三、(1)判断空栈boolempty_stack(sqstack&s)//判断栈是否为空{if(==) return0; else return1;}(2)入栈和出栈 voidpush(sqstack&s,huaqipan&q)//插入元素为新的栈顶元素{*=q;++;}voidpop(sqstack&s,huaqipan&q)//删除栈顶元素,q返回其值{--;q=*;}(3)计算可走的路线{intcount(intr,intc)//count函数用以计算并返回下一步某方向可行路线的总数{ intdi_n=0,k,e,f; for(k=0;k<8;k++) { e=r+dir[k][0];//改变横坐标 f=c+dir[k][1];//改变纵坐标 if(e>-1&&e<n&&f>-1&&f<n&&!sign[e][f]) {di_n++;} } returndi_n;//返回下一步某方向可行路线的总数}四、详细设计1、数据类型定义(1)定义一个结构体,用来画一个8*8的棋盘格typedefstructhuaqipan{intnum;//记录该格是路径中的第几步intheng;//该格的横坐标intzong;//该格的纵坐标intdi[8];//记录该格的下一步(8个方向)是否走过,走过为1否则为0}huaqipan;huaqipanq,p;(2)定义一个栈的结构体其实现代码如下:typedefstructsqstack{//定义栈huaqipan*base;//栈底指针huaqipan*top;//栈顶指针intstacksize;//栈容量}sqstack;sqstacks,sp;()是主函数。列出主菜单,利用switch语句调用以上函数实现各个菜单的功能。其实现代码如下:intmain(){ system("color9E"); intchoice,s; cout<<"请选择,1开始,2退出"<<endl; cin>>choice; switch(choice) { case1: do { chess(); cout<<"请选择1---->继续输入,0---->跳出"<<endl; cin>>s; }while(s==1); case2:break; } return0;}五、测试分析 运行程序,进入系统主菜单。用户可以选择开始或退出系统,界面如图所示。(输入1,1的结果)用户可以按1再次输入,也可按0推出系统。(4)退出系统在主菜单下输入0可以退出系统,并有中文提示,如图所示。退出系统六、,横坐标和纵坐标(依照提示,确保输入的信息在规定的范围之内)。:#include<>#include<>#include<>#include<cstdlib>intqipan[8][8];//棋盘方阵,存放各点走的次序intr,c,i,j,total,n=8,max=64;//r,c分别表示横纵坐标;total进入路径栈的元素个数;n是棋盘行列数;max是总格数intdir[8][2]={{-2,1},{-1,2},{1,2},{2,1},{2,-1},{1,-2},{-1,-2},{-2,-1}};//定义8个方向的操作intsign[8][8];//标记该格是否已走过,是为1,否为0typedefstructhuaqipan{in