- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
简单的猫捉老鼠游戏
/*这个程序是学数据结构后写的,里面涉及到了栈和队列的一些操作。开始本来只是要做迷宫求解的,但就看着电脑在里面运行,没有互动性也没什么意思,于是加入了由人控制的角色,让电脑控制的角色每走一步都计算一次当前两者的最短距离去追赶人控制的角色。这个程序画地图的部分是得于网上的一个迷宫程序,汉字部分也是用的别别人写好的子程序。其实这个程序还不是很完善,开始做好了一个,却不知那儿弄丢了,假期因为参加电子设计大赛,都玩单片机去了,这方面的也忘差不多了,希望有兴趣的朋友能改好了发给我.我的email:xiangyuan_122@163.com*/
/*本程序在TURBOC2.0下编译通过,**.h文件可拷在INCLUDE文件夹下.*/
#includestdio.h
#includegraphics.h
#includeconio.h
#includemprinthz.h
#define N 10
#define P 4
unsigned *str1=猫捉老鼠!;
unsigned *str2=嘿嘿!看你往哪跑!;
/*定义迷宫数组*/
int maze[N][N]={
1,1,1,1,1,1,1,1,1,1,
1,0,0,0,0,0,0,0,0,1,
1,0,1,1,0,1,1,1,0,1,
1,0,1,0,0,0,0,1,0,1,
1,0,1,0,1,1,0,1,0,1,
1,0,1,0,1,0,0,1,0,1,
1,0,1,0,0,0,0,1,0,1,
1,0,1,1,1,0,1,1,0,1,
1,0,0,0,0,0,0,0,0,1,
1,1,1,1,1,1,1,1,1,1};
int di[P]={0, 1, 0, -1 };
int dj[P]={1, 0, -1, 0 };
static int key;
static int step;
/*坐标结构*/
typedef struct
{
int xpos;
int ypos;
}postype;
/*队列结点结构*/
typedef struct queuenode
{
postype seat;/*当前坐标*/
struct queuenode*next;/*指向后继结点*/
struct queuenode*pre;/*指向前驱结点*/
}queuenode,*link;
static link front=NULL;
static link rear=NULL;
/*栈结点结构*/
typedef struct stack_node
{
postype sdata;
struct stack_node*next;
}stack_list,*plink;
static plink path=NULL;
/*入栈操作*/
push(postype e)
{
plink new_node;
new_node=(plink)malloc(sizeof(stack_list));
if(!new_node)
{
printf(error:not enough memory!\n);
exit(0);
}
new_node-sdata.xpos=e.xpos;
new_node-sdata.ypos=e.ypos;
new_node-next=path;
path=new_node;
}
/*出栈操作*/
postype pop()
{
postype e;
plink top;
top=path;
if(path!=NULL)
{
e.xpos=path-sdata.xpos;
e.ypos=path-sdata.ypos;
path=path-next;
free(top);
return e;
}
}
/*建立队列*/
void enqueue(postype value)
{
link newnode;
newnode=(link)malloc(sizeof(queuenode));
if(newnode==NULL)
{
printf(not enough memory!\n);
exit(0);
}
newnode-seat.xpos=value.xpos;
newnode-seat.ypos=value.ypos;
newnode-next=NULL;
if(rear==NULL)
{ front=newnode;
rear=newnode;
newnode-pre=NULL;}
else
{
newnode-pre=front;
rear-next=newnode;
rear=newnode;
}
}
/*删除队列结点*/
postype dequeue(void)
{
postype e;
front=fron
文档评论(0)