资源简介
本程序利用c++语言编写了八数码 的 小游戏 ,是人工智能 课必做的一个经典程序,希望能对大家有用
代码片段和文件信息
#include
#include
int nm;
typedef struct Node
{
char matrix[10];/*存储矩阵*/
char operate;/*存储不可以进行的操作,L代表不能左移R代表不能右移U代表不能上移D代表不能下移*/
char extend;/*是否可以扩展,Y代表可以,N代表不可以*/
int father;/*指向产生自身的父结点*/
}Node;
char start[10]={“2831 4765“};
char end[10]={“1238 4765“};
Node base[4000];
int result[100];
int match()/*判断是否为目标*/
{
int i;
for(i=0;i<9;i++)
{
if(base[n-1].matrix[i]!=end[i])
{
return 0;
}
}
return 1;
}
void show()/*显示矩阵的内容*/
{
int i=1;
while(m>=0)
{
int mm=result[m];
printf(“\n\n\n 郑明慧 SY0803141 \t\tStep %d“i);
printf(“\n\n\n\n\n\t\t\t%c\t%c\t%c\n“base[mm].matrix[0]base[mm].matrix[1]base[mm].matrix[2]);
printf(“\n\n\t\t\t%c\t%c\t%c\n“base[mm].matrix[3]base[mm].matrix[4]base[mm].matrix[5]);
printf(“\n\n\t\t\t%c\t%c\t%c\n“base[mm].matrix[6]base[mm].matrix[7]base[mm].matrix[8]);
m--;
i++;
}283104765;
}
void leave()/*推理成功后退出程序之前要执行的函数,主要作用是输出结果*/
{
n--;
while(base[n].father!=-1)
{
result[m]=n;
m++;
n=base[n].father;
}
result[m]=0;
result[m+1]=‘\0‘;
show();
printf(“\n\n\n\nn\n\t\t\t\tThe End\n\n\n\n\n\n\n\n\n\n“);
getch();
}
int left(int x)/*把下标为X的数组中的矩阵的空格左移*/
{
int ij;
char ch;
for(i=0;i<9;i++)
{
if(base[x].matrix[i]==‘ ‘)
break;
}
if(i==0||i==3||i==6||i==9)
{
return 0;
}
for(j=0;j<9;j++)
{
base[n].matrix[j]=base[x].matrix[j];
}
ch=base[n].matrix[i-1];
base[n].matrix[i-1]=base[n].matrix[i];
base[n].matrix[i]=ch;
base[n].operate=‘R‘;
base[n].extend=‘Y‘;
base[n].father=x;
base[x].extend=‘N‘;
n++;
if(match())
leave();
return 1;
}
int right(int x)/*把下标为X的数组中的矩阵的空格右移*/
{
int ij;
char ch;
for(i=0;i<9;i++)
{
if(base[x].matrix[i]==‘ ‘)
break;
}
if(i==2||i==5||i==8||i==9)
{
return 0;
}
for(j=0;j<9;j++)
{
base[n].matrix[j]=base[x].matrix[j];
}
ch=base[n].matrix[i+1];
base[n].matrix[i+1]=base[n].matrix[i];
base[n].matrix[i]=ch;
base[n].operate=‘L‘;
base[n].extend=‘Y‘;
base[n].father=x;
base[x].extend=‘N‘;
n++;
if(match())
leave();
return 1;
}
int up(int x)/*把下标为X的数组中的矩阵的空格上移*/
{
int ij;
char ch;
for(i=0;i<9;i++)
{
if(base[x].matrix[i]==‘ ‘)
break;
}
if(i==0||i==1||i==2||i==9)
{
return 0;
}
for(j=0;j<9;j++)
{
base[n].matrix[j]=base[x].matrix[j];
}
ch=base[n].matrix[i-3];
base[n].matrix[i-3]=base[n].matrix[i];
base[n].matrix[i]=ch;
base[n].operate=‘D‘;
base[n].extend=‘Y‘;
base[n].father=x;
base[x].extend=‘N‘;
n++;
if(match())
leave();
return 1;
}
int down(int x)/*把下标为X的数组中的矩阵的空格下移*/
{
int ij;
char ch;
for(i=0;i<9;i++)
{
if(base[x].matrix[i]==‘ ‘)
break;
}
if(i==6||i==7||i==8||i==9)
{
return 0;
}
for(j=0;j<9;j++)
{
base[n].matrix[j]=base[x].matrix[j];
}
ch=base[n].matrix[i+3];
base[n].matrix[i+3]=base[n].matrix[i];
base[n].matrix[i]=ch;
ba
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4304 2008-12-20 12:35 八数码程序\八数码难题程序\eightnumber.dsp
文件 539 2008-12-20 12:13 八数码程序\八数码难题程序\eightnumber.dsw
文件 50176 2009-03-25 15:54 八数码程序\八数码难题程序\eightnumber.ncb
文件 908 2008-12-21 10:42 八数码程序\八数码难题程序\eightnumber.plg
文件 4350 2009-01-07 22:23 八数码程序\八数码难题程序\main.cpp
文件 242 2009-03-25 15:53 八数码程序\八数码难题程序\main.plg
文件 196712 2008-12-21 10:42 八数码程序\八数码难题程序\Debug\eightnumber.exe
文件 196096 2008-12-21 10:42 八数码程序\八数码难题程序\Debug\eightnumber.ilk
文件 377856 2008-12-21 10:42 八数码程序\八数码难题程序\Debug\eightnumber.pdb
文件 196710 2009-01-09 09:29 八数码程序\八数码难题程序\Debug\main.exe
文件 198028 2009-01-09 09:29 八数码程序\八数码难题程序\Debug\main.ilk
文件 13081 2009-01-09 09:29 八数码程序\八数码难题程序\Debug\main.obj
文件 213700 2009-01-09 09:25 八数码程序\八数码难题程序\Debug\main.pch
文件 467968 2009-01-09 09:25 八数码程序\八数码难题程序\Debug\main.pdb
文件 41984 2009-03-25 15:53 八数码程序\八数码难题程序\Debug\vc60.idb
文件 53248 2009-01-09 09:25 八数码程序\八数码难题程序\Debug\vc60.pdb
文件 196655 2008-12-20 13:24 八数码程序\八数码难题程序\Debug\ZHINENG2.exe
文件 219172 2008-12-20 13:24 八数码程序\八数码难题程序\Debug\ZHINENG2.ilk
文件 213700 2008-12-20 12:50 八数码程序\八数码难题程序\Debug\ZHINENG2.pch
文件 467968 2008-12-20 13:24 八数码程序\八数码难题程序\Debug\ZHINENG2.pdb
文件 41984 2009-03-25 15:52 八数码程序\八数码难题程序\main.ncb
文件 43520 2009-03-25 15:52 八数码程序\八数码难题程序\eightnumber.opt
文件 3377 2009-03-25 15:52 八数码程序\八数码难题程序\main.dsp
文件 53760 2009-03-25 15:54 八数码程序\八数码难题程序\main.opt
文件 726 2009-03-25 15:54 八数码程序\八数码难题程序\main.dsw
目录 0 2009-01-09 09:36 八数码程序\八数码难题程序\Debug
目录 0 2009-01-09 09:36 八数码程序\八数码难题程序
目录 0 2009-01-09 09:36 八数码程序
----------- --------- ---------- ----- ----
3256764 28
............此处省略1个文件信息
- 上一篇:bank.cpp
- 下一篇:书店管理系统 C++
相关资源
- 启发式搜索算法解决八数码问题(C语
- C语言解八数码问题
- 人工智能 A*算法 八数码问题 C++ 报告
- 人工智能 八数码问题 A*算法 C语言
- 从广度优先搜索深度优先搜索A*算法多
- 八数码问题C++代码
-
利用ja
vasc ript在网页实现八数码启 - 用C语言实现八数码问题的宽度优先搜
- 八数码 -深度优先算法
- A*算法解决八数码问题C++
- 八数码问题A星算法实现
- 八数码的深度优先算法c++实现
- 八数码问题A算法解决
- 启发式搜索解决八数码问题
- 八数码宽度优先搜索加注释.txt
- 人工智能八数码问题 C++
- 八数码C语言实现包含实验报告
- 八数码问题算法 游戏源码
- 基于盲目搜索的宽度优先算法的八数
- 人工智能八数码问题解答c++代码及报
- 八数码问题C语言代码
- 人工智能八数码问题求解
- 八数码C实现
- 八数码问题(C++解决方案,广度优先
评论
共有 条评论