- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
迷宫游戏
/* 乌云老师的话:学习检测键盘信息之后,余文彪同学当堂就作岀了通过键盘在屏幕上下左右移动一
个星星的程序。
老师给几位同学大略说了一下迷宫游戏的实现思路, 彭搏同学下次课就把做好的迷宫游戏
拿出来了,wonderful!
思路分明,代码简练,注释清晰,只得大家学习。
同时他还实现了一个简单推箱子游戏,可谓程序快手了。
*/
#includestdio.h #includebios.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;i10;i++) /*输出新地图(刷新地图广/
{
gotoxy(10,5+i);
for(j=0;j10;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==LEFTchMap[y-5][x-1-10]!=0)
x--;
if(iKey==RIGHTchMap[y-5][x+1-10]!=0)
x++;
if(iKey==UPPERchMap[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();
}
原创力文档


文档评论(0)