围棋程序设计综合报告
作者:赵翔
学号:201103010002
专业:机械工程及其自动化
一、围棋软件设计思想
首先,我将软件的功能细化,细化到单个功能,直到可以通过一个函数较轻松地实现为止。
然后,从函数功能构想函数结构,通过函数调用将不同功能组合起来,从而完成软件要求的功能。
二、程序设计方案
下面我由main的调用顺序,来阐述各个函数的详细信息。
Link:用于构造链表,输入值为上一个结点,返回新建的结点。
输入为空,则返回链表头;
Begin:将链表头赋值,即构建棋盘;
Print:打印输入的棋局,可在链表记录的位置输出两个小翅,利用了转义字符;
Cheese:其实是chess,就是下棋,输入空的棋局,步数统计、黑白子统计地址,和用户输入的落子位置,可将棋盘下好,并将参数传给make_scene,返回后,将统计值完成;
Make_scene:完成棋局,判断下子位置的上下左右是否有对方的子,若有,进入search,返回后,将去掉的子数减去,将删除序列中子删去;
Search:对输入的子上下左右进行搜索,若均非空,计入删除序列,对上下左右与本子相同的子,判断是否已搜过,若否,递归输入本函数,返回总子数,并通过地址返回删除序列;
Save:用fwrite将结构体中保存的棋局和两个整形数写入文件;
Lord:其实是load,读取之前保存的文件到新建的链表,之前先将目前的链表全部释放,然后将独到的链表至于最后一步,顺便统计步数统计、黑白子统计,以便用户继续下棋,或者复盘也可以;
Help:对软件的部分行为进行解释,帮助用户更好的使用;
Rescene:从头查看每一步棋局,利用结构体双向指针操作,可以很方便的实现该功能;
除了以上函数,菜单中还有悔棋、结束、退出操作,由于过于简单,没有专门构造函数,退出直接引用系统函数,结束加到了循环条件里,对结果的判断直接用了下棋中对子数的统计,悔棋操作就是将链表回到之前一步,释放现在的空间。
三、结果分析与体会
通过做函数,我充分认识到程序规范性的重要性。
编程时一定要严格遵守教材背后的规范要求,一切要小心啊!。