c语言迷宫游戏课程设计,迷宫游戏c语言程序课程设计.docx

迷宫游戏

/*乌云老师的话:学习检测键盘信息之后,余文彪同学当堂就作岀了通过键盘在屏幕上下左右移动一

个星星的程序。

老师给几位同学大略说了一下迷宫游戏的实现思路,彭搏同学下次课就把做好的迷宫游戏

拿出来了,wonderful!

思路分明,代码简练,注释清晰,只得大家学习。

同时他还实现了一个简单推箱子游戏,可谓程序快手了。

*/

#include"stdio.h" #include"bios.h" #define LEFT 75 #define RIGHT 77 #define UPPER 72 #define DOWN 80 #define ESC 27 union keyboard { unsigned int iKeylnfo; char chKeyBit[2];

};

int fnGetKey(void)

{

union keyboard uniKeyl; while(bioskey(1)==0); uniKey1.iKeylnfo=bioskey(0);

/*定义读取键盘码的共用体类型 */

/*定义读取键盘码的函数*/

/*定义读取键盘码的共用体变量*/

/*检测用户是否按键*/

/*读取按键信息*/

return(uniKey1.chKeyBit[0]==0?uniKey1.chKeyBit[1]:uniKey1.chKeyBit[0]);

}

/*返回ASCII码或扩充码*/

void main()

{

int iKey,x=11,y=6;/*x,y为人物移动后坐标*/

int chMap[10][10]={/*用二维数组定义地图 */

{0,0,0,0,0,0,0,0,0,0},/*0 表示墙 1 表示路 2表示出口 */

{0,1,0,0,1,1,1,1,1,0},

{0,1,1,0,1,0,1,0,1,0},

{0,0,1,0,1,0,1,0,1,0},

{0,0,1,1,1,0,0,0,1,0},

{0,0,0,0,0,0,1,1,1,0},

{0,1,0,0,1,1,1,0,0,0},

{0,1,1,1,1,0,0,0,2,0},

{0,1,0,0,1,1,1,1,1,0},

{0,0,0,0,0,0,0,0,0,0},

};

int i,j;/*反复进行求移动的坐标运算 */

while(1)

{

for(i=0;i<10;i++)/*输出新地图(刷新地图广/

{

gotoxy(10,5+i);

for(j=0;j<10;j++)

{

if(chMap[i][j]==0)

prin tf("#");

if(chMap[i][j]==1)

printf("");

if(chMap[i][j]==2)

prin tf("E");

}

}

if(chMap[y-5][x-10]==2)/*如果如果人的坐标和目标坐标重合输出"YOU WIN!"退出*/

clrscr();

printf("You Win!");

break;

}/*在起始(或移动后)的坐标输出人*/

gotoxy(x,y);

printf("*\b");

(0)重合则iKey=fnGetKey();/*按读取的按键信息改变坐标如果改变的坐标和墙

(0)重合则

不改变*/

if(iKey==LEFT&&chMap[y-5][x-1-10]!=0)

x--;

if(iKey==RIGHT&&chMap[y-5][x+1-10]!=0)

x++;

if(iKey==UPPER&&chMap[y-1-5][x-10]!=0)

y--;

if(iKey==DOWN &&chMap[y+1-5][x-10]!=0)

y++;

if(iKey==ESC)/*输入 ESC 退出并输出"YOU LOST"*/

{

clrscr();

printf("You Lost");

break;

}

clrscr();

}

getch();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值