数据结构课程设计跳棋问题

上传人:第*** 文档编号:56922869 上传时间:2018-10-17 格式:DOC 页数:18 大小:332KB
返回 下载 相关 举报
数据结构课程设计跳棋问题_第1页
第1页 / 共18页
数据结构课程设计跳棋问题_第2页
第2页 / 共18页
数据结构课程设计跳棋问题_第3页
第3页 / 共18页
数据结构课程设计跳棋问题_第4页
第4页 / 共18页
数据结构课程设计跳棋问题_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《数据结构课程设计跳棋问题》由会员分享,可在线阅读,更多相关《数据结构课程设计跳棋问题(18页珍藏版)》请在金锄头文库上搜索。

1、课程设计报告课程设计报告题目:实现人机对弈的跳棋题目:实现人机对弈的跳棋学号学号:-:- 姓名姓名:-:-一问题描述:一问题描述:编译一个玩家与电脑对弈的简单跳棋程序。 二二. .游戏规则:游戏规则:要求:1.玩家要先确定自己的棋子坐标。2.确定完坐标在确定将下的位置,但是只能下对角。3.当对角出现对方的棋子是则,可以将对方的棋子吃掉并且跳过棋子。4.棋子不能向后走。 三准备工作:三准备工作:由于考虑棋盘游戏,为此在我动手具体编制程序之前我们做了很多的前期准 备工作,比如上网查阅资料,找些图书资料,以及分析不同语言编制的类似程 序,对相关算法进行分析,比对,最终我们感觉程序类构造函数比较适合,

2、而 用 C 语言和 c+语言编写的程序比较通俗易懂,并且我们也比较熟悉用 C 和 c+ 语言编程,所以我们选择用 visual c+6.0 实现这个程序. 四四. . 分析与实现:分析与实现: 在设计这个程序之前由于我们做了很多的前期准备工作,所以我们较快就 进 入了这个程序的具体的实现阶段。主功能函数包含了整个游戏程序的函数,调 用一个欢迎界面,然后打印棋盘,人机对弈的棋盘,然后人走棋,选择棋子 (坐标) ,再选择即将落下地方的坐标,电脑走棋,如此往复,直至游戏结束 详细介绍: 首先,先画好棋盘,我们选择正方形棋盘,把棋子全部放置好,对面是电脑, 把玩家棋子是O ,电脑的棋子X ,其中空白是

3、可走的,*是不可走的,*放 置的方法可以是横列坐标之积整除 2,即 ij%2=0,用 cout 来输出,并且把 坐标画上,上面数字是列,右边数字是行,交叉部分用+表示。画好棋盘后, 接下来,考虑下棋的步骤,因为还要考虑吃棋子,所以先从走棋开始,开始玩 家先走棋,玩家或者电脑选择了棋子后,会选择下棋的地方,电脑则是随机,玩 家则是选择下的坐标,然后是考虑吃棋子,电脑是遍历棋子,选哪些能否吃棋 子,能则吃掉对方的棋子,并跳过去,玩家则是选择一个棋子,如果能吃棋子 则吃。再有,在下棋的过程中,要用到清屏,头文件,其次,是不 断的打印新的棋盘,这样才能观察玩家与电脑的对弈对应的函数成员 re_disp

4、()。 其中遇到的问题,电脑走棋时,随机的棋子和随机下的地方,从右边看是遍历 选择,吃棋子是,对角要有对方的棋子,而且对方后面没有棋子,解决方案, 数组将坐标记录下来并且赋值。五五. .判别输赢:判别输赢: 如果双方其中一方到对方阵地 3 个就算赢,或者,双方其中一方棋子少于 3 个就算输。6. 主程序主程序 #include#include #include#include #include#include #include#include intint t=1;t=1; intint n=0;/n=0;/表示真假表示真假 classclass TGameTGame public:publi

5、c: TGame();TGame(); print();/print();/打印棋盘打印棋盘 computer();/computer();/电脑走棋电脑走棋 re_disp();/re_disp();/重新打印棋盘重新打印棋盘 init_palyer();init_palyer(); game_judge();/game_judge();/判断输赢判断输赢 eat_comupter();/eat_comupter();/电脑吃棋子电脑吃棋子 eat_player(inteat_player(int i,inti,int j,intj,int x,intx,int y);/y);/玩家吃棋玩家

6、吃棋 private:private: charchar a66;a66; intint i,j;i,j; charchar swap;/swap;/交换交换 intint win,fail;/winwin,fail;/win 表示万家赢表示万家赢 failfail 表示玩家输表示玩家输 ; TGame:TGame()TGame:TGame() win=0;win=0; fail=0;fail=0; TGame:print()TGame:print() intint s=0;s=0; cout=4)if(i=4) cout=0;j-)for(j=5;j=0;j-) if(aij=X)if(ai

7、j=X) if(ai+2j-2=if(ai+2j-2= )swap=ai+2j-2; ai+2j-2=aij;ai+2j-2=aij; aij=swap;aij=swap; ai+1j-1=ai+1j-1= ; fail+;fail+; n=1;n=1; /cout=0;i-)for(i=4;i=0;i-) for(j=4;j=0;j-)for(j=4;j=0;j-) s=j;s=j;if(ai+1j-1=if(ai+1j-1= )t;t=ai+1j-1;t=ai+1j-1;ai+1j-1=aij;ai+1j-1=aij;aij=t;aij=t;break;break; elseelse if

8、(ai+1j+1=if(ai+1j+1= )t;t=ai+1j+1;t=ai+1j+1;ai+1j+1=aij;ai+1j+1=aij;aij=t;aij=t;break;break; if(s=j)break;if(s=j)break; n=0;n=0; system(“cls“);system(“cls“); coutij;cinij; coutxy;cinxy; eat_player(i,j,x,y);eat_player(i,j,x,y); if(n=0)if(n=0) if(i=x+1)swap=axy; axy=aij;axy=aij; aij=swap;aij=swap; els

9、eelse if(i=x+1)swap=axy; axy=aij;axy=aij; aij=swap;aij=swap; elseelse cout3)|(ch1=3)if(win3)|(ch1=3) cout3)|(ch2=3)if(fail3)|(ch2=3) cout#include#include #include#include intint chess2323,step=0,m=0,n=0,count=0;chess2323,step=0,m=0,n=0,count=0; /*/* chess2323chess2323用来表示棋盘;用来表示棋盘;stepstep 是步骤数;是步骤数

10、;m m 和和 n n 是棋盘的规格行和列;是棋盘的规格行和列;countcount 是运算次数;是运算次数;*/*/ intint f1(intf1(int x,intx,int y),f2(inty),f2(int x,intx,int y),f3(inty),f3(int x,intx,int y),f4(inty),f4(int x,intx,int y),f5(inty),f5(int x,intx,int y),f6(inty),f6(int x,intx,int y),f7(inty),f7(int x,intx,int y),f8(inty),f8(int x,intx,int

11、 y);y);/*/*申明函数,这些函数就是用来表示八种走的规则申明函数,这些函数就是用来表示八种走的规则*/*/intint h(inth(int x,intx,int y)y) /*h/*h 函数用来测试(函数用来测试(x x,y y)位置处,下一步可以跳的位置)位置处,下一步可以跳的位置 数,返回值为数,返回值为 sumsum */*/ intint sum;sum; /*/*用来记录下一步可以跳的位置数用来记录下一步可以跳的位置数*/*/sum=0;sum=0; if(chessx-1y-2=0)if(chessx-1y-2=0)sum+;sum+; if(chessx-2y+1=0)

12、if(chessx-2y+1=0)sum+;sum+; if(chessx+2y+1=0)if(chessx+2y+1=0)sum+;sum+; if(chessx+2y-1=0)if(chessx+2y-1=0)sum+;sum+; if(chessx-2y-1=0)if(chessx-2y-1=0)sum+;sum+; if(chessx-1y+2=0)if(chessx-1y+2=0)sum+;sum+; if(chessx+1y-2=0)if(chessx+1y-2=0)sum+;sum+; if(chessx+1y+2=0)if(chessx+1y+2=0)sum+;sum+; re

13、turn(sum);return(sum); /*/*每找到一个位置每找到一个位置 sum+sum+,最后返回,最后返回 sumsum 值就是在值就是在(x,y)(x,y)处处 可走的位置数可走的位置数*/*/ intint test(inttest(int x,intx,int y)y) /*test/*test 函数测试第函数测试第 stepstep 步为步为(x,y)(x,y)位置的情况下,是位置的情况下,是 否可以走完棋盘,如果可以返回否可以走完棋盘,如果可以返回 1,1,否则返回否则返回 0*/0*/ intint s9,a9;s9,a9; intint min,i,j,k;min,

14、i,j,k; count+;count+; step+;step+; chessxy=step;chessxy=step; if(step=m*n)if(step=m*n)return(1);return(1); /*/*如果已经走到了如果已经走到了 mnmn 的话,表示满足结束条件,返的话,表示满足结束条件,返 回回 1 1 */*/ s1=h(x-2,y+1);/*s1=h(x-2,y+1);/*统计统计(x(x,y)y)处的下一步的八个位置的处的下一步的八个位置的 sumsum 值值*/*/ s2=h(x-1,y+2);s2=h(x-1,y+2); s3=h(x+1,y+2);s3=h(x+1,y+2); s4=h(x+2,y+1);s4=h(x+2,y+1); s5=h(x+2,y-1);s5=h(x+2,y-1); s6=h(x+1,y-2);s6=h(x+1,y-2);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号